@schemavaults/ui 0.41.1 → 0.43.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.
@@ -0,0 +1,73 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import type { HTMLAttributes, ReactElement, ReactNode } from "react";
3
+ export declare const gaugeSizeIds: readonly ["sm", "default", "lg", "xl"];
4
+ export type GaugeSizeId = (typeof gaugeSizeIds)[number];
5
+ export declare const gaugeColorIds: readonly ["default", "positive", "warning", "destructive"];
6
+ export type GaugeColorId = (typeof gaugeColorIds)[number];
7
+ export declare const gaugeVariants: (props?: ({
8
+ size?: "sm" | "default" | "lg" | "xl" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export declare const gaugeIndicatorVariants: (props?: ({
11
+ color?: "default" | "destructive" | "warning" | "positive" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ export declare const gaugeValueLabelVariants: (props?: ({
14
+ size?: "sm" | "default" | "lg" | "xl" | null | undefined;
15
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
+ /**
17
+ * A single color zone painted along the gauge arc.
18
+ *
19
+ * Zones are rendered in order, each filling the portion of the arc between
20
+ * `from` and `to` (both expressed in the gauge's value space, not as
21
+ * percentages — they are normalized against the gauge's `min`/`max`).
22
+ */
23
+ export interface GaugeZone {
24
+ /** Start of the zone, in the gauge's value space. */
25
+ from: number;
26
+ /** End of the zone, in the gauge's value space. */
27
+ to: number;
28
+ /** One of the standard gauge colors. */
29
+ color: GaugeColorId;
30
+ }
31
+ export interface GaugeProps extends Omit<HTMLAttributes<HTMLDivElement>, "role" | "color">, VariantProps<typeof gaugeVariants>, VariantProps<typeof gaugeIndicatorVariants> {
32
+ /** Current value (clamped to [min, max]). */
33
+ value: number;
34
+ /** Accessible label describing what the gauge represents. */
35
+ label: string;
36
+ /** Minimum value (defaults to 0). */
37
+ min?: number;
38
+ /** Maximum value (defaults to 100). */
39
+ max?: number;
40
+ /** Override the SVG stroke width. Defaults are size-aware. */
41
+ strokeWidth?: number;
42
+ /** When true (default), shows the numeric value below the arc. */
43
+ showValue?: boolean;
44
+ /** When true, render min/max tick labels below the arc endpoints. */
45
+ showRange?: boolean;
46
+ /**
47
+ * Optional color zones rendered behind the indicator. Use to highlight
48
+ * acceptable / warning / danger ranges (e.g. CPU thresholds).
49
+ */
50
+ zones?: ReadonlyArray<GaugeZone>;
51
+ /**
52
+ * When true and `zones` is provided, the indicator + value label color is
53
+ * automatically chosen from whichever zone contains the current value,
54
+ * overriding the `color` prop.
55
+ */
56
+ autoColorFromZones?: boolean;
57
+ /** When true (default), render a needle indicator on top of the arc. */
58
+ showNeedle?: boolean;
59
+ /** When provided, displayed beneath the value (e.g. "ms", "%", "req/s"). */
60
+ unit?: string;
61
+ /** Custom content rendered beneath the arc, replacing the default value display. */
62
+ children?: ReactNode;
63
+ /** Additional classes for the indicator (animated) arc. */
64
+ indicatorClassName?: string;
65
+ /** Additional classes for the track (background) arc. */
66
+ trackClassName?: string;
67
+ /** Additional classes for the value label. */
68
+ valueLabelClassName?: string;
69
+ }
70
+ export declare function Gauge({ value, label, min, max, size, color, strokeWidth, showValue, showRange, showNeedle, zones, autoColorFromZones, unit, children, className, indicatorClassName, trackClassName, valueLabelClassName, ...props }: GaugeProps): ReactElement;
71
+ export declare namespace Gauge {
72
+ var displayName: string;
73
+ }
@@ -0,0 +1,134 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { m } from "../../../framer-motion";
5
+ import { cn } from "../../../lib/utils";
6
+ export const gaugeSizeIds = ["sm", "default", "lg", "xl"];
7
+ export const gaugeColorIds = [
8
+ "default",
9
+ "positive",
10
+ "warning",
11
+ "destructive",
12
+ ];
13
+ export const gaugeVariants = cva("relative inline-flex shrink-0 flex-col items-center justify-end", {
14
+ variants: {
15
+ size: {
16
+ sm: "w-32",
17
+ default: "w-48",
18
+ lg: "w-64",
19
+ xl: "w-80",
20
+ },
21
+ },
22
+ defaultVariants: {
23
+ size: "default",
24
+ },
25
+ });
26
+ export const gaugeIndicatorVariants = cva("transition-colors duration-300", {
27
+ variants: {
28
+ color: {
29
+ default: "stroke-schemavaults-brand-blue",
30
+ positive: "stroke-emerald-500 dark:stroke-emerald-400",
31
+ warning: "stroke-warning",
32
+ destructive: "stroke-destructive",
33
+ },
34
+ },
35
+ defaultVariants: {
36
+ color: "default",
37
+ },
38
+ });
39
+ const gaugeNeedleVariants = cva("transition-colors duration-300", {
40
+ variants: {
41
+ color: {
42
+ default: "fill-foreground stroke-foreground",
43
+ positive: "fill-emerald-500 stroke-emerald-500 dark:fill-emerald-400 dark:stroke-emerald-400",
44
+ warning: "fill-warning stroke-warning",
45
+ destructive: "fill-destructive stroke-destructive",
46
+ },
47
+ },
48
+ defaultVariants: {
49
+ color: "default",
50
+ },
51
+ });
52
+ export const gaugeValueLabelVariants = cva("font-semibold tabular-nums leading-none text-foreground", {
53
+ variants: {
54
+ size: {
55
+ sm: "text-base",
56
+ default: "text-2xl",
57
+ lg: "text-3xl",
58
+ xl: "text-4xl",
59
+ },
60
+ },
61
+ defaultVariants: {
62
+ size: "default",
63
+ },
64
+ });
65
+ const SIZE_TO_STROKE_WIDTH = {
66
+ sm: 12,
67
+ default: 14,
68
+ lg: 16,
69
+ xl: 18,
70
+ };
71
+ const VIEWBOX_WIDTH = 200;
72
+ const ARC_RADIUS = 80;
73
+ const ARC_CENTER_X = 100;
74
+ const ARC_CENTER_Y = 100;
75
+ const ARC_START_X = ARC_CENTER_X - ARC_RADIUS;
76
+ const ARC_END_X = ARC_CENTER_X + ARC_RADIUS;
77
+ const ARC_PATH = `M ${ARC_START_X} ${ARC_CENTER_Y} A ${ARC_RADIUS} ${ARC_RADIUS} 0 0 1 ${ARC_END_X} ${ARC_CENTER_Y}`;
78
+ const ZONE_STROKE_CLASSES = {
79
+ default: "stroke-schemavaults-brand-blue/60",
80
+ positive: "stroke-emerald-500/60 dark:stroke-emerald-400/60",
81
+ warning: "stroke-warning/70",
82
+ destructive: "stroke-destructive/60",
83
+ };
84
+ function clampValue(value, min, max) {
85
+ return Math.min(max, Math.max(min, value));
86
+ }
87
+ function valueToPercentage(value, min, max) {
88
+ if (max === min) {
89
+ return 0;
90
+ }
91
+ return ((value - min) / (max - min)) * 100;
92
+ }
93
+ function valueToNeedleAngle(percentage) {
94
+ // Map 0% → -90deg (pointing left) and 100% → +90deg (pointing right),
95
+ // so the needle rotates through the top of the dial.
96
+ return -90 + (percentage / 100) * 180;
97
+ }
98
+ function resolveAutoColor(value, zones, fallback) {
99
+ if (!zones || zones.length === 0) {
100
+ return fallback;
101
+ }
102
+ for (const zone of zones) {
103
+ const lo = Math.min(zone.from, zone.to);
104
+ const hi = Math.max(zone.from, zone.to);
105
+ if (value >= lo && value <= hi) {
106
+ return zone.color;
107
+ }
108
+ }
109
+ return fallback;
110
+ }
111
+ export function Gauge({ value, label, min = 0, max = 100, size, color, strokeWidth, showValue = true, showRange = false, showNeedle = true, zones, autoColorFromZones = false, unit, children, className, indicatorClassName, trackClassName, valueLabelClassName, ...props }) {
112
+ const resolvedSize = size ?? "default";
113
+ const resolvedStrokeWidth = strokeWidth ?? SIZE_TO_STROKE_WIDTH[resolvedSize];
114
+ const clamped = clampValue(value, min, max);
115
+ const percentage = valueToPercentage(clamped, min, max);
116
+ const fallbackColor = color ?? "default";
117
+ const indicatorColor = autoColorFromZones
118
+ ? resolveAutoColor(clamped, zones, fallbackColor)
119
+ : fallbackColor;
120
+ const needleAngle = valueToNeedleAngle(percentage);
121
+ return (_jsxs("div", { role: "meter", "aria-valuenow": clamped, "aria-valuemin": min, "aria-valuemax": max, "aria-label": label, className: cn(gaugeVariants({ size }), className), ...props, children: [_jsxs("svg", { viewBox: `0 0 ${VIEWBOX_WIDTH} ${ARC_CENTER_Y + resolvedStrokeWidth + 4}`, className: "w-full", "aria-hidden": "true", children: [_jsx("path", { d: ARC_PATH, fill: "none", strokeWidth: resolvedStrokeWidth, strokeLinecap: "round", className: cn("stroke-secondary", trackClassName), pathLength: 1 }), zones?.map((zone, index) => {
122
+ const zoneLo = clampValue(Math.min(zone.from, zone.to), min, max);
123
+ const zoneHi = clampValue(Math.max(zone.from, zone.to), min, max);
124
+ const startPct = valueToPercentage(zoneLo, min, max) / 100;
125
+ const endPct = valueToPercentage(zoneHi, min, max) / 100;
126
+ const span = Math.max(0, endPct - startPct);
127
+ if (span === 0) {
128
+ return null;
129
+ }
130
+ return (_jsx("path", { d: ARC_PATH, fill: "none", strokeWidth: resolvedStrokeWidth, strokeLinecap: "butt", pathLength: 1, strokeDasharray: `${span} ${1 - span}`, strokeDashoffset: -startPct, className: ZONE_STROKE_CLASSES[zone.color] }, `zone-${index.toString()}`));
131
+ }), _jsx(m.path, { d: ARC_PATH, fill: "none", strokeWidth: resolvedStrokeWidth, strokeLinecap: "round", pathLength: 1, strokeDasharray: 1, initial: { strokeDashoffset: 1 }, animate: { strokeDashoffset: 1 - percentage / 100 }, transition: { duration: 0.5, ease: "easeOut" }, className: cn(gaugeIndicatorVariants({ color: indicatorColor }), indicatorClassName) }), showNeedle && (_jsxs(m.g, { initial: { rotate: valueToNeedleAngle(0) }, animate: { rotate: needleAngle }, transition: { duration: 0.5, ease: "easeOut" }, style: { transformOrigin: `${ARC_CENTER_X}px ${ARC_CENTER_Y}px` }, children: [_jsx("line", { x1: ARC_CENTER_X, y1: ARC_CENTER_Y, x2: ARC_CENTER_X, y2: ARC_CENTER_Y - (ARC_RADIUS - resolvedStrokeWidth / 2 - 2), strokeWidth: 3, strokeLinecap: "round", className: gaugeNeedleVariants({ color: indicatorColor }) }), _jsx("circle", { cx: ARC_CENTER_X, cy: ARC_CENTER_Y, r: 6, className: cn(gaugeNeedleVariants({ color: indicatorColor }), "stroke-background"), strokeWidth: 2 })] }))] }), showRange && (_jsxs("div", { className: "flex w-[88%] justify-between text-xs tabular-nums text-muted-foreground -mt-1", children: [_jsx("span", { children: min }), _jsx("span", { children: max })] })), (children || showValue) && (_jsx("div", { className: cn("mt-1 flex flex-col items-center gap-0.5", valueLabelClassName), children: children ?? (_jsxs(_Fragment, { children: [_jsx("span", { className: gaugeValueLabelVariants({ size: resolvedSize }), children: Math.round(clamped) }), unit && (_jsx("span", { className: "text-xs uppercase tracking-wide text-muted-foreground", children: unit }))] })) }))] }));
132
+ }
133
+ Gauge.displayName = "Gauge";
134
+ //# sourceMappingURL=gauge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauge.js","sourceRoot":"","sources":["../../../../src/components/ui/gauge/gauge.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { Gauge, gaugeVariants, gaugeIndicatorVariants, gaugeValueLabelVariants, gaugeSizeIds, gaugeColorIds, } from "./gauge";
2
+ export type * from "./gauge";
3
+ export { Gauge as default } from "./gauge";
@@ -0,0 +1,3 @@
1
+ export { Gauge, gaugeVariants, gaugeIndicatorVariants, gaugeValueLabelVariants, gaugeSizeIds, gaugeColorIds, } from "./gauge";
2
+ export { Gauge as default } from "./gauge";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/gauge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC"}
@@ -104,6 +104,8 @@ export * from "./progress-bar";
104
104
  export type * from "./progress-bar";
105
105
  export * from "./circular-progress";
106
106
  export type * from "./circular-progress";
107
+ export * from "./gauge";
108
+ export type * from "./gauge";
107
109
  export * from "./breadcrumb";
108
110
  export type * from "./breadcrumb";
109
111
  export * from "./pagination";
@@ -148,3 +150,5 @@ export * from "./color-swatch";
148
150
  export type * from "./color-swatch";
149
151
  export * from "./calendar-heatmap";
150
152
  export type * from "./calendar-heatmap";
153
+ export * from "./pie-chart";
154
+ export type * from "./pie-chart";
@@ -51,6 +51,7 @@ export * from "./slider";
51
51
  export * from "./switch";
52
52
  export * from "./progress-bar";
53
53
  export * from "./circular-progress";
54
+ export * from "./gauge";
54
55
  export * from "./breadcrumb";
55
56
  export * from "./pagination";
56
57
  export * from "./kbd";
@@ -73,4 +74,5 @@ export * from "./sparkline";
73
74
  export * from "./aspect-ratio";
74
75
  export * from "./color-swatch";
75
76
  export * from "./calendar-heatmap";
77
+ export * from "./pie-chart";
76
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { PieChart, pieChartVariants, pieChartSizeIds, pieChartSegmentColorIds, } from "./pie-chart";
2
+ export type * from "./pie-chart";
3
+ export { PieChart as default } from "./pie-chart";
@@ -0,0 +1,3 @@
1
+ export { PieChart, pieChartVariants, pieChartSizeIds, pieChartSegmentColorIds, } from "./pie-chart";
2
+ export { PieChart as default } from "./pie-chart";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/pie-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import type { HTMLAttributes, KeyboardEvent, MouseEvent, ReactElement, ReactNode, Ref } from "react";
3
+ export declare const pieChartSizeIds: ["sm", "md", "lg", "xl"];
4
+ export type PieChartSizeId = (typeof pieChartSizeIds)[number];
5
+ export declare const pieChartSegmentColorIds: ["default", "primary", "positive", "warning", "destructive", "muted"];
6
+ export type PieChartSegmentColorId = (typeof pieChartSegmentColorIds)[number];
7
+ export declare const pieChartVariants: (props?: ({
8
+ size?: "sm" | "lg" | "xl" | "md" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export interface PieChartSegment {
11
+ /** Stable identifier for the segment. Used as React key and click payload. */
12
+ id: string;
13
+ /**
14
+ * Relative size of the segment. Segment angle is `value / sum(values)`.
15
+ * Non-positive values are skipped.
16
+ */
17
+ value: number;
18
+ /** Optional human-readable label exposed via `aria-label` and tooltips. */
19
+ label?: string;
20
+ /** Preset color id from the chart palette. Ignored if `fill` is provided. */
21
+ color?: PieChartSegmentColorId;
22
+ /**
23
+ * Override the fill with a raw CSS color (e.g. `"#ff0080"` or
24
+ * `"hsl(var(--chart-1))"`). Takes precedence over `color`.
25
+ */
26
+ fill?: string;
27
+ /** Extra classes applied to this segment's `<path>`. */
28
+ className?: string;
29
+ /** Fired when this segment is clicked or activated via keyboard. */
30
+ onClick?: (segment: PieChartSegment, event: MouseEvent<SVGPathElement> | KeyboardEvent<SVGPathElement>) => void;
31
+ }
32
+ export interface PieChartProps extends Omit<HTMLAttributes<HTMLDivElement>, "onClick">, VariantProps<typeof pieChartVariants> {
33
+ /** Segments to render, in order (clockwise from 12 o'clock). */
34
+ segments: ReadonlyArray<PieChartSegment>;
35
+ /** Accessible label describing what the chart represents. */
36
+ label: string;
37
+ /**
38
+ * Inner radius as a fraction of the outer radius (0–1). `0` is a solid pie,
39
+ * values like `0.55` produce a donut. Defaults to `0`.
40
+ */
41
+ innerRadius?: number;
42
+ /** Override the rendered diameter in pixels (defaults are size-aware). */
43
+ diameter?: number;
44
+ /**
45
+ * Width of the divider stroke between segments. Defaults to `1`. Set to `0`
46
+ * to remove the divider.
47
+ */
48
+ segmentGap?: number;
49
+ /**
50
+ * Fallback handler invoked for any segment that doesn't have its own
51
+ * `onClick`. Receives the clicked segment.
52
+ */
53
+ onSegmentClick?: (segment: PieChartSegment, event: MouseEvent<SVGPathElement> | KeyboardEvent<SVGPathElement>) => void;
54
+ /** Optional content rendered in the center of the chart (useful for donuts). */
55
+ children?: ReactNode;
56
+ /** Extra classes for the centered content wrapper. */
57
+ centerClassName?: string;
58
+ /**
59
+ * When true, renders each segment's `label` inside the slice. Use
60
+ * `segmentLabelFormatter` to customize the displayed string (e.g. show a
61
+ * percentage instead of the raw label).
62
+ */
63
+ showSegmentLabels?: boolean;
64
+ /**
65
+ * Customize the in-segment label text. Return `null` to skip a segment.
66
+ * Defaults to `segment.label ?? segment.id`.
67
+ */
68
+ segmentLabelFormatter?: (params: {
69
+ segment: PieChartSegment;
70
+ value: number;
71
+ /** Share of the total, in the range 0–1. */
72
+ fraction: number;
73
+ /** Share of the total, in the range 0–100. */
74
+ percentage: number;
75
+ index: number;
76
+ }) => string | null;
77
+ /**
78
+ * Minimum segment sweep (in radians) required to render its label. Smaller
79
+ * segments are skipped to avoid overlap. Defaults to ~11.5° (0.2 rad).
80
+ */
81
+ minSegmentLabelAngle?: number;
82
+ /** Extra classes applied to every segment-label `<text>` element. */
83
+ segmentLabelClassName?: string;
84
+ /** Optional ref forwarded to the wrapper element. */
85
+ ref?: Ref<HTMLDivElement>;
86
+ }
87
+ declare function PieChart({ segments, label, size, innerRadius, diameter, segmentGap, onSegmentClick, children, className, centerClassName, showSegmentLabels, segmentLabelFormatter, minSegmentLabelAngle, segmentLabelClassName, ref, ...props }: PieChartProps): ReactElement;
88
+ declare namespace PieChart {
89
+ var displayName: string;
90
+ }
91
+ export { PieChart };
@@ -0,0 +1,192 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { useId } from "react";
5
+ import { cn } from "../../../lib/utils";
6
+ export const pieChartSizeIds = [
7
+ "sm",
8
+ "md",
9
+ "lg",
10
+ "xl",
11
+ ];
12
+ export const pieChartSegmentColorIds = [
13
+ "default",
14
+ "primary",
15
+ "positive",
16
+ "warning",
17
+ "destructive",
18
+ "muted",
19
+ ];
20
+ const SIZE_TO_PIXELS = {
21
+ sm: 96,
22
+ md: 160,
23
+ lg: 224,
24
+ xl: 320,
25
+ };
26
+ const SEGMENT_FILL_CLASSES = {
27
+ default: "fill-schemavaults-brand-blue",
28
+ primary: "fill-primary",
29
+ positive: "fill-emerald-500 dark:fill-emerald-400",
30
+ warning: "fill-warning",
31
+ destructive: "fill-destructive",
32
+ muted: "fill-muted-foreground",
33
+ };
34
+ /**
35
+ * Fallback color rotation when a segment doesn't specify its own color. Index
36
+ * is the segment position in the input array, modulo the palette length.
37
+ */
38
+ const DEFAULT_COLOR_ROTATION = [
39
+ "default",
40
+ "positive",
41
+ "warning",
42
+ "destructive",
43
+ "primary",
44
+ "muted",
45
+ ];
46
+ export const pieChartVariants = cva("relative inline-flex shrink-0 items-center justify-center", {
47
+ variants: {
48
+ size: {
49
+ sm: "h-24 w-24",
50
+ md: "h-40 w-40",
51
+ lg: "h-56 w-56",
52
+ xl: "h-80 w-80",
53
+ },
54
+ },
55
+ defaultVariants: {
56
+ size: "md",
57
+ },
58
+ });
59
+ /** Convert a polar coordinate (angle in radians, measured from 12 o'clock,
60
+ * clockwise) into an SVG cartesian point. */
61
+ function polarToCartesian(cx, cy, radius, angle) {
62
+ // -π/2 rotates so 0 rad sits at the top of the circle.
63
+ const a = angle - Math.PI / 2;
64
+ return [cx + radius * Math.cos(a), cy + radius * Math.sin(a)];
65
+ }
66
+ function buildSegmentPath(cx, cy, outerRadius, innerRadius, startAngle, endAngle) {
67
+ const sweep = endAngle - startAngle;
68
+ const largeArc = sweep > Math.PI ? 1 : 0;
69
+ // Full-circle case: SVG arcs can't span 360°, so render as two half-arcs
70
+ // (or two annular halves for the donut case).
71
+ if (sweep >= Math.PI * 2 - 1e-6) {
72
+ const [oTopX, oTopY] = polarToCartesian(cx, cy, outerRadius, 0);
73
+ const [oBotX, oBotY] = polarToCartesian(cx, cy, outerRadius, Math.PI);
74
+ if (innerRadius <= 0) {
75
+ return [
76
+ `M ${oTopX} ${oTopY}`,
77
+ `A ${outerRadius} ${outerRadius} 0 1 1 ${oBotX} ${oBotY}`,
78
+ `A ${outerRadius} ${outerRadius} 0 1 1 ${oTopX} ${oTopY}`,
79
+ "Z",
80
+ ].join(" ");
81
+ }
82
+ const [iTopX, iTopY] = polarToCartesian(cx, cy, innerRadius, 0);
83
+ const [iBotX, iBotY] = polarToCartesian(cx, cy, innerRadius, Math.PI);
84
+ return [
85
+ `M ${oTopX} ${oTopY}`,
86
+ `A ${outerRadius} ${outerRadius} 0 1 1 ${oBotX} ${oBotY}`,
87
+ `A ${outerRadius} ${outerRadius} 0 1 1 ${oTopX} ${oTopY}`,
88
+ `M ${iTopX} ${iTopY}`,
89
+ `A ${innerRadius} ${innerRadius} 0 1 0 ${iBotX} ${iBotY}`,
90
+ `A ${innerRadius} ${innerRadius} 0 1 0 ${iTopX} ${iTopY}`,
91
+ "Z",
92
+ ].join(" ");
93
+ }
94
+ const [oStartX, oStartY] = polarToCartesian(cx, cy, outerRadius, startAngle);
95
+ const [oEndX, oEndY] = polarToCartesian(cx, cy, outerRadius, endAngle);
96
+ if (innerRadius <= 0) {
97
+ return [
98
+ `M ${cx} ${cy}`,
99
+ `L ${oStartX} ${oStartY}`,
100
+ `A ${outerRadius} ${outerRadius} 0 ${largeArc} 1 ${oEndX} ${oEndY}`,
101
+ "Z",
102
+ ].join(" ");
103
+ }
104
+ const [iStartX, iStartY] = polarToCartesian(cx, cy, innerRadius, endAngle);
105
+ const [iEndX, iEndY] = polarToCartesian(cx, cy, innerRadius, startAngle);
106
+ return [
107
+ `M ${oStartX} ${oStartY}`,
108
+ `A ${outerRadius} ${outerRadius} 0 ${largeArc} 1 ${oEndX} ${oEndY}`,
109
+ `L ${iStartX} ${iStartY}`,
110
+ `A ${innerRadius} ${innerRadius} 0 ${largeArc} 0 ${iEndX} ${iEndY}`,
111
+ "Z",
112
+ ].join(" ");
113
+ }
114
+ function PieChart({ segments, label, size, innerRadius, diameter, segmentGap = 1, onSegmentClick, children, className, centerClassName, showSegmentLabels = false, segmentLabelFormatter, minSegmentLabelAngle = 0.2, segmentLabelClassName, ref, ...props }) {
115
+ const resolvedSize = size ?? "md";
116
+ const pixelSize = diameter ?? SIZE_TO_PIXELS[resolvedSize];
117
+ const cx = pixelSize / 2;
118
+ const cy = pixelSize / 2;
119
+ const outerRadius = pixelSize / 2;
120
+ const innerR = Math.max(0, Math.min(0.95, innerRadius ?? 0) * outerRadius);
121
+ const titleId = useId();
122
+ const validSegments = segments.filter((s) => s.value > 0 && Number.isFinite(s.value));
123
+ const total = validSegments.reduce((acc, s) => acc + s.value, 0);
124
+ const resolved = (() => {
125
+ if (total <= 0)
126
+ return [];
127
+ let angle = 0;
128
+ return validSegments.map((segment, index) => {
129
+ const sweep = (segment.value / total) * Math.PI * 2;
130
+ const startAngle = angle;
131
+ const endAngle = angle + sweep;
132
+ angle = endAngle;
133
+ const presetColor = segment.color ??
134
+ DEFAULT_COLOR_ROTATION[index % DEFAULT_COLOR_ROTATION.length];
135
+ const fillClass = segment.fill
136
+ ? undefined
137
+ : SEGMENT_FILL_CLASSES[presetColor];
138
+ return {
139
+ segment,
140
+ startAngle,
141
+ endAngle,
142
+ fillClass,
143
+ fill: segment.fill,
144
+ };
145
+ });
146
+ })();
147
+ return (_jsxs("div", { ref: ref, role: "img", "aria-labelledby": titleId, "data-slot": "pie-chart", className: cn(pieChartVariants({ size }), className), style: { width: pixelSize, height: pixelSize }, ...props, children: [_jsxs("svg", { width: pixelSize, height: pixelSize, viewBox: `0 0 ${pixelSize} ${pixelSize}`, "aria-hidden": children ? "true" : undefined, className: "h-full w-full overflow-visible", children: [_jsx("title", { id: titleId, children: label }), resolved.length === 0 ? (_jsx("circle", { cx: cx, cy: cy, r: outerRadius, className: "fill-muted/40 dark:fill-muted/30" })) : (resolved.map(({ segment, startAngle, endAngle, fillClass, fill }) => {
148
+ const d = buildSegmentPath(cx, cy, outerRadius, innerR, startAngle, endAngle);
149
+ const handler = segment.onClick ?? onSegmentClick;
150
+ const isInteractive = typeof handler === "function";
151
+ return (_jsx("path", { d: d, fill: fill, stroke: "hsl(var(--background))", strokeWidth: segmentGap, strokeLinejoin: "round", "data-segment-id": segment.id, role: isInteractive ? "button" : undefined, tabIndex: isInteractive ? 0 : undefined, "aria-label": segment.label ?? segment.id, onClick: isInteractive
152
+ ? (event) => {
153
+ handler(segment, event);
154
+ }
155
+ : undefined, onKeyDown: isInteractive
156
+ ? (event) => {
157
+ if (event.key === "Enter" || event.key === " ") {
158
+ event.preventDefault();
159
+ handler(segment, event);
160
+ }
161
+ }
162
+ : undefined, className: cn("transition-opacity", fillClass, isInteractive &&
163
+ "cursor-pointer hover:opacity-80 focus:outline-none focus-visible:opacity-80", segment.className) }, segment.id));
164
+ })), showSegmentLabels && resolved.length > 0 ? (_jsx("g", { "aria-hidden": "true", "data-slot": "pie-chart-segment-labels", className: "pointer-events-none select-none", children: resolved.map(({ segment, startAngle, endAngle }, index) => {
165
+ const sweep = endAngle - startAngle;
166
+ if (sweep < minSegmentLabelAngle)
167
+ return null;
168
+ const value = segment.value;
169
+ const fraction = value / total;
170
+ const percentage = fraction * 100;
171
+ const text = segmentLabelFormatter
172
+ ? segmentLabelFormatter({
173
+ segment,
174
+ value,
175
+ fraction,
176
+ percentage,
177
+ index,
178
+ })
179
+ : (segment.label ?? segment.id);
180
+ if (text === null || text === "")
181
+ return null;
182
+ const midAngle = (startAngle + endAngle) / 2;
183
+ const labelRadius = innerR > 0
184
+ ? (innerR + outerRadius) / 2
185
+ : outerRadius * 0.65;
186
+ const [lx, ly] = polarToCartesian(cx, cy, labelRadius, midAngle);
187
+ return (_jsx("text", { x: lx, y: ly, textAnchor: "middle", dominantBaseline: "central", className: cn("fill-white text-[11px] font-medium [paint-order:stroke] [stroke:rgba(0,0,0,0.35)] [stroke-width:2px]", segmentLabelClassName), children: text }, `${segment.id}-label`));
188
+ }) })) : null] }), children ? (_jsx("div", { className: cn("pointer-events-none absolute inset-0 flex items-center justify-center text-center", centerClassName), children: children })) : null] }));
189
+ }
190
+ PieChart.displayName = "PieChart";
191
+ export { PieChart };
192
+ //# sourceMappingURL=pie-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pie-chart.js","sourceRoot":"","sources":["../../../../src/components/ui/pie-chart/pie-chart.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/ui",
3
- "version": "0.41.1",
3
+ "version": "0.43.0",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "description": "React.js UI components for SchemaVaults frontend applications",