@cogentic-co/ds 0.4.1
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 +139 -0
- package/dist/animations/animation-ai-analysis.d.ts +7 -0
- package/dist/animations/animation-ai-analysis.js +7 -0
- package/dist/animations/animation-ai-analysis.js.map +1 -0
- package/dist/animations/animation-audit-trail.d.ts +7 -0
- package/dist/animations/animation-audit-trail.js +5 -0
- package/dist/animations/animation-audit-trail.js.map +1 -0
- package/dist/animations/animation-compliance-reports.d.ts +7 -0
- package/dist/animations/animation-compliance-reports.js +7 -0
- package/dist/animations/animation-compliance-reports.js.map +1 -0
- package/dist/animations/animation-custom-rules.d.ts +7 -0
- package/dist/animations/animation-custom-rules.js +7 -0
- package/dist/animations/animation-custom-rules.js.map +1 -0
- package/dist/animations/animation-jira-ticket.d.ts +7 -0
- package/dist/animations/animation-jira-ticket.js +6 -0
- package/dist/animations/animation-jira-ticket.js.map +1 -0
- package/dist/animations/animation-jurisdiction-detection.d.ts +7 -0
- package/dist/animations/animation-jurisdiction-detection.js +7 -0
- package/dist/animations/animation-jurisdiction-detection.js.map +1 -0
- package/dist/animations/animation-multi-protocol.d.ts +7 -0
- package/dist/animations/animation-multi-protocol.js +5 -0
- package/dist/animations/animation-multi-protocol.js.map +1 -0
- package/dist/animations/animation-pricing-preview.d.ts +16 -0
- package/dist/animations/animation-pricing-preview.js +7 -0
- package/dist/animations/animation-pricing-preview.js.map +1 -0
- package/dist/animations/animation-realtime-updates.d.ts +7 -0
- package/dist/animations/animation-realtime-updates.js +8 -0
- package/dist/animations/animation-realtime-updates.js.map +1 -0
- package/dist/animations/animation-rest-api.d.ts +7 -0
- package/dist/animations/animation-rest-api.js +5 -0
- package/dist/animations/animation-rest-api.js.map +1 -0
- package/dist/animations/animation-risk-scoring.d.ts +7 -0
- package/dist/animations/animation-risk-scoring.js +8 -0
- package/dist/animations/animation-risk-scoring.js.map +1 -0
- package/dist/animations/animation-sandbox.d.ts +7 -0
- package/dist/animations/animation-sandbox.js +5 -0
- package/dist/animations/animation-sandbox.js.map +1 -0
- package/dist/animations/animation-scheduled-reports.d.ts +7 -0
- package/dist/animations/animation-scheduled-reports.js +7 -0
- package/dist/animations/animation-scheduled-reports.js.map +1 -0
- package/dist/animations/animation-secure-messaging.d.ts +7 -0
- package/dist/animations/animation-secure-messaging.js +6 -0
- package/dist/animations/animation-secure-messaging.js.map +1 -0
- package/dist/animations/animation-slack-notification.d.ts +7 -0
- package/dist/animations/animation-slack-notification.js +6 -0
- package/dist/animations/animation-slack-notification.js.map +1 -0
- package/dist/animations/animation-sop-mapping.d.ts +7 -0
- package/dist/animations/animation-sop-mapping.js +5 -0
- package/dist/animations/animation-sop-mapping.js.map +1 -0
- package/dist/animations/animation-team-routing.d.ts +7 -0
- package/dist/animations/animation-team-routing.js +7 -0
- package/dist/animations/animation-team-routing.js.map +1 -0
- package/dist/animations/animation-teams-notification.d.ts +7 -0
- package/dist/animations/animation-teams-notification.js +6 -0
- package/dist/animations/animation-teams-notification.js.map +1 -0
- package/dist/animations/animation-vasp-identification.d.ts +7 -0
- package/dist/animations/animation-vasp-identification.js +7 -0
- package/dist/animations/animation-vasp-identification.js.map +1 -0
- package/dist/animations/animation-webhooks.d.ts +7 -0
- package/dist/animations/animation-webhooks.js +6 -0
- package/dist/animations/animation-webhooks.js.map +1 -0
- package/dist/blocks/auth-form.d.ts +18 -0
- package/dist/blocks/auth-form.js +7 -0
- package/dist/blocks/auth-form.js.map +1 -0
- package/dist/blocks/feature-section.d.ts +17 -0
- package/dist/blocks/feature-section.js +5 -0
- package/dist/blocks/feature-section.js.map +1 -0
- package/dist/blocks/hero-section.d.ts +19 -0
- package/dist/blocks/hero-section.js +5 -0
- package/dist/blocks/hero-section.js.map +1 -0
- package/dist/blocks/pricing-table.d.ts +24 -0
- package/dist/blocks/pricing-table.js +6 -0
- package/dist/blocks/pricing-table.js.map +1 -0
- package/dist/blocks/stat-card.d.ts +15 -0
- package/dist/blocks/stat-card.js +6 -0
- package/dist/blocks/stat-card.js.map +1 -0
- package/dist/card-Cumdyf_G.d.ts +15 -0
- package/dist/charts.d.ts +4 -0
- package/dist/charts.js +5 -0
- package/dist/charts.js.map +1 -0
- package/dist/chatbot.d.ts +280 -0
- package/dist/chatbot.js +2202 -0
- package/dist/chatbot.js.map +1 -0
- package/dist/chunk-4NEQV6H2.js +39 -0
- package/dist/chunk-4NEQV6H2.js.map +1 -0
- package/dist/chunk-4YD3YS4B.js +110 -0
- package/dist/chunk-4YD3YS4B.js.map +1 -0
- package/dist/chunk-5JLZ42JT.js +125 -0
- package/dist/chunk-5JLZ42JT.js.map +1 -0
- package/dist/chunk-5OOO6TRA.js +111 -0
- package/dist/chunk-5OOO6TRA.js.map +1 -0
- package/dist/chunk-65Z2VEKG.js +161 -0
- package/dist/chunk-65Z2VEKG.js.map +1 -0
- package/dist/chunk-6RWCZUAD.js +12 -0
- package/dist/chunk-6RWCZUAD.js.map +1 -0
- package/dist/chunk-7HRPF2N2.js +56 -0
- package/dist/chunk-7HRPF2N2.js.map +1 -0
- package/dist/chunk-BNFSXNP2.js +71 -0
- package/dist/chunk-BNFSXNP2.js.map +1 -0
- package/dist/chunk-BTFYV3TI.js +102 -0
- package/dist/chunk-BTFYV3TI.js.map +1 -0
- package/dist/chunk-BTZB4JRC.js +117 -0
- package/dist/chunk-BTZB4JRC.js.map +1 -0
- package/dist/chunk-BZSA47MS.js +121 -0
- package/dist/chunk-BZSA47MS.js.map +1 -0
- package/dist/chunk-CG5JA7FM.js +107 -0
- package/dist/chunk-CG5JA7FM.js.map +1 -0
- package/dist/chunk-EFLWU2JP.js +145 -0
- package/dist/chunk-EFLWU2JP.js.map +1 -0
- package/dist/chunk-F7REPQOA.js +93 -0
- package/dist/chunk-F7REPQOA.js.map +1 -0
- package/dist/chunk-FKPK3CB7.js +143 -0
- package/dist/chunk-FKPK3CB7.js.map +1 -0
- package/dist/chunk-GZNLQE3I.js +55 -0
- package/dist/chunk-GZNLQE3I.js.map +1 -0
- package/dist/chunk-H7VUIMEL.js +172 -0
- package/dist/chunk-H7VUIMEL.js.map +1 -0
- package/dist/chunk-HTYR73ON.js +161 -0
- package/dist/chunk-HTYR73ON.js.map +1 -0
- package/dist/chunk-I26ZXVSY.js +124 -0
- package/dist/chunk-I26ZXVSY.js.map +1 -0
- package/dist/chunk-IKATDPHG.js +92 -0
- package/dist/chunk-IKATDPHG.js.map +1 -0
- package/dist/chunk-KUOF3XRZ.js +108 -0
- package/dist/chunk-KUOF3XRZ.js.map +1 -0
- package/dist/chunk-LW6GAWZM.js +148 -0
- package/dist/chunk-LW6GAWZM.js.map +1 -0
- package/dist/chunk-N7PBUY7G.js +110 -0
- package/dist/chunk-N7PBUY7G.js.map +1 -0
- package/dist/chunk-NAPDFVBI.js +102 -0
- package/dist/chunk-NAPDFVBI.js.map +1 -0
- package/dist/chunk-RTK7R4KZ.js +66 -0
- package/dist/chunk-RTK7R4KZ.js.map +1 -0
- package/dist/chunk-RXV2XUDZ.js +31 -0
- package/dist/chunk-RXV2XUDZ.js.map +1 -0
- package/dist/chunk-RZZTDJHG.js +110 -0
- package/dist/chunk-RZZTDJHG.js.map +1 -0
- package/dist/chunk-SNOJLZP4.js +197 -0
- package/dist/chunk-SNOJLZP4.js.map +1 -0
- package/dist/chunk-TAPJEVUA.js +24 -0
- package/dist/chunk-TAPJEVUA.js.map +1 -0
- package/dist/chunk-U4EPKN7G.js +518 -0
- package/dist/chunk-U4EPKN7G.js.map +1 -0
- package/dist/chunk-VWSX75RB.js +202 -0
- package/dist/chunk-VWSX75RB.js.map +1 -0
- package/dist/chunk-XFWKI45G.js +800 -0
- package/dist/chunk-XFWKI45G.js.map +1 -0
- package/dist/chunk-XQYFQ6PU.js +77 -0
- package/dist/chunk-XQYFQ6PU.js.map +1 -0
- package/dist/index-CcPuHWa-.d.ts +118 -0
- package/dist/index.d.ts +1385 -0
- package/dist/index.js +8673 -0
- package/dist/index.js.map +1 -0
- package/dist/workflow.d.ts +165 -0
- package/dist/workflow.js +5 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +157 -0
- package/src/styles/globals.css +211 -0
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { __objRest, __spreadProps, __spreadValues, cn } from './chunk-GZNLQE3I.js';
|
|
3
|
+
import * as RechartsPrimitive from 'recharts';
|
|
4
|
+
import { AreaChart as AreaChart$1, CartesianGrid, XAxis, YAxis, Area, BarChart as BarChart$1, Bar, LineChart as LineChart$1, Line, PieChart as PieChart$1, Pie, Cell, Label, RadarChart, PolarGrid, PolarAngleAxis, Radar } from 'recharts';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var THEMES = { light: "", dark: ".dark" };
|
|
9
|
+
var ChartContext = React.createContext(null);
|
|
10
|
+
function useChart() {
|
|
11
|
+
const context = React.useContext(ChartContext);
|
|
12
|
+
if (!context) {
|
|
13
|
+
throw new Error("useChart must be used within a <ChartContainer />");
|
|
14
|
+
}
|
|
15
|
+
return context;
|
|
16
|
+
}
|
|
17
|
+
function ChartContainer(_a) {
|
|
18
|
+
var _b = _a, {
|
|
19
|
+
id,
|
|
20
|
+
className,
|
|
21
|
+
children,
|
|
22
|
+
config
|
|
23
|
+
} = _b, props = __objRest(_b, [
|
|
24
|
+
"id",
|
|
25
|
+
"className",
|
|
26
|
+
"children",
|
|
27
|
+
"config"
|
|
28
|
+
]);
|
|
29
|
+
const uniqueId = React.useId();
|
|
30
|
+
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
31
|
+
return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
|
|
32
|
+
"div",
|
|
33
|
+
__spreadProps(__spreadValues({
|
|
34
|
+
"data-slot": "chart",
|
|
35
|
+
"data-chart": chartId,
|
|
36
|
+
className: cn(
|
|
37
|
+
"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden",
|
|
38
|
+
className
|
|
39
|
+
)
|
|
40
|
+
}, props), {
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
|
|
43
|
+
/* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
|
|
44
|
+
]
|
|
45
|
+
})
|
|
46
|
+
) });
|
|
47
|
+
}
|
|
48
|
+
var ChartStyle = ({ id, config }) => {
|
|
49
|
+
const colorConfig = Object.entries(config).filter(([, config2]) => config2.theme || config2.color);
|
|
50
|
+
if (!colorConfig.length) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
"style",
|
|
55
|
+
{
|
|
56
|
+
dangerouslySetInnerHTML: {
|
|
57
|
+
__html: Object.entries(THEMES).map(
|
|
58
|
+
([theme, prefix]) => `
|
|
59
|
+
${prefix} [data-chart=${id}] {
|
|
60
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
61
|
+
var _a;
|
|
62
|
+
const color = ((_a = itemConfig.theme) == null ? void 0 : _a[theme]) || itemConfig.color;
|
|
63
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
64
|
+
}).join("\n")}
|
|
65
|
+
}
|
|
66
|
+
`
|
|
67
|
+
).join("\n")
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
};
|
|
72
|
+
var ChartTooltip = RechartsPrimitive.Tooltip;
|
|
73
|
+
function ChartTooltipContent({
|
|
74
|
+
active,
|
|
75
|
+
payload,
|
|
76
|
+
className,
|
|
77
|
+
indicator = "dot",
|
|
78
|
+
hideLabel = false,
|
|
79
|
+
hideIndicator = false,
|
|
80
|
+
label,
|
|
81
|
+
labelFormatter,
|
|
82
|
+
labelClassName,
|
|
83
|
+
formatter,
|
|
84
|
+
color,
|
|
85
|
+
nameKey,
|
|
86
|
+
labelKey
|
|
87
|
+
}) {
|
|
88
|
+
const { config } = useChart();
|
|
89
|
+
const tooltipLabel = React.useMemo(() => {
|
|
90
|
+
var _a;
|
|
91
|
+
if (hideLabel || !(payload == null ? void 0 : payload.length)) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const [item] = payload;
|
|
95
|
+
const key = `${labelKey || (item == null ? void 0 : item.dataKey) || (item == null ? void 0 : item.name) || "value"}`;
|
|
96
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
97
|
+
const value = !labelKey && typeof label === "string" ? ((_a = config[label]) == null ? void 0 : _a.label) || label : itemConfig == null ? void 0 : itemConfig.label;
|
|
98
|
+
if (labelFormatter) {
|
|
99
|
+
return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
100
|
+
}
|
|
101
|
+
if (!value) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
|
|
105
|
+
}, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
|
|
106
|
+
if (!active || !(payload == null ? void 0 : payload.length)) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
110
|
+
return /* @__PURE__ */ jsxs(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
className: cn(
|
|
114
|
+
"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
|
|
115
|
+
className
|
|
116
|
+
),
|
|
117
|
+
children: [
|
|
118
|
+
!nestLabel ? tooltipLabel : null,
|
|
119
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
120
|
+
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
121
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
122
|
+
const indicatorColor = color || item.payload.fill || item.color;
|
|
123
|
+
return /* @__PURE__ */ jsx(
|
|
124
|
+
"div",
|
|
125
|
+
{
|
|
126
|
+
className: cn(
|
|
127
|
+
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
|
|
128
|
+
indicator === "dot" && "items-center"
|
|
129
|
+
),
|
|
130
|
+
children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
131
|
+
(itemConfig == null ? void 0 : itemConfig.icon) ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
|
|
132
|
+
"div",
|
|
133
|
+
{
|
|
134
|
+
className: cn(
|
|
135
|
+
"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
|
|
136
|
+
{
|
|
137
|
+
"h-2.5 w-2.5": indicator === "dot",
|
|
138
|
+
"w-1": indicator === "line",
|
|
139
|
+
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
140
|
+
"my-0.5": nestLabel && indicator === "dashed"
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
style: {
|
|
144
|
+
"--color-bg": indicatorColor,
|
|
145
|
+
"--color-border": indicatorColor
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
/* @__PURE__ */ jsxs(
|
|
150
|
+
"div",
|
|
151
|
+
{
|
|
152
|
+
className: cn(
|
|
153
|
+
"flex flex-1 justify-between leading-none",
|
|
154
|
+
nestLabel ? "items-end" : "items-center"
|
|
155
|
+
),
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
|
|
158
|
+
nestLabel ? tooltipLabel : null,
|
|
159
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: (itemConfig == null ? void 0 : itemConfig.label) || item.name })
|
|
160
|
+
] }),
|
|
161
|
+
item.value && /* @__PURE__ */ jsx("span", { className: "font-medium font-mono text-foreground tabular-nums", children: item.value.toLocaleString() })
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
] })
|
|
166
|
+
},
|
|
167
|
+
item.dataKey
|
|
168
|
+
);
|
|
169
|
+
}) })
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
var ChartLegend = RechartsPrimitive.Legend;
|
|
175
|
+
function ChartLegendContent({
|
|
176
|
+
className,
|
|
177
|
+
hideIcon = false,
|
|
178
|
+
payload,
|
|
179
|
+
verticalAlign = "bottom",
|
|
180
|
+
nameKey
|
|
181
|
+
}) {
|
|
182
|
+
const { config } = useChart();
|
|
183
|
+
if (!(payload == null ? void 0 : payload.length)) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return /* @__PURE__ */ jsx(
|
|
187
|
+
"div",
|
|
188
|
+
{
|
|
189
|
+
className: cn(
|
|
190
|
+
"flex items-center justify-center gap-4",
|
|
191
|
+
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
192
|
+
className
|
|
193
|
+
),
|
|
194
|
+
children: payload.filter((item) => item.type !== "none").map((item) => {
|
|
195
|
+
const key = `${nameKey || item.dataKey || "value"}`;
|
|
196
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
197
|
+
return /* @__PURE__ */ jsxs(
|
|
198
|
+
"div",
|
|
199
|
+
{
|
|
200
|
+
className: cn(
|
|
201
|
+
"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
|
|
202
|
+
),
|
|
203
|
+
children: [
|
|
204
|
+
(itemConfig == null ? void 0 : itemConfig.icon) && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
|
|
205
|
+
"div",
|
|
206
|
+
{
|
|
207
|
+
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
208
|
+
style: {
|
|
209
|
+
backgroundColor: item.color
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
),
|
|
213
|
+
itemConfig == null ? void 0 : itemConfig.label
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
item.value
|
|
217
|
+
);
|
|
218
|
+
})
|
|
219
|
+
}
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
223
|
+
if (typeof payload !== "object" || payload === null) {
|
|
224
|
+
return void 0;
|
|
225
|
+
}
|
|
226
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
227
|
+
let configLabelKey = key;
|
|
228
|
+
if (key in payload && typeof payload[key] === "string") {
|
|
229
|
+
configLabelKey = payload[key];
|
|
230
|
+
} else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
|
|
231
|
+
configLabelKey = payloadPayload[key];
|
|
232
|
+
}
|
|
233
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
234
|
+
}
|
|
235
|
+
function AreaChart(_a) {
|
|
236
|
+
var _b = _a, {
|
|
237
|
+
data,
|
|
238
|
+
config,
|
|
239
|
+
xKey,
|
|
240
|
+
yKeys,
|
|
241
|
+
showGrid = true,
|
|
242
|
+
showXAxis = true,
|
|
243
|
+
showYAxis = false,
|
|
244
|
+
showLegend = false,
|
|
245
|
+
stacked = false,
|
|
246
|
+
gradient = true,
|
|
247
|
+
className
|
|
248
|
+
} = _b, props = __objRest(_b, [
|
|
249
|
+
"data",
|
|
250
|
+
"config",
|
|
251
|
+
"xKey",
|
|
252
|
+
"yKeys",
|
|
253
|
+
"showGrid",
|
|
254
|
+
"showXAxis",
|
|
255
|
+
"showYAxis",
|
|
256
|
+
"showLegend",
|
|
257
|
+
"stacked",
|
|
258
|
+
"gradient",
|
|
259
|
+
"className"
|
|
260
|
+
]);
|
|
261
|
+
return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ "data-slot": "area-chart", className }, props), { children: /* @__PURE__ */ jsx(ChartContainer, { config, children: /* @__PURE__ */ jsxs(AreaChart$1, { data, margin: { left: 12, right: 12 }, children: [
|
|
262
|
+
gradient && /* @__PURE__ */ jsx("defs", { children: yKeys.map((key) => /* @__PURE__ */ jsxs("linearGradient", { id: `fill-${key}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
263
|
+
/* @__PURE__ */ jsx("stop", { offset: "5%", stopColor: `var(--color-${key})`, stopOpacity: 0.8 }),
|
|
264
|
+
/* @__PURE__ */ jsx("stop", { offset: "95%", stopColor: `var(--color-${key})`, stopOpacity: 0.1 })
|
|
265
|
+
] }, key)) }),
|
|
266
|
+
showGrid && /* @__PURE__ */ jsx(CartesianGrid, { vertical: false }),
|
|
267
|
+
showXAxis && /* @__PURE__ */ jsx(XAxis, { dataKey: xKey, tickLine: false, axisLine: false, tickMargin: 8 }),
|
|
268
|
+
showYAxis && /* @__PURE__ */ jsx(YAxis, { tickLine: false, axisLine: false, tickMargin: 8 }),
|
|
269
|
+
/* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, {}) }),
|
|
270
|
+
showLegend && /* @__PURE__ */ jsx(ChartLegend, { content: /* @__PURE__ */ jsx(ChartLegendContent, {}) }),
|
|
271
|
+
yKeys.map((key) => /* @__PURE__ */ jsx(
|
|
272
|
+
Area,
|
|
273
|
+
{
|
|
274
|
+
dataKey: key,
|
|
275
|
+
type: "natural",
|
|
276
|
+
fill: gradient ? `url(#fill-${key})` : `var(--color-${key})`,
|
|
277
|
+
stroke: `var(--color-${key})`,
|
|
278
|
+
stackId: stacked ? "stack" : void 0
|
|
279
|
+
},
|
|
280
|
+
key
|
|
281
|
+
))
|
|
282
|
+
] }) }) }));
|
|
283
|
+
}
|
|
284
|
+
function BarChart(_a) {
|
|
285
|
+
var _b = _a, {
|
|
286
|
+
data,
|
|
287
|
+
config,
|
|
288
|
+
xKey,
|
|
289
|
+
yKeys,
|
|
290
|
+
showGrid = true,
|
|
291
|
+
showXAxis = true,
|
|
292
|
+
showYAxis = false,
|
|
293
|
+
showLegend = false,
|
|
294
|
+
stacked = false,
|
|
295
|
+
horizontal = false,
|
|
296
|
+
radius = 4,
|
|
297
|
+
className
|
|
298
|
+
} = _b, props = __objRest(_b, [
|
|
299
|
+
"data",
|
|
300
|
+
"config",
|
|
301
|
+
"xKey",
|
|
302
|
+
"yKeys",
|
|
303
|
+
"showGrid",
|
|
304
|
+
"showXAxis",
|
|
305
|
+
"showYAxis",
|
|
306
|
+
"showLegend",
|
|
307
|
+
"stacked",
|
|
308
|
+
"horizontal",
|
|
309
|
+
"radius",
|
|
310
|
+
"className"
|
|
311
|
+
]);
|
|
312
|
+
return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ "data-slot": "bar-chart", className }, props), { children: /* @__PURE__ */ jsx(ChartContainer, { config, children: /* @__PURE__ */ jsxs(
|
|
313
|
+
BarChart$1,
|
|
314
|
+
{
|
|
315
|
+
data,
|
|
316
|
+
layout: horizontal ? "vertical" : "horizontal",
|
|
317
|
+
margin: { left: 12, right: 12 },
|
|
318
|
+
children: [
|
|
319
|
+
showGrid && /* @__PURE__ */ jsx(CartesianGrid, { vertical: !horizontal, horizontal }),
|
|
320
|
+
horizontal ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
321
|
+
/* @__PURE__ */ jsx(
|
|
322
|
+
YAxis,
|
|
323
|
+
{
|
|
324
|
+
dataKey: xKey,
|
|
325
|
+
type: "category",
|
|
326
|
+
tickLine: false,
|
|
327
|
+
axisLine: false,
|
|
328
|
+
tickMargin: 8
|
|
329
|
+
}
|
|
330
|
+
),
|
|
331
|
+
showYAxis && /* @__PURE__ */ jsx(XAxis, { type: "number", tickLine: false, axisLine: false })
|
|
332
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
333
|
+
showXAxis && /* @__PURE__ */ jsx(XAxis, { dataKey: xKey, tickLine: false, axisLine: false, tickMargin: 8 }),
|
|
334
|
+
showYAxis && /* @__PURE__ */ jsx(YAxis, { tickLine: false, axisLine: false, tickMargin: 8 })
|
|
335
|
+
] }),
|
|
336
|
+
/* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, {}) }),
|
|
337
|
+
showLegend && /* @__PURE__ */ jsx(ChartLegend, { content: /* @__PURE__ */ jsx(ChartLegendContent, {}) }),
|
|
338
|
+
yKeys.map((key) => /* @__PURE__ */ jsx(
|
|
339
|
+
Bar,
|
|
340
|
+
{
|
|
341
|
+
dataKey: key,
|
|
342
|
+
fill: `var(--color-${key})`,
|
|
343
|
+
radius,
|
|
344
|
+
stackId: stacked ? "stack" : void 0
|
|
345
|
+
},
|
|
346
|
+
key
|
|
347
|
+
))
|
|
348
|
+
]
|
|
349
|
+
}
|
|
350
|
+
) }) }));
|
|
351
|
+
}
|
|
352
|
+
function LineChart(_a) {
|
|
353
|
+
var _b = _a, {
|
|
354
|
+
data,
|
|
355
|
+
config,
|
|
356
|
+
xKey,
|
|
357
|
+
yKeys,
|
|
358
|
+
showGrid = true,
|
|
359
|
+
showXAxis = true,
|
|
360
|
+
showYAxis = false,
|
|
361
|
+
showLegend = false,
|
|
362
|
+
showDots = true,
|
|
363
|
+
curveType = "natural",
|
|
364
|
+
className
|
|
365
|
+
} = _b, props = __objRest(_b, [
|
|
366
|
+
"data",
|
|
367
|
+
"config",
|
|
368
|
+
"xKey",
|
|
369
|
+
"yKeys",
|
|
370
|
+
"showGrid",
|
|
371
|
+
"showXAxis",
|
|
372
|
+
"showYAxis",
|
|
373
|
+
"showLegend",
|
|
374
|
+
"showDots",
|
|
375
|
+
"curveType",
|
|
376
|
+
"className"
|
|
377
|
+
]);
|
|
378
|
+
return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ "data-slot": "line-chart", className }, props), { children: /* @__PURE__ */ jsx(ChartContainer, { config, children: /* @__PURE__ */ jsxs(LineChart$1, { data, margin: { left: 12, right: 12 }, children: [
|
|
379
|
+
showGrid && /* @__PURE__ */ jsx(CartesianGrid, { vertical: false }),
|
|
380
|
+
showXAxis && /* @__PURE__ */ jsx(XAxis, { dataKey: xKey, tickLine: false, axisLine: false, tickMargin: 8 }),
|
|
381
|
+
showYAxis && /* @__PURE__ */ jsx(YAxis, { tickLine: false, axisLine: false, tickMargin: 8 }),
|
|
382
|
+
/* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, {}) }),
|
|
383
|
+
showLegend && /* @__PURE__ */ jsx(ChartLegend, { content: /* @__PURE__ */ jsx(ChartLegendContent, {}) }),
|
|
384
|
+
yKeys.map((key) => /* @__PURE__ */ jsx(
|
|
385
|
+
Line,
|
|
386
|
+
{
|
|
387
|
+
dataKey: key,
|
|
388
|
+
type: curveType,
|
|
389
|
+
stroke: `var(--color-${key})`,
|
|
390
|
+
strokeWidth: 2,
|
|
391
|
+
dot: showDots ? { fill: `var(--color-${key})`, r: 3 } : false,
|
|
392
|
+
activeDot: { r: 5 }
|
|
393
|
+
},
|
|
394
|
+
key
|
|
395
|
+
))
|
|
396
|
+
] }) }) }));
|
|
397
|
+
}
|
|
398
|
+
function PieChart(_a) {
|
|
399
|
+
var _b = _a, {
|
|
400
|
+
data,
|
|
401
|
+
config,
|
|
402
|
+
dataKey = "value",
|
|
403
|
+
nameKey = "name",
|
|
404
|
+
donut = false,
|
|
405
|
+
centerLabel,
|
|
406
|
+
centerValue,
|
|
407
|
+
showLegend = false,
|
|
408
|
+
className
|
|
409
|
+
} = _b, props = __objRest(_b, [
|
|
410
|
+
"data",
|
|
411
|
+
"config",
|
|
412
|
+
"dataKey",
|
|
413
|
+
"nameKey",
|
|
414
|
+
"donut",
|
|
415
|
+
"centerLabel",
|
|
416
|
+
"centerValue",
|
|
417
|
+
"showLegend",
|
|
418
|
+
"className"
|
|
419
|
+
]);
|
|
420
|
+
return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ "data-slot": "pie-chart", className }, props), { children: /* @__PURE__ */ jsx(ChartContainer, { config, children: /* @__PURE__ */ jsxs(PieChart$1, { children: [
|
|
421
|
+
/* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, { nameKey }) }),
|
|
422
|
+
showLegend && /* @__PURE__ */ jsx(ChartLegend, { content: /* @__PURE__ */ jsx(ChartLegendContent, { nameKey }) }),
|
|
423
|
+
/* @__PURE__ */ jsxs(
|
|
424
|
+
Pie,
|
|
425
|
+
{
|
|
426
|
+
data,
|
|
427
|
+
dataKey,
|
|
428
|
+
nameKey,
|
|
429
|
+
innerRadius: donut ? "60%" : 0,
|
|
430
|
+
outerRadius: "80%",
|
|
431
|
+
strokeWidth: 2,
|
|
432
|
+
stroke: "var(--color-background)",
|
|
433
|
+
children: [
|
|
434
|
+
data.map((entry) => {
|
|
435
|
+
var _a2;
|
|
436
|
+
return /* @__PURE__ */ jsx(Cell, { fill: (_a2 = entry.fill) != null ? _a2 : `var(--color-${entry.name})` }, entry.name);
|
|
437
|
+
}),
|
|
438
|
+
donut && (centerLabel || centerValue) && /* @__PURE__ */ jsx(
|
|
439
|
+
Label,
|
|
440
|
+
{
|
|
441
|
+
content: ({ viewBox }) => {
|
|
442
|
+
if (viewBox && "cx" in viewBox && "cy" in viewBox) {
|
|
443
|
+
return /* @__PURE__ */ jsxs(
|
|
444
|
+
"text",
|
|
445
|
+
{
|
|
446
|
+
x: viewBox.cx,
|
|
447
|
+
y: viewBox.cy,
|
|
448
|
+
textAnchor: "middle",
|
|
449
|
+
dominantBaseline: "middle",
|
|
450
|
+
children: [
|
|
451
|
+
centerValue && /* @__PURE__ */ jsx(
|
|
452
|
+
"tspan",
|
|
453
|
+
{
|
|
454
|
+
x: viewBox.cx,
|
|
455
|
+
y: (viewBox.cy || 0) - 8,
|
|
456
|
+
className: "fill-foreground font-bold text-2xl",
|
|
457
|
+
children: centerValue
|
|
458
|
+
}
|
|
459
|
+
),
|
|
460
|
+
centerLabel && /* @__PURE__ */ jsx(
|
|
461
|
+
"tspan",
|
|
462
|
+
{
|
|
463
|
+
x: viewBox.cx,
|
|
464
|
+
y: (viewBox.cy || 0) + 12,
|
|
465
|
+
className: "fill-muted-foreground text-xs",
|
|
466
|
+
children: centerLabel
|
|
467
|
+
}
|
|
468
|
+
)
|
|
469
|
+
]
|
|
470
|
+
}
|
|
471
|
+
);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
)
|
|
476
|
+
]
|
|
477
|
+
}
|
|
478
|
+
)
|
|
479
|
+
] }) }) }));
|
|
480
|
+
}
|
|
481
|
+
function RadialChart(_a) {
|
|
482
|
+
var _b = _a, {
|
|
483
|
+
data,
|
|
484
|
+
config,
|
|
485
|
+
angleKey,
|
|
486
|
+
dataKeys,
|
|
487
|
+
showLegend = false,
|
|
488
|
+
className
|
|
489
|
+
} = _b, props = __objRest(_b, [
|
|
490
|
+
"data",
|
|
491
|
+
"config",
|
|
492
|
+
"angleKey",
|
|
493
|
+
"dataKeys",
|
|
494
|
+
"showLegend",
|
|
495
|
+
"className"
|
|
496
|
+
]);
|
|
497
|
+
return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ "data-slot": "radial-chart", className }, props), { children: /* @__PURE__ */ jsx(ChartContainer, { config, children: /* @__PURE__ */ jsxs(RadarChart, { data, children: [
|
|
498
|
+
/* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, {}) }),
|
|
499
|
+
showLegend && /* @__PURE__ */ jsx(ChartLegend, { content: /* @__PURE__ */ jsx(ChartLegendContent, {}) }),
|
|
500
|
+
/* @__PURE__ */ jsx(PolarGrid, {}),
|
|
501
|
+
/* @__PURE__ */ jsx(PolarAngleAxis, { dataKey: angleKey }),
|
|
502
|
+
dataKeys.map((key) => /* @__PURE__ */ jsx(
|
|
503
|
+
Radar,
|
|
504
|
+
{
|
|
505
|
+
dataKey: key,
|
|
506
|
+
fill: `var(--color-${key})`,
|
|
507
|
+
fillOpacity: 0.3,
|
|
508
|
+
stroke: `var(--color-${key})`,
|
|
509
|
+
strokeWidth: 2
|
|
510
|
+
},
|
|
511
|
+
key
|
|
512
|
+
))
|
|
513
|
+
] }) }) }));
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
export { AreaChart, BarChart, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, LineChart, PieChart, RadialChart };
|
|
517
|
+
//# sourceMappingURL=chunk-U4EPKN7G.js.map
|
|
518
|
+
//# sourceMappingURL=chunk-U4EPKN7G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chart.tsx","../src/charts/area-chart.tsx","../src/charts/bar-chart.tsx","../src/charts/line-chart.tsx","../src/charts/pie-chart.tsx","../src/charts/radial-chart.tsx"],"names":["config","jsx","jsxs","RechartsAreaChart","RechartsBarChart","CartesianGrid","Fragment","YAxis","XAxis","RechartsLineChart","RechartsPieChart","_a","RechartsRadarChart"],"mappings":"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","file":"chunk-U4EPKN7G.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color)\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n // biome-ignore lint/security/noDangerouslySetInnerHtml: injecting chart theme CSS\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: Partial<RechartsPrimitive.TooltipContentProps<string | number, string>> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-medium font-mono text-foreground tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n payload?: Array<{ value: string; type?: string; color?: string; dataKey?: string }>\n verticalAlign?: \"top\" | \"bottom\" | \"middle\"\n hideIcon?: boolean\n nameKey?: string\n}) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\"\n\nimport type * as React from \"react\"\nimport { Area, CartesianGrid, AreaChart as RechartsAreaChart, XAxis, YAxis } from \"recharts\"\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../components/chart\"\n\ntype AreaChartProps = React.ComponentProps<\"div\"> & {\n data: Record<string, unknown>[]\n config: ChartConfig\n xKey: string\n yKeys: string[]\n showGrid?: boolean\n showXAxis?: boolean\n showYAxis?: boolean\n showLegend?: boolean\n stacked?: boolean\n gradient?: boolean\n}\n\nfunction AreaChart({\n data,\n config,\n xKey,\n yKeys,\n showGrid = true,\n showXAxis = true,\n showYAxis = false,\n showLegend = false,\n stacked = false,\n gradient = true,\n className,\n ...props\n}: AreaChartProps) {\n return (\n <div data-slot=\"area-chart\" className={className} {...props}>\n <ChartContainer config={config}>\n <RechartsAreaChart data={data} margin={{ left: 12, right: 12 }}>\n {gradient && (\n <defs>\n {yKeys.map((key) => (\n <linearGradient key={key} id={`fill-${key}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={`var(--color-${key})`} stopOpacity={0.8} />\n <stop offset=\"95%\" stopColor={`var(--color-${key})`} stopOpacity={0.1} />\n </linearGradient>\n ))}\n </defs>\n )}\n {showGrid && <CartesianGrid vertical={false} />}\n {showXAxis && <XAxis dataKey={xKey} tickLine={false} axisLine={false} tickMargin={8} />}\n {showYAxis && <YAxis tickLine={false} axisLine={false} tickMargin={8} />}\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n {yKeys.map((key) => (\n <Area\n key={key}\n dataKey={key}\n type=\"natural\"\n fill={gradient ? `url(#fill-${key})` : `var(--color-${key})`}\n stroke={`var(--color-${key})`}\n stackId={stacked ? \"stack\" : undefined}\n />\n ))}\n </RechartsAreaChart>\n </ChartContainer>\n </div>\n )\n}\n\nexport { AreaChart }\nexport type { AreaChartProps }\n","\"use client\"\n\nimport type * as React from \"react\"\nimport { Bar, CartesianGrid, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\"\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../components/chart\"\n\ntype BarChartProps = React.ComponentProps<\"div\"> & {\n data: Record<string, unknown>[]\n config: ChartConfig\n xKey: string\n yKeys: string[]\n showGrid?: boolean\n showXAxis?: boolean\n showYAxis?: boolean\n showLegend?: boolean\n stacked?: boolean\n horizontal?: boolean\n radius?: number\n}\n\nfunction BarChart({\n data,\n config,\n xKey,\n yKeys,\n showGrid = true,\n showXAxis = true,\n showYAxis = false,\n showLegend = false,\n stacked = false,\n horizontal = false,\n radius = 4,\n className,\n ...props\n}: BarChartProps) {\n return (\n <div data-slot=\"bar-chart\" className={className} {...props}>\n <ChartContainer config={config}>\n <RechartsBarChart\n data={data}\n layout={horizontal ? \"vertical\" : \"horizontal\"}\n margin={{ left: 12, right: 12 }}\n >\n {showGrid && <CartesianGrid vertical={!horizontal} horizontal={horizontal} />}\n {horizontal ? (\n <>\n <YAxis\n dataKey={xKey}\n type=\"category\"\n tickLine={false}\n axisLine={false}\n tickMargin={8}\n />\n {showYAxis && <XAxis type=\"number\" tickLine={false} axisLine={false} />}\n </>\n ) : (\n <>\n {showXAxis && (\n <XAxis dataKey={xKey} tickLine={false} axisLine={false} tickMargin={8} />\n )}\n {showYAxis && <YAxis tickLine={false} axisLine={false} tickMargin={8} />}\n </>\n )}\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n {yKeys.map((key) => (\n <Bar\n key={key}\n dataKey={key}\n fill={`var(--color-${key})`}\n radius={radius}\n stackId={stacked ? \"stack\" : undefined}\n />\n ))}\n </RechartsBarChart>\n </ChartContainer>\n </div>\n )\n}\n\nexport { BarChart }\nexport type { BarChartProps }\n","\"use client\"\n\nimport type * as React from \"react\"\nimport { CartesianGrid, Line, LineChart as RechartsLineChart, XAxis, YAxis } from \"recharts\"\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../components/chart\"\n\ntype LineChartProps = React.ComponentProps<\"div\"> & {\n data: Record<string, unknown>[]\n config: ChartConfig\n xKey: string\n yKeys: string[]\n showGrid?: boolean\n showXAxis?: boolean\n showYAxis?: boolean\n showLegend?: boolean\n showDots?: boolean\n curveType?: \"natural\" | \"linear\" | \"step\" | \"monotone\"\n}\n\nfunction LineChart({\n data,\n config,\n xKey,\n yKeys,\n showGrid = true,\n showXAxis = true,\n showYAxis = false,\n showLegend = false,\n showDots = true,\n curveType = \"natural\",\n className,\n ...props\n}: LineChartProps) {\n return (\n <div data-slot=\"line-chart\" className={className} {...props}>\n <ChartContainer config={config}>\n <RechartsLineChart data={data} margin={{ left: 12, right: 12 }}>\n {showGrid && <CartesianGrid vertical={false} />}\n {showXAxis && <XAxis dataKey={xKey} tickLine={false} axisLine={false} tickMargin={8} />}\n {showYAxis && <YAxis tickLine={false} axisLine={false} tickMargin={8} />}\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n {yKeys.map((key) => (\n <Line\n key={key}\n dataKey={key}\n type={curveType}\n stroke={`var(--color-${key})`}\n strokeWidth={2}\n dot={showDots ? { fill: `var(--color-${key})`, r: 3 } : false}\n activeDot={{ r: 5 }}\n />\n ))}\n </RechartsLineChart>\n </ChartContainer>\n </div>\n )\n}\n\nexport { LineChart }\nexport type { LineChartProps }\n","\"use client\"\n\nimport type * as React from \"react\"\nimport { Cell, Label, Pie, PieChart as RechartsPieChart } from \"recharts\"\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../components/chart\"\n\ntype PieChartProps = React.ComponentProps<\"div\"> & {\n data: { name: string; value: number; fill?: string }[]\n config: ChartConfig\n dataKey?: string\n nameKey?: string\n donut?: boolean\n centerLabel?: string\n centerValue?: string | number\n showLegend?: boolean\n}\n\nfunction PieChart({\n data,\n config,\n dataKey = \"value\",\n nameKey = \"name\",\n donut = false,\n centerLabel,\n centerValue,\n showLegend = false,\n className,\n ...props\n}: PieChartProps) {\n return (\n <div data-slot=\"pie-chart\" className={className} {...props}>\n <ChartContainer config={config}>\n <RechartsPieChart>\n <ChartTooltip content={<ChartTooltipContent nameKey={nameKey} />} />\n {showLegend && <ChartLegend content={<ChartLegendContent nameKey={nameKey} />} />}\n <Pie\n data={data}\n dataKey={dataKey}\n nameKey={nameKey}\n innerRadius={donut ? \"60%\" : 0}\n outerRadius=\"80%\"\n strokeWidth={2}\n stroke=\"var(--color-background)\"\n >\n {data.map((entry) => (\n <Cell key={entry.name} fill={entry.fill ?? `var(--color-${entry.name})`} />\n ))}\n {donut && (centerLabel || centerValue) && (\n <Label\n content={({ viewBox }) => {\n if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n return (\n <text\n x={viewBox.cx}\n y={viewBox.cy}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n >\n {centerValue && (\n <tspan\n x={viewBox.cx}\n y={(viewBox.cy || 0) - 8}\n className=\"fill-foreground font-bold text-2xl\"\n >\n {centerValue}\n </tspan>\n )}\n {centerLabel && (\n <tspan\n x={viewBox.cx}\n y={(viewBox.cy || 0) + 12}\n className=\"fill-muted-foreground text-xs\"\n >\n {centerLabel}\n </tspan>\n )}\n </text>\n )\n }\n }}\n />\n )}\n </Pie>\n </RechartsPieChart>\n </ChartContainer>\n </div>\n )\n}\n\nexport { PieChart }\nexport type { PieChartProps }\n","\"use client\"\n\nimport type * as React from \"react\"\nimport { PolarAngleAxis, PolarGrid, Radar, RadarChart as RechartsRadarChart } from \"recharts\"\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../components/chart\"\n\ntype RadialChartProps = React.ComponentProps<\"div\"> & {\n data: Record<string, unknown>[]\n config: ChartConfig\n angleKey: string\n dataKeys: string[]\n showLegend?: boolean\n}\n\nfunction RadialChart({\n data,\n config,\n angleKey,\n dataKeys,\n showLegend = false,\n className,\n ...props\n}: RadialChartProps) {\n return (\n <div data-slot=\"radial-chart\" className={className} {...props}>\n <ChartContainer config={config}>\n <RechartsRadarChart data={data}>\n <ChartTooltip content={<ChartTooltipContent />} />\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n <PolarGrid />\n <PolarAngleAxis dataKey={angleKey} />\n {dataKeys.map((key) => (\n <Radar\n key={key}\n dataKey={key}\n fill={`var(--color-${key})`}\n fillOpacity={0.3}\n stroke={`var(--color-${key})`}\n strokeWidth={2}\n />\n ))}\n </RechartsRadarChart>\n </ChartContainer>\n </div>\n )\n}\n\nexport { RadialChart }\nexport type { RadialChartProps }\n"]}
|