@zentauri-ui/zentauri-components 1.5.0 → 1.5.21
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/README.md +5 -6
- package/cli/registry.json +2 -0
- package/dist/charts/area/Area.d.ts.map +1 -1
- package/dist/charts/area/index.d.ts +1 -1
- package/dist/charts/area/index.d.ts.map +1 -1
- package/dist/charts/area.js +10 -10
- package/dist/charts/area.js.map +1 -1
- package/dist/charts/area.mjs +3 -3
- package/dist/charts/area.mjs.map +1 -1
- package/dist/charts/bar/index.d.ts +1 -1
- package/dist/charts/bar/index.d.ts.map +1 -1
- package/dist/charts/bar.js +9 -8
- package/dist/charts/bar.js.map +1 -1
- package/dist/charts/bar.mjs +3 -2
- package/dist/charts/bar.mjs.map +1 -1
- package/dist/charts/bubble/Bubble.d.ts.map +1 -1
- package/dist/charts/bubble/index.d.ts +1 -1
- package/dist/charts/bubble/index.d.ts.map +1 -1
- package/dist/charts/bubble.js +12 -18
- package/dist/charts/bubble.js.map +1 -1
- package/dist/charts/bubble.mjs +7 -13
- package/dist/charts/bubble.mjs.map +1 -1
- package/dist/charts/line/index.d.ts +1 -1
- package/dist/charts/line/index.d.ts.map +1 -1
- package/dist/charts/line.js +9 -8
- package/dist/charts/line.js.map +1 -1
- package/dist/charts/line.mjs +3 -2
- package/dist/charts/line.mjs.map +1 -1
- package/dist/charts/pie/Pie.d.ts +6 -0
- package/dist/charts/pie/Pie.d.ts.map +1 -0
- package/dist/charts/pie/index.d.ts +4 -0
- package/dist/charts/pie/index.d.ts.map +1 -0
- package/dist/charts/pie.js +104 -0
- package/dist/charts/pie.js.map +1 -0
- package/dist/charts/pie.mjs +91 -0
- package/dist/charts/pie.mjs.map +1 -0
- package/dist/charts/shared/chart-frame.d.ts +0 -3
- package/dist/charts/shared/chart-frame.d.ts.map +1 -1
- package/dist/charts/shared/colors.d.ts +4 -0
- package/dist/charts/shared/colors.d.ts.map +1 -1
- package/dist/charts/shared/types.d.ts +20 -1
- package/dist/charts/shared/types.d.ts.map +1 -1
- package/dist/charts/shared/variants.d.ts +25 -0
- package/dist/charts/shared/variants.d.ts.map +1 -1
- package/dist/{chunk-CIN5JDN4.js → chunk-MTJRPLMG.js} +69 -30
- package/dist/chunk-MTJRPLMG.js.map +1 -0
- package/dist/chunk-MWR5DIA5.mjs +21 -0
- package/dist/chunk-MWR5DIA5.mjs.map +1 -0
- package/dist/chunk-PVTTWOYV.js +24 -0
- package/dist/chunk-PVTTWOYV.js.map +1 -0
- package/dist/{chunk-IQZROQNJ.mjs → chunk-SPX2QDIB.mjs} +70 -29
- package/dist/chunk-SPX2QDIB.mjs.map +1 -0
- package/dist/ui/buttons/variants.d.ts +1 -1
- package/dist/ui/pagination/pagination.d.ts +1 -1
- package/dist/ui/pagination/variants.d.ts +1 -1
- package/package.json +1 -1
- package/src/charts/area/Area.tsx +0 -1
- package/src/charts/area/index.ts +8 -1
- package/src/charts/bar/index.ts +8 -1
- package/src/charts/bubble/Bubble.tsx +3 -10
- package/src/charts/bubble/index.ts +8 -1
- package/src/charts/line/index.ts +8 -1
- package/src/charts/pie/Pie.tsx +101 -0
- package/src/charts/pie/index.ts +9 -0
- package/src/charts/shared/chart-frame.tsx +27 -5
- package/src/charts/shared/types.ts +23 -1
- package/src/charts/shared/variants.ts +45 -8
- package/dist/chunk-CIN5JDN4.js.map +0 -1
- package/dist/chunk-IQZROQNJ.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/charts/shared/variants.ts","../src/charts/shared/chart-frame.tsx"],"names":["cva","jsx","cn","ResponsiveContainer","jsxs","Fragment","CartesianGrid","Tooltip","Legend"],"mappings":"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","file":"chunk-MTJRPLMG.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const chartVariants = cva(\n [\n \"relative w-full min-w-0 overflow-hidden rounded-xl\",\n \"h-[var(--chart-height)] min-h-64 sm:min-h-72 md:min-h-80\",\n \"[&_.recharts-default-tooltip]:rounded-lg [&_.recharts-default-tooltip]:border [&_.recharts-default-tooltip]:border-slate-200\",\n \"[&_.recharts-default-tooltip]:bg-white/95 [&_.recharts-default-tooltip]:shadow-lg\",\n \"[&_.recharts-default-tooltip]:text-slate-900\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"bg-white text-slate-600 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n muted:\n \"bg-slate-50 text-slate-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n outline:\n \"border border-slate-200 bg-white text-slate-600 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n glass:\n \"border border-white/15 bg-white/10 text-slate-100 backdrop-blur-md [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n sky: \"bg-sky-50 text-sky-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n emerald:\n \"bg-emerald-50 text-emerald-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n violet:\n \"bg-violet-50 text-violet-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n amber:\n \"bg-amber-50 text-amber-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n rose: \"bg-rose-50 text-rose-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n slate:\n \"bg-slate-50 text-slate-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n gray: \"bg-gray-50 text-gray-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n indigo:\n \"bg-indigo-50 text-indigo-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n \"gradient-cyan-violet\":\n \"bg-gradient-to-r from-cyan-500 to-violet-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-emerald-violet\":\n \"bg-gradient-to-r from-emerald-500 to-violet-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-amber-rose\":\n \"bg-gradient-to-r from-amber-500 to-rose-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-slate-gray\":\n \"bg-gradient-to-r from-slate-500 to-gray-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-indigo-purple\":\n \"bg-gradient-to-r from-indigo-500 to-purple-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-cyan-blue\":\n \"bg-gradient-to-r from-cyan-500 to-blue-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-emerald-blue\":\n \"bg-gradient-to-r from-emerald-500 to-blue-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-amber-blue\":\n \"bg-gradient-to-r from-amber-500 to-blue-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n },\n density: {\n compact: \"p-2 sm:p-3\",\n comfortable: \"p-3 sm:p-4\",\n spacious: \"p-4 sm:p-5 md:p-6\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n density: \"comfortable\",\n },\n },\n);\n\nexport const chartPalette = {\n glass: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n outline: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n muted: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n default: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n sky: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n cyan: { stroke: \"#0891b2\", fill: \"#67e8f9\", textColor: \"#0891b2\" },\n emerald: { stroke: \"#059669\", fill: \"#6ee7b7\", textColor: \"#059669\" },\n violet: { stroke: \"#7c3aed\", fill: \"#c4b5fd\", textColor: \"#7c3aed\" },\n amber: { stroke: \"#d97706\", fill: \"#fcd34d\", textColor: \"#d97706\" },\n rose: { stroke: \"#e11d48\", fill: \"#fda4af\", textColor: \"#e11d48\" },\n slate: { stroke: \"#475569\", fill: \"#cbd5e1\", textColor: \"#475569\" },\n gray: { stroke: \"#6b7280\", fill: \"#d1d5db\", textColor: \"#6b7280\" },\n white: { stroke: \"#ffffff\", fill: \"#ffffff\", textColor: \"#ffffff\" },\n indigo: { stroke: \"#6366f1\", fill: \"#c7d2fe\", textColor: \"#6366f1\" },\n \"gradient-cyan-violet\": {\n stroke: \"#0891b2\",\n fill: \"#67e8f9\",\n textColor: \"#0891b2\",\n },\n \"gradient-emerald-violet\": {\n stroke: \"#059669\",\n fill: \"#6ee7b7\",\n textColor: \"#059669\",\n },\n \"gradient-amber-rose\": {\n stroke: \"#d97706\",\n fill: \"#fcd34d\",\n textColor: \"#d97706\",\n },\n \"gradient-slate-gray\": {\n stroke: \"#475569\",\n fill: \"#cbd5e1\",\n textColor: \"#475569\",\n },\n \"gradient-indigo-purple\": {\n stroke: \"#6366f1\",\n fill: \"#c7d2fe\",\n textColor: \"#6366f1\",\n },\n \"gradient-cyan-blue\": {\n stroke: \"#0891b2\",\n fill: \"#67e8f9\",\n textColor: \"#0891b2\",\n },\n \"gradient-emerald-blue\": {\n stroke: \"#059669\",\n fill: \"#6ee7b7\",\n textColor: \"#059669\",\n },\n \"gradient-amber-blue\": {\n stroke: \"#d97706\",\n fill: \"#fcd34d\",\n textColor: \"#d97706\",\n },\n} as const;\n\nexport const chartColorValues = Object.keys(chartPalette) as Array<\n keyof typeof chartPalette\n>;\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport { CartesianGrid, Legend, ResponsiveContainer, Tooltip } from \"recharts\";\n\nimport { cn } from \"../../lib/utils\";\nimport { chartVariants } from \"./variants\";\nimport { VariantProps } from \"class-variance-authority\";\n\n/** Chart-level props that may be forwarded from *Chart `...rest` and must not reach a DOM node. */\nconst CHART_ONLY_DIV_PROP_KEYS = new Set([\n \"data\",\n \"margin\",\n \"series\",\n \"showGrid\",\n \"showLegend\",\n \"showTooltip\",\n \"stacked\",\n \"strokeDasharray\",\n \"syncId\",\n \"tooltipColor\",\n \"xKey\",\n]);\n\nfunction filterDivProps(\n props: HTMLAttributes<HTMLDivElement>,\n): HTMLAttributes<HTMLDivElement> {\n const entries = Object.entries(props).filter(\n ([key]) => !CHART_ONLY_DIV_PROP_KEYS.has(key),\n );\n return Object.fromEntries(entries) as HTMLAttributes<HTMLDivElement>;\n}\n\ntype ChartFrameProps = HTMLAttributes<HTMLDivElement> & {\n appearance?: VariantProps<typeof chartVariants>[\"appearance\"];\n containerStyle?: CSSProperties;\n density?: \"compact\" | \"comfortable\" | \"spacious\" | null;\n emptyState?: ReactNode;\n hasData: boolean;\n height: number;\n style?: CSSProperties;\n children: ReactNode;\n};\n\nexport const defaultChartMargin = { top: 16, right: 16, bottom: 8, left: 0 };\n\nexport function ChartFrame({\n appearance,\n children,\n className,\n containerStyle,\n density,\n emptyState = null,\n hasData,\n height,\n style,\n ...props\n}: ChartFrameProps) {\n const divProps = filterDivProps(props);\n const chartStyle = {\n \"--chart-height\": `${height}px`,\n ...style,\n } as CSSProperties;\n\n if (!hasData) {\n return (\n <div\n className={cn(chartVariants({ appearance, density }), className)}\n style={chartStyle}\n {...divProps}\n >\n <div className=\"flex h-full min-h-48 items-center justify-center text-sm text-slate-500\">\n {emptyState}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(chartVariants({ appearance, density }), className)}\n style={chartStyle}\n {...divProps}\n >\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n debounce={80}\n style={containerStyle}\n >\n {children}\n </ResponsiveContainer>\n </div>\n );\n}\n\nexport function ChartDecorators({\n axis,\n showGrid,\n showLegend,\n showTooltip,\n tooltipColor = \"#0f172a\",\n}: {\n axis: ReactNode;\n showGrid: boolean;\n showLegend: boolean;\n showTooltip: boolean;\n tooltipColor?: string;\n}) {\n return (\n <>\n {showGrid ? (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"currentColor\"\n opacity={0.16}\n />\n ) : null}\n {axis}\n {showTooltip ? (\n <Tooltip\n cursor={{ opacity: 0.12 }}\n contentStyle={{ color: tooltipColor }}\n labelStyle={{ color: tooltipColor }}\n itemStyle={{ color: tooltipColor }}\n />\n ) : null}\n {showLegend ? <Legend /> : null}\n </>\n );\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { chartPalette } from './chunk-SPX2QDIB.mjs';
|
|
2
|
+
|
|
3
|
+
// src/charts/shared/colors.ts
|
|
4
|
+
function resolveColor(color, index) {
|
|
5
|
+
if (color && color in chartPalette) {
|
|
6
|
+
return chartPalette[color];
|
|
7
|
+
}
|
|
8
|
+
if (color) {
|
|
9
|
+
return { stroke: color, fill: color };
|
|
10
|
+
}
|
|
11
|
+
const paletteValues = Object.values(chartPalette);
|
|
12
|
+
return paletteValues[index % paletteValues.length] ?? chartPalette.cyan;
|
|
13
|
+
}
|
|
14
|
+
function getSeriesFill(series, index, opacity = 0.18) {
|
|
15
|
+
const color = resolveColor(series.color, index);
|
|
16
|
+
return series.fill ?? `${color.fill}${Math.round(opacity * 255).toString(16).padStart(2, "0")}`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { getSeriesFill, resolveColor };
|
|
20
|
+
//# sourceMappingURL=chunk-MWR5DIA5.mjs.map
|
|
21
|
+
//# sourceMappingURL=chunk-MWR5DIA5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/charts/shared/colors.ts"],"names":[],"mappings":";;;AAGO,SAAS,YAAA,CACd,OACA,KAAA,EACA;AACA,EAAA,IAAI,KAAA,IAAS,SAAS,YAAA,EAAc;AAClC,IAAA,OAAO,aAAa,KAAmB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,KAAA,EAAM;AAAA,EACtC;AAEA,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAChD,EAAA,OAAO,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,MAAM,KAAK,YAAA,CAAa,IAAA;AACrE;AAEO,SAAS,aAAA,CACd,MAAA,EACA,KAAA,EACA,OAAA,GAAU,IAAA,EACV;AACA,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA;AAC9C,EAAA,OACE,OAAO,IAAA,IACP,CAAA,EAAG,KAAA,CAAM,IAAI,GAAG,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,GAAG,EACrC,QAAA,CAAS,EAAE,EACX,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAEvB","file":"chunk-MWR5DIA5.mjs","sourcesContent":["import type { ChartColor, ChartSeries } from \"./types\";\nimport { chartPalette } from \"./variants\";\n\nexport function resolveColor(\n color: ChartColor | string | undefined,\n index: number,\n) {\n if (color && color in chartPalette) {\n return chartPalette[color as ChartColor];\n }\n if (color) {\n return { stroke: color, fill: color };\n }\n\n const paletteValues = Object.values(chartPalette);\n return paletteValues[index % paletteValues.length] ?? chartPalette.cyan;\n}\n\nexport function getSeriesFill(\n series: ChartSeries,\n index: number,\n opacity = 0.18,\n) {\n const color = resolveColor(series.color, index);\n return (\n series.fill ??\n `${color.fill}${Math.round(opacity * 255)\n .toString(16)\n .padStart(2, \"0\")}`\n );\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkMTJRPLMG_js = require('./chunk-MTJRPLMG.js');
|
|
4
|
+
|
|
5
|
+
// src/charts/shared/colors.ts
|
|
6
|
+
function resolveColor(color, index) {
|
|
7
|
+
if (color && color in chunkMTJRPLMG_js.chartPalette) {
|
|
8
|
+
return chunkMTJRPLMG_js.chartPalette[color];
|
|
9
|
+
}
|
|
10
|
+
if (color) {
|
|
11
|
+
return { stroke: color, fill: color };
|
|
12
|
+
}
|
|
13
|
+
const paletteValues = Object.values(chunkMTJRPLMG_js.chartPalette);
|
|
14
|
+
return paletteValues[index % paletteValues.length] ?? chunkMTJRPLMG_js.chartPalette.cyan;
|
|
15
|
+
}
|
|
16
|
+
function getSeriesFill(series, index, opacity = 0.18) {
|
|
17
|
+
const color = resolveColor(series.color, index);
|
|
18
|
+
return series.fill ?? `${color.fill}${Math.round(opacity * 255).toString(16).padStart(2, "0")}`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.getSeriesFill = getSeriesFill;
|
|
22
|
+
exports.resolveColor = resolveColor;
|
|
23
|
+
//# sourceMappingURL=chunk-PVTTWOYV.js.map
|
|
24
|
+
//# sourceMappingURL=chunk-PVTTWOYV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/charts/shared/colors.ts"],"names":["chartPalette"],"mappings":";;;;;AAGO,SAAS,YAAA,CACd,OACA,KAAA,EACA;AACA,EAAA,IAAI,KAAA,IAAS,SAASA,6BAAA,EAAc;AAClC,IAAA,OAAOA,8BAAa,KAAmB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,KAAA,EAAM;AAAA,EACtC;AAEA,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAOA,6BAAY,CAAA;AAChD,EAAA,OAAO,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,MAAM,KAAKA,6BAAA,CAAa,IAAA;AACrE;AAEO,SAAS,aAAA,CACd,MAAA,EACA,KAAA,EACA,OAAA,GAAU,IAAA,EACV;AACA,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA;AAC9C,EAAA,OACE,OAAO,IAAA,IACP,CAAA,EAAG,KAAA,CAAM,IAAI,GAAG,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,GAAG,EACrC,QAAA,CAAS,EAAE,EACX,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAEvB","file":"chunk-PVTTWOYV.js","sourcesContent":["import type { ChartColor, ChartSeries } from \"./types\";\nimport { chartPalette } from \"./variants\";\n\nexport function resolveColor(\n color: ChartColor | string | undefined,\n index: number,\n) {\n if (color && color in chartPalette) {\n return chartPalette[color as ChartColor];\n }\n if (color) {\n return { stroke: color, fill: color };\n }\n\n const paletteValues = Object.values(chartPalette);\n return paletteValues[index % paletteValues.length] ?? chartPalette.cyan;\n}\n\nexport function getSeriesFill(\n series: ChartSeries,\n index: number,\n opacity = 0.18,\n) {\n const color = resolveColor(series.color, index);\n return (\n series.fill ??\n `${color.fill}${Math.round(opacity * 255)\n .toString(16)\n .padStart(2, \"0\")}`\n );\n}\n"]}
|
|
@@ -48,6 +48,11 @@ var chartVariants = cva(
|
|
|
48
48
|
}
|
|
49
49
|
);
|
|
50
50
|
var chartPalette = {
|
|
51
|
+
glass: { stroke: "#0f172a", fill: "#0f172a", textColor: "#0f172a" },
|
|
52
|
+
outline: { stroke: "#0f172a", fill: "#0f172a", textColor: "#0f172a" },
|
|
53
|
+
muted: { stroke: "#0f172a", fill: "#0f172a", textColor: "#0f172a" },
|
|
54
|
+
default: { stroke: "#0f172a", fill: "#0f172a", textColor: "#0f172a" },
|
|
55
|
+
sky: { stroke: "#0f172a", fill: "#0f172a", textColor: "#0f172a" },
|
|
51
56
|
cyan: { stroke: "#0891b2", fill: "#67e8f9", textColor: "#0891b2" },
|
|
52
57
|
emerald: { stroke: "#059669", fill: "#6ee7b7", textColor: "#059669" },
|
|
53
58
|
violet: { stroke: "#7c3aed", fill: "#c4b5fd", textColor: "#7c3aed" },
|
|
@@ -57,16 +62,67 @@ var chartPalette = {
|
|
|
57
62
|
gray: { stroke: "#6b7280", fill: "#d1d5db", textColor: "#6b7280" },
|
|
58
63
|
white: { stroke: "#ffffff", fill: "#ffffff", textColor: "#ffffff" },
|
|
59
64
|
indigo: { stroke: "#6366f1", fill: "#c7d2fe", textColor: "#6366f1" },
|
|
60
|
-
"gradient-cyan-violet": {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"gradient-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
"gradient-cyan-violet": {
|
|
66
|
+
stroke: "#0891b2",
|
|
67
|
+
fill: "#67e8f9",
|
|
68
|
+
textColor: "#0891b2"
|
|
69
|
+
},
|
|
70
|
+
"gradient-emerald-violet": {
|
|
71
|
+
stroke: "#059669",
|
|
72
|
+
fill: "#6ee7b7",
|
|
73
|
+
textColor: "#059669"
|
|
74
|
+
},
|
|
75
|
+
"gradient-amber-rose": {
|
|
76
|
+
stroke: "#d97706",
|
|
77
|
+
fill: "#fcd34d",
|
|
78
|
+
textColor: "#d97706"
|
|
79
|
+
},
|
|
80
|
+
"gradient-slate-gray": {
|
|
81
|
+
stroke: "#475569",
|
|
82
|
+
fill: "#cbd5e1",
|
|
83
|
+
textColor: "#475569"
|
|
84
|
+
},
|
|
85
|
+
"gradient-indigo-purple": {
|
|
86
|
+
stroke: "#6366f1",
|
|
87
|
+
fill: "#c7d2fe",
|
|
88
|
+
textColor: "#6366f1"
|
|
89
|
+
},
|
|
90
|
+
"gradient-cyan-blue": {
|
|
91
|
+
stroke: "#0891b2",
|
|
92
|
+
fill: "#67e8f9",
|
|
93
|
+
textColor: "#0891b2"
|
|
94
|
+
},
|
|
95
|
+
"gradient-emerald-blue": {
|
|
96
|
+
stroke: "#059669",
|
|
97
|
+
fill: "#6ee7b7",
|
|
98
|
+
textColor: "#059669"
|
|
99
|
+
},
|
|
100
|
+
"gradient-amber-blue": {
|
|
101
|
+
stroke: "#d97706",
|
|
102
|
+
fill: "#fcd34d",
|
|
103
|
+
textColor: "#d97706"
|
|
104
|
+
}
|
|
68
105
|
};
|
|
69
106
|
var chartColorValues = Object.keys(chartPalette);
|
|
107
|
+
var CHART_ONLY_DIV_PROP_KEYS = /* @__PURE__ */ new Set([
|
|
108
|
+
"data",
|
|
109
|
+
"margin",
|
|
110
|
+
"series",
|
|
111
|
+
"showGrid",
|
|
112
|
+
"showLegend",
|
|
113
|
+
"showTooltip",
|
|
114
|
+
"stacked",
|
|
115
|
+
"strokeDasharray",
|
|
116
|
+
"syncId",
|
|
117
|
+
"tooltipColor",
|
|
118
|
+
"xKey"
|
|
119
|
+
]);
|
|
120
|
+
function filterDivProps(props) {
|
|
121
|
+
const entries = Object.entries(props).filter(
|
|
122
|
+
([key]) => !CHART_ONLY_DIV_PROP_KEYS.has(key)
|
|
123
|
+
);
|
|
124
|
+
return Object.fromEntries(entries);
|
|
125
|
+
}
|
|
70
126
|
var defaultChartMargin = { top: 16, right: 16, bottom: 8, left: 0 };
|
|
71
127
|
function ChartFrame({
|
|
72
128
|
appearance,
|
|
@@ -80,6 +136,7 @@ function ChartFrame({
|
|
|
80
136
|
style,
|
|
81
137
|
...props
|
|
82
138
|
}) {
|
|
139
|
+
const divProps = filterDivProps(props);
|
|
83
140
|
const chartStyle = {
|
|
84
141
|
"--chart-height": `${height}px`,
|
|
85
142
|
...style
|
|
@@ -90,7 +147,7 @@ function ChartFrame({
|
|
|
90
147
|
{
|
|
91
148
|
className: cn(chartVariants({ appearance, density }), className),
|
|
92
149
|
style: chartStyle,
|
|
93
|
-
...
|
|
150
|
+
...divProps,
|
|
94
151
|
children: /* @__PURE__ */ jsx("div", { className: "flex h-full min-h-48 items-center justify-center text-sm text-slate-500", children: emptyState })
|
|
95
152
|
}
|
|
96
153
|
);
|
|
@@ -100,7 +157,7 @@ function ChartFrame({
|
|
|
100
157
|
{
|
|
101
158
|
className: cn(chartVariants({ appearance, density }), className),
|
|
102
159
|
style: chartStyle,
|
|
103
|
-
...
|
|
160
|
+
...divProps,
|
|
104
161
|
children: /* @__PURE__ */ jsx(
|
|
105
162
|
ResponsiveContainer,
|
|
106
163
|
{
|
|
@@ -144,22 +201,6 @@ function ChartDecorators({
|
|
|
144
201
|
] });
|
|
145
202
|
}
|
|
146
203
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return chartPalette[color];
|
|
151
|
-
}
|
|
152
|
-
if (color) {
|
|
153
|
-
return { stroke: color, fill: color };
|
|
154
|
-
}
|
|
155
|
-
const paletteValues = Object.values(chartPalette);
|
|
156
|
-
return paletteValues[index % paletteValues.length] ?? chartPalette.cyan;
|
|
157
|
-
}
|
|
158
|
-
function getSeriesFill(series, index, opacity = 0.18) {
|
|
159
|
-
const color = resolveColor(series.color, index);
|
|
160
|
-
return series.fill ?? `${color.fill}${Math.round(opacity * 255).toString(16).padStart(2, "0")}`;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export { ChartDecorators, ChartFrame, chartColorValues, chartPalette, chartVariants, defaultChartMargin, getSeriesFill, resolveColor };
|
|
164
|
-
//# sourceMappingURL=chunk-IQZROQNJ.mjs.map
|
|
165
|
-
//# sourceMappingURL=chunk-IQZROQNJ.mjs.map
|
|
204
|
+
export { ChartDecorators, ChartFrame, chartColorValues, chartPalette, chartVariants, defaultChartMargin };
|
|
205
|
+
//# sourceMappingURL=chunk-SPX2QDIB.mjs.map
|
|
206
|
+
//# sourceMappingURL=chunk-SPX2QDIB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/charts/shared/variants.ts","../src/charts/shared/chart-frame.tsx"],"names":[],"mappings":"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","file":"chunk-SPX2QDIB.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const chartVariants = cva(\n [\n \"relative w-full min-w-0 overflow-hidden rounded-xl\",\n \"h-[var(--chart-height)] min-h-64 sm:min-h-72 md:min-h-80\",\n \"[&_.recharts-default-tooltip]:rounded-lg [&_.recharts-default-tooltip]:border [&_.recharts-default-tooltip]:border-slate-200\",\n \"[&_.recharts-default-tooltip]:bg-white/95 [&_.recharts-default-tooltip]:shadow-lg\",\n \"[&_.recharts-default-tooltip]:text-slate-900\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"bg-white text-slate-600 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n muted:\n \"bg-slate-50 text-slate-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n outline:\n \"border border-slate-200 bg-white text-slate-600 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n glass:\n \"border border-white/15 bg-white/10 text-slate-100 backdrop-blur-md [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n sky: \"bg-sky-50 text-sky-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n emerald:\n \"bg-emerald-50 text-emerald-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n violet:\n \"bg-violet-50 text-violet-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n amber:\n \"bg-amber-50 text-amber-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n rose: \"bg-rose-50 text-rose-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n slate:\n \"bg-slate-50 text-slate-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n gray: \"bg-gray-50 text-gray-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n indigo:\n \"bg-indigo-50 text-indigo-500 [&_.recharts-cartesian-axis-tick-value]:fill-slate-900\",\n \"gradient-cyan-violet\":\n \"bg-gradient-to-r from-cyan-500 to-violet-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-emerald-violet\":\n \"bg-gradient-to-r from-emerald-500 to-violet-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-amber-rose\":\n \"bg-gradient-to-r from-amber-500 to-rose-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-slate-gray\":\n \"bg-gradient-to-r from-slate-500 to-gray-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-indigo-purple\":\n \"bg-gradient-to-r from-indigo-500 to-purple-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-cyan-blue\":\n \"bg-gradient-to-r from-cyan-500 to-blue-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-emerald-blue\":\n \"bg-gradient-to-r from-emerald-500 to-blue-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n \"gradient-amber-blue\":\n \"bg-gradient-to-r from-amber-500 to-blue-500 text-white [&_.recharts-cartesian-axis-tick-value]:fill-white\",\n },\n density: {\n compact: \"p-2 sm:p-3\",\n comfortable: \"p-3 sm:p-4\",\n spacious: \"p-4 sm:p-5 md:p-6\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n density: \"comfortable\",\n },\n },\n);\n\nexport const chartPalette = {\n glass: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n outline: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n muted: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n default: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n sky: { stroke: \"#0f172a\", fill: \"#0f172a\", textColor: \"#0f172a\" },\n cyan: { stroke: \"#0891b2\", fill: \"#67e8f9\", textColor: \"#0891b2\" },\n emerald: { stroke: \"#059669\", fill: \"#6ee7b7\", textColor: \"#059669\" },\n violet: { stroke: \"#7c3aed\", fill: \"#c4b5fd\", textColor: \"#7c3aed\" },\n amber: { stroke: \"#d97706\", fill: \"#fcd34d\", textColor: \"#d97706\" },\n rose: { stroke: \"#e11d48\", fill: \"#fda4af\", textColor: \"#e11d48\" },\n slate: { stroke: \"#475569\", fill: \"#cbd5e1\", textColor: \"#475569\" },\n gray: { stroke: \"#6b7280\", fill: \"#d1d5db\", textColor: \"#6b7280\" },\n white: { stroke: \"#ffffff\", fill: \"#ffffff\", textColor: \"#ffffff\" },\n indigo: { stroke: \"#6366f1\", fill: \"#c7d2fe\", textColor: \"#6366f1\" },\n \"gradient-cyan-violet\": {\n stroke: \"#0891b2\",\n fill: \"#67e8f9\",\n textColor: \"#0891b2\",\n },\n \"gradient-emerald-violet\": {\n stroke: \"#059669\",\n fill: \"#6ee7b7\",\n textColor: \"#059669\",\n },\n \"gradient-amber-rose\": {\n stroke: \"#d97706\",\n fill: \"#fcd34d\",\n textColor: \"#d97706\",\n },\n \"gradient-slate-gray\": {\n stroke: \"#475569\",\n fill: \"#cbd5e1\",\n textColor: \"#475569\",\n },\n \"gradient-indigo-purple\": {\n stroke: \"#6366f1\",\n fill: \"#c7d2fe\",\n textColor: \"#6366f1\",\n },\n \"gradient-cyan-blue\": {\n stroke: \"#0891b2\",\n fill: \"#67e8f9\",\n textColor: \"#0891b2\",\n },\n \"gradient-emerald-blue\": {\n stroke: \"#059669\",\n fill: \"#6ee7b7\",\n textColor: \"#059669\",\n },\n \"gradient-amber-blue\": {\n stroke: \"#d97706\",\n fill: \"#fcd34d\",\n textColor: \"#d97706\",\n },\n} as const;\n\nexport const chartColorValues = Object.keys(chartPalette) as Array<\n keyof typeof chartPalette\n>;\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport { CartesianGrid, Legend, ResponsiveContainer, Tooltip } from \"recharts\";\n\nimport { cn } from \"../../lib/utils\";\nimport { chartVariants } from \"./variants\";\nimport { VariantProps } from \"class-variance-authority\";\n\n/** Chart-level props that may be forwarded from *Chart `...rest` and must not reach a DOM node. */\nconst CHART_ONLY_DIV_PROP_KEYS = new Set([\n \"data\",\n \"margin\",\n \"series\",\n \"showGrid\",\n \"showLegend\",\n \"showTooltip\",\n \"stacked\",\n \"strokeDasharray\",\n \"syncId\",\n \"tooltipColor\",\n \"xKey\",\n]);\n\nfunction filterDivProps(\n props: HTMLAttributes<HTMLDivElement>,\n): HTMLAttributes<HTMLDivElement> {\n const entries = Object.entries(props).filter(\n ([key]) => !CHART_ONLY_DIV_PROP_KEYS.has(key),\n );\n return Object.fromEntries(entries) as HTMLAttributes<HTMLDivElement>;\n}\n\ntype ChartFrameProps = HTMLAttributes<HTMLDivElement> & {\n appearance?: VariantProps<typeof chartVariants>[\"appearance\"];\n containerStyle?: CSSProperties;\n density?: \"compact\" | \"comfortable\" | \"spacious\" | null;\n emptyState?: ReactNode;\n hasData: boolean;\n height: number;\n style?: CSSProperties;\n children: ReactNode;\n};\n\nexport const defaultChartMargin = { top: 16, right: 16, bottom: 8, left: 0 };\n\nexport function ChartFrame({\n appearance,\n children,\n className,\n containerStyle,\n density,\n emptyState = null,\n hasData,\n height,\n style,\n ...props\n}: ChartFrameProps) {\n const divProps = filterDivProps(props);\n const chartStyle = {\n \"--chart-height\": `${height}px`,\n ...style,\n } as CSSProperties;\n\n if (!hasData) {\n return (\n <div\n className={cn(chartVariants({ appearance, density }), className)}\n style={chartStyle}\n {...divProps}\n >\n <div className=\"flex h-full min-h-48 items-center justify-center text-sm text-slate-500\">\n {emptyState}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(chartVariants({ appearance, density }), className)}\n style={chartStyle}\n {...divProps}\n >\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n debounce={80}\n style={containerStyle}\n >\n {children}\n </ResponsiveContainer>\n </div>\n );\n}\n\nexport function ChartDecorators({\n axis,\n showGrid,\n showLegend,\n showTooltip,\n tooltipColor = \"#0f172a\",\n}: {\n axis: ReactNode;\n showGrid: boolean;\n showLegend: boolean;\n showTooltip: boolean;\n tooltipColor?: string;\n}) {\n return (\n <>\n {showGrid ? (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"currentColor\"\n opacity={0.16}\n />\n ) : null}\n {axis}\n {showTooltip ? (\n <Tooltip\n cursor={{ opacity: 0.12 }}\n contentStyle={{ color: tooltipColor }}\n labelStyle={{ color: tooltipColor }}\n itemStyle={{ color: tooltipColor }}\n />\n ) : null}\n {showLegend ? <Legend /> : null}\n </>\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const buttonVariants: (props?: ({
|
|
2
|
-
appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "orange" | "pink" | "purple" | "teal" | "yellow" | "
|
|
2
|
+
appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "link" | "orange" | "pink" | "purple" | "teal" | "yellow" | "secondary" | "destructive" | "ghost" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
3
3
|
size?: "icon" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "10xl" | null | undefined;
|
|
4
4
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
5
|
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const Pagination: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, "ref">, "onChange"> & import("class-variance-authority").VariantProps<(props?: ({
|
|
2
|
-
appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "orange" | "pink" | "purple" | "teal" | "yellow" | "
|
|
2
|
+
appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "link" | "orange" | "pink" | "purple" | "teal" | "yellow" | "secondary" | "destructive" | "ghost" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
3
3
|
size?: "icon" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "10xl" | null | undefined;
|
|
4
4
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
5
5
|
pageCount: number;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `components/ui/buttons/variants.ts` for consistent design-system tokens.
|
|
4
4
|
*/
|
|
5
5
|
export declare const paginationListVariants: (props?: ({
|
|
6
|
-
appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "orange" | "pink" | "purple" | "teal" | "yellow" | "
|
|
6
|
+
appearance?: "default" | "outline" | "glass" | "sky" | "emerald" | "violet" | "amber" | "rose" | "gray" | "indigo" | "link" | "orange" | "pink" | "purple" | "teal" | "yellow" | "secondary" | "destructive" | "ghost" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
7
7
|
size?: "icon" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "10xl" | null | undefined;
|
|
8
8
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
9
|
export declare const paginationEllipsisVariants: (props?: ({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zentauri-ui/zentauri-components",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.21",
|
|
4
4
|
"description": "React + Tailwind UI kit with charts, ESM/CJS builds, per-entry exports, and a zentauri-components / zentauri-ui CLI to vendor UI or hook source into your app",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
package/src/charts/area/Area.tsx
CHANGED
package/src/charts/area/index.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
export { AreaChart } from "./Area";
|
|
4
|
-
export type {
|
|
4
|
+
export type {
|
|
5
|
+
AreaChartProps,
|
|
6
|
+
ChartColor,
|
|
7
|
+
ChartDatum,
|
|
8
|
+
ChartMargin,
|
|
9
|
+
ChartSeries,
|
|
10
|
+
ChartSharedStatic,
|
|
11
|
+
} from "../shared/types";
|
|
5
12
|
export {
|
|
6
13
|
chartColorValues,
|
|
7
14
|
chartPalette,
|
package/src/charts/bar/index.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
export { BarChart } from "./Bar";
|
|
4
|
-
export type {
|
|
4
|
+
export type {
|
|
5
|
+
BarChartProps,
|
|
6
|
+
ChartColor,
|
|
7
|
+
ChartDatum,
|
|
8
|
+
ChartMargin,
|
|
9
|
+
ChartSeries,
|
|
10
|
+
ChartSharedStatic,
|
|
11
|
+
} from "../shared/types";
|
|
5
12
|
export {
|
|
6
13
|
chartColorValues,
|
|
7
14
|
chartPalette,
|
|
@@ -59,7 +59,7 @@ export function BubbleChart<
|
|
|
59
59
|
<>
|
|
60
60
|
<XAxis
|
|
61
61
|
dataKey={xAxisKey}
|
|
62
|
-
type="number"
|
|
62
|
+
type={typeof data[0]?.[xAxisKey] === "number" ? "number" : "category"}
|
|
63
63
|
minTickGap={24}
|
|
64
64
|
tickLine={false}
|
|
65
65
|
tickMargin={10}
|
|
@@ -68,7 +68,7 @@ export function BubbleChart<
|
|
|
68
68
|
/>
|
|
69
69
|
<YAxis
|
|
70
70
|
dataKey="__chartY"
|
|
71
|
-
type="number"
|
|
71
|
+
type={typeof data[0]?.[xAxisKey] === "number" ? "number" : "category"}
|
|
72
72
|
width={40}
|
|
73
73
|
tickLine={false}
|
|
74
74
|
tickMargin={8}
|
|
@@ -94,14 +94,7 @@ export function BubbleChart<
|
|
|
94
94
|
}))}
|
|
95
95
|
name={item.name}
|
|
96
96
|
fill={item.fill ?? color.stroke}
|
|
97
|
-
|
|
98
|
-
{data.map((_entry, cellIndex) => (
|
|
99
|
-
<Bar
|
|
100
|
-
key={`${item.dataKey}-${cellIndex}`}
|
|
101
|
-
fill={item.fill ?? color.stroke}
|
|
102
|
-
/>
|
|
103
|
-
))}
|
|
104
|
-
</Scatter>
|
|
97
|
+
/>
|
|
105
98
|
);
|
|
106
99
|
})}
|
|
107
100
|
<ZAxis dataKey="__chartZ" range={[64, 720]} />
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
export { BubbleChart } from "./Bubble";
|
|
4
|
-
export type {
|
|
4
|
+
export type {
|
|
5
|
+
BubbleChartProps,
|
|
6
|
+
ChartColor,
|
|
7
|
+
ChartDatum,
|
|
8
|
+
ChartMargin,
|
|
9
|
+
ChartSeries,
|
|
10
|
+
ChartSharedStatic,
|
|
11
|
+
} from "../shared/types";
|
|
5
12
|
export {
|
|
6
13
|
chartColorValues,
|
|
7
14
|
chartPalette,
|
package/src/charts/line/index.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
export { LineChart } from "./Line";
|
|
4
|
-
export type {
|
|
4
|
+
export type {
|
|
5
|
+
ChartColor,
|
|
6
|
+
ChartDatum,
|
|
7
|
+
ChartMargin,
|
|
8
|
+
ChartSeries,
|
|
9
|
+
ChartSharedStatic,
|
|
10
|
+
LineChartProps,
|
|
11
|
+
} from "../shared/types";
|
|
5
12
|
export {
|
|
6
13
|
chartColorValues,
|
|
7
14
|
chartPalette,
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Legend,
|
|
5
|
+
Pie,
|
|
6
|
+
PieLabelRenderProps,
|
|
7
|
+
PieChart as RechartsPieChart,
|
|
8
|
+
Tooltip,
|
|
9
|
+
} from "recharts";
|
|
10
|
+
|
|
11
|
+
import { ChartFrame } from "../shared/chart-frame";
|
|
12
|
+
import type { PieChartProps } from "../shared/types";
|
|
13
|
+
|
|
14
|
+
const RADIAN = Math.PI / 180;
|
|
15
|
+
|
|
16
|
+
const renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }: PieLabelRenderProps) => {
|
|
17
|
+
if (cx == null || cy == null || innerRadius == null || outerRadius == null) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const radius = innerRadius + (outerRadius - innerRadius) * 0.5;
|
|
21
|
+
const ncx = Number(cx);
|
|
22
|
+
const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);
|
|
23
|
+
const ncy = Number(cy);
|
|
24
|
+
const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<text x={x} y={y} fill="white" textAnchor={x > ncx ? 'start' : 'end'} dominantBaseline="central">
|
|
28
|
+
{`${((percent ?? 0) * 100).toFixed(0)}%`}
|
|
29
|
+
</text>
|
|
30
|
+
);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const DEFAULT_COLORS = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042'];
|
|
34
|
+
|
|
35
|
+
export function PieChart<
|
|
36
|
+
TDatum extends Record<string, number | string | null | undefined>,
|
|
37
|
+
>({
|
|
38
|
+
appearance,
|
|
39
|
+
className,
|
|
40
|
+
containerStyle,
|
|
41
|
+
cornerRadius = 10,
|
|
42
|
+
data,
|
|
43
|
+
dataKey,
|
|
44
|
+
density,
|
|
45
|
+
emptyState = null,
|
|
46
|
+
height = 320,
|
|
47
|
+
label = false,
|
|
48
|
+
labelLine = false,
|
|
49
|
+
nameKey,
|
|
50
|
+
paddingAngle = 2,
|
|
51
|
+
showLegend = true,
|
|
52
|
+
showTooltip = true,
|
|
53
|
+
tooltipColor = "#0f172a",
|
|
54
|
+
stroke,
|
|
55
|
+
colors = DEFAULT_COLORS,
|
|
56
|
+
innerRadius,
|
|
57
|
+
outerRadius,
|
|
58
|
+
style,
|
|
59
|
+
...props
|
|
60
|
+
}: PieChartProps<TDatum>) {
|
|
61
|
+
const hasData = data.length > 0;
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<ChartFrame
|
|
65
|
+
appearance={appearance}
|
|
66
|
+
className={className}
|
|
67
|
+
containerStyle={containerStyle}
|
|
68
|
+
density={density}
|
|
69
|
+
emptyState={emptyState}
|
|
70
|
+
hasData={hasData}
|
|
71
|
+
height={height}
|
|
72
|
+
style={style}
|
|
73
|
+
{...props}
|
|
74
|
+
>
|
|
75
|
+
<RechartsPieChart>
|
|
76
|
+
{showTooltip ? (
|
|
77
|
+
<Tooltip
|
|
78
|
+
contentStyle={{ color: tooltipColor }}
|
|
79
|
+
labelStyle={{ color: tooltipColor }}
|
|
80
|
+
itemStyle={{ color: tooltipColor }}
|
|
81
|
+
/>
|
|
82
|
+
) : null}
|
|
83
|
+
{showLegend ? <Legend color="currentColor" /> : null}
|
|
84
|
+
<Pie
|
|
85
|
+
data={data}
|
|
86
|
+
dataKey={String(dataKey)}
|
|
87
|
+
nameKey={String(nameKey)}
|
|
88
|
+
innerRadius={innerRadius}
|
|
89
|
+
outerRadius={outerRadius}
|
|
90
|
+
paddingAngle={paddingAngle}
|
|
91
|
+
cornerRadius={cornerRadius}
|
|
92
|
+
labelLine={labelLine}
|
|
93
|
+
label={label ? renderCustomizedLabel : undefined}
|
|
94
|
+
stroke={stroke}
|
|
95
|
+
/>
|
|
96
|
+
</RechartsPieChart>
|
|
97
|
+
</ChartFrame>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
PieChart.displayName = "PieChart";
|
|
@@ -5,6 +5,30 @@ import { cn } from "../../lib/utils";
|
|
|
5
5
|
import { chartVariants } from "./variants";
|
|
6
6
|
import { VariantProps } from "class-variance-authority";
|
|
7
7
|
|
|
8
|
+
/** Chart-level props that may be forwarded from *Chart `...rest` and must not reach a DOM node. */
|
|
9
|
+
const CHART_ONLY_DIV_PROP_KEYS = new Set([
|
|
10
|
+
"data",
|
|
11
|
+
"margin",
|
|
12
|
+
"series",
|
|
13
|
+
"showGrid",
|
|
14
|
+
"showLegend",
|
|
15
|
+
"showTooltip",
|
|
16
|
+
"stacked",
|
|
17
|
+
"strokeDasharray",
|
|
18
|
+
"syncId",
|
|
19
|
+
"tooltipColor",
|
|
20
|
+
"xKey",
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
function filterDivProps(
|
|
24
|
+
props: HTMLAttributes<HTMLDivElement>,
|
|
25
|
+
): HTMLAttributes<HTMLDivElement> {
|
|
26
|
+
const entries = Object.entries(props).filter(
|
|
27
|
+
([key]) => !CHART_ONLY_DIV_PROP_KEYS.has(key),
|
|
28
|
+
);
|
|
29
|
+
return Object.fromEntries(entries) as HTMLAttributes<HTMLDivElement>;
|
|
30
|
+
}
|
|
31
|
+
|
|
8
32
|
type ChartFrameProps = HTMLAttributes<HTMLDivElement> & {
|
|
9
33
|
appearance?: VariantProps<typeof chartVariants>["appearance"];
|
|
10
34
|
containerStyle?: CSSProperties;
|
|
@@ -12,9 +36,6 @@ type ChartFrameProps = HTMLAttributes<HTMLDivElement> & {
|
|
|
12
36
|
emptyState?: ReactNode;
|
|
13
37
|
hasData: boolean;
|
|
14
38
|
height: number;
|
|
15
|
-
showGrid?: boolean;
|
|
16
|
-
showLegend?: boolean;
|
|
17
|
-
showTooltip?: boolean;
|
|
18
39
|
style?: CSSProperties;
|
|
19
40
|
children: ReactNode;
|
|
20
41
|
};
|
|
@@ -33,6 +54,7 @@ export function ChartFrame({
|
|
|
33
54
|
style,
|
|
34
55
|
...props
|
|
35
56
|
}: ChartFrameProps) {
|
|
57
|
+
const divProps = filterDivProps(props);
|
|
36
58
|
const chartStyle = {
|
|
37
59
|
"--chart-height": `${height}px`,
|
|
38
60
|
...style,
|
|
@@ -43,7 +65,7 @@ export function ChartFrame({
|
|
|
43
65
|
<div
|
|
44
66
|
className={cn(chartVariants({ appearance, density }), className)}
|
|
45
67
|
style={chartStyle}
|
|
46
|
-
{...
|
|
68
|
+
{...divProps}
|
|
47
69
|
>
|
|
48
70
|
<div className="flex h-full min-h-48 items-center justify-center text-sm text-slate-500">
|
|
49
71
|
{emptyState}
|
|
@@ -56,7 +78,7 @@ export function ChartFrame({
|
|
|
56
78
|
<div
|
|
57
79
|
className={cn(chartVariants({ appearance, density }), className)}
|
|
58
80
|
style={chartStyle}
|
|
59
|
-
{...
|
|
81
|
+
{...divProps}
|
|
60
82
|
>
|
|
61
83
|
<ResponsiveContainer
|
|
62
84
|
width="100%"
|
|
@@ -3,7 +3,7 @@ import type { CSSProperties, HTMLAttributes, ReactNode } from "react";
|
|
|
3
3
|
|
|
4
4
|
import type { chartPalette, chartVariants } from "./variants";
|
|
5
5
|
|
|
6
|
-
export type ChartType = "area" | "bar" | "bubble" | "line";
|
|
6
|
+
export type ChartType = "area" | "bar" | "bubble" | "line" | "pie";
|
|
7
7
|
|
|
8
8
|
export type ChartColor = keyof typeof chartPalette;
|
|
9
9
|
|
|
@@ -58,3 +58,25 @@ export type LineChartProps<TDatum extends ChartDatum = ChartDatum> =
|
|
|
58
58
|
|
|
59
59
|
export type BubbleChartProps<TDatum extends ChartDatum = ChartDatum> =
|
|
60
60
|
BaseChartProps<TDatum>;
|
|
61
|
+
|
|
62
|
+
export type PieChartProps<TDatum extends ChartDatum = ChartDatum> =
|
|
63
|
+
ChartSharedStatic &
|
|
64
|
+
Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
65
|
+
data: TDatum[];
|
|
66
|
+
dataKey: keyof TDatum & string;
|
|
67
|
+
nameKey: keyof TDatum & string;
|
|
68
|
+
height?: number;
|
|
69
|
+
showLegend?: boolean;
|
|
70
|
+
showTooltip?: boolean;
|
|
71
|
+
tooltipColor?: string;
|
|
72
|
+
emptyState?: ReactNode;
|
|
73
|
+
containerStyle?: CSSProperties;
|
|
74
|
+
paddingAngle?: number;
|
|
75
|
+
cornerRadius?: number;
|
|
76
|
+
label?: boolean;
|
|
77
|
+
labelLine?: boolean;
|
|
78
|
+
stroke?: string;
|
|
79
|
+
colors?: string[];
|
|
80
|
+
innerRadius?: number | string;
|
|
81
|
+
outerRadius?: number | string;
|
|
82
|
+
};
|