@schemavaults/ui 0.30.1 → 0.31.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.
@@ -0,0 +1,41 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import type { ReactElement, ReactNode, HTMLAttributes } from "react";
3
+ export declare const circularProgressVariants: (props?: ({
4
+ size?: "sm" | "default" | "lg" | "xl" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare const circularProgressIndicatorVariants: (props?: ({
7
+ color?: "default" | "destructive" | "warning" | "positive" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ export declare const circularProgressLabelVariants: (props?: ({
10
+ size?: "sm" | "default" | "lg" | "xl" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
+ export declare const circularProgressSizeIds: readonly ["sm", "default", "lg", "xl"];
13
+ export type CircularProgressSizeId = (typeof circularProgressSizeIds)[number];
14
+ export declare const circularProgressColorIds: readonly ["default", "positive", "warning", "destructive"];
15
+ export type CircularProgressColorId = (typeof circularProgressColorIds)[number];
16
+ export interface CircularProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, "role" | "color">, VariantProps<typeof circularProgressVariants>, VariantProps<typeof circularProgressIndicatorVariants> {
17
+ /** Current progress value (0-100 by default; respects min/max) */
18
+ value: number;
19
+ /** Accessible label describing what the progress represents */
20
+ label: string;
21
+ /** Minimum value (defaults to 0) */
22
+ min?: number;
23
+ /** Maximum value (defaults to 100) */
24
+ max?: number;
25
+ /** Override the stroke width (in SVG user units). Defaults are size-aware. */
26
+ strokeWidth?: number;
27
+ /** When true (default), shows the percentage in the center of the ring */
28
+ showValue?: boolean;
29
+ /** Custom content to render in the center, overrides showValue */
30
+ children?: ReactNode;
31
+ /** Additional classes for the indicator (animated) circle stroke */
32
+ indicatorClassName?: string;
33
+ /** Additional classes for the track (background) circle stroke */
34
+ trackClassName?: string;
35
+ /** Additional classes for the centered label/content */
36
+ labelClassName?: string;
37
+ }
38
+ export declare function CircularProgress({ value, label, min, max, size, color, strokeWidth, showValue, children, className, indicatorClassName, trackClassName, labelClassName, ...props }: CircularProgressProps): ReactElement;
39
+ export declare namespace CircularProgress {
40
+ var displayName: string;
41
+ }
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } 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 circularProgressVariants = cva("relative inline-flex shrink-0", {
7
+ variants: {
8
+ size: {
9
+ sm: "h-10 w-10",
10
+ default: "h-16 w-16",
11
+ lg: "h-24 w-24",
12
+ xl: "h-32 w-32",
13
+ },
14
+ },
15
+ defaultVariants: {
16
+ size: "default",
17
+ },
18
+ });
19
+ export const circularProgressIndicatorVariants = cva("transition-colors duration-300", {
20
+ variants: {
21
+ color: {
22
+ default: "stroke-schemavaults-brand-blue",
23
+ positive: "stroke-green-500",
24
+ warning: "stroke-yellow-500",
25
+ destructive: "stroke-red-500",
26
+ },
27
+ },
28
+ defaultVariants: {
29
+ color: "default",
30
+ },
31
+ });
32
+ export const circularProgressLabelVariants = cva("absolute inset-0 flex items-center justify-center font-medium tabular-nums text-foreground", {
33
+ variants: {
34
+ size: {
35
+ sm: "text-xs",
36
+ default: "text-sm",
37
+ lg: "text-base",
38
+ xl: "text-lg",
39
+ },
40
+ },
41
+ defaultVariants: {
42
+ size: "default",
43
+ },
44
+ });
45
+ export const circularProgressSizeIds = ["sm", "default", "lg", "xl"];
46
+ export const circularProgressColorIds = [
47
+ "default",
48
+ "positive",
49
+ "warning",
50
+ "destructive",
51
+ ];
52
+ const SIZE_TO_PIXELS = {
53
+ sm: 40,
54
+ default: 64,
55
+ lg: 96,
56
+ xl: 128,
57
+ };
58
+ const SIZE_TO_STROKE_WIDTH = {
59
+ sm: 4,
60
+ default: 6,
61
+ lg: 8,
62
+ xl: 10,
63
+ };
64
+ export function CircularProgress({ value, label, min = 0, max = 100, size, color, strokeWidth, showValue = true, children, className, indicatorClassName, trackClassName, labelClassName, ...props }) {
65
+ const resolvedSize = size ?? "default";
66
+ const pixelSize = SIZE_TO_PIXELS[resolvedSize];
67
+ const resolvedStrokeWidth = strokeWidth ?? SIZE_TO_STROKE_WIDTH[resolvedSize];
68
+ const radius = (pixelSize - resolvedStrokeWidth) / 2;
69
+ const circumference = 2 * Math.PI * radius;
70
+ const clampedValue = Math.min(max, Math.max(min, value));
71
+ const percentage = ((clampedValue - min) / (max - min)) * 100;
72
+ const targetOffset = circumference * (1 - percentage / 100);
73
+ return (_jsxs("div", { role: "progressbar", "aria-valuenow": clampedValue, "aria-valuemin": min, "aria-valuemax": max, "aria-label": label, className: cn(circularProgressVariants({ size }), className), ...props, children: [_jsxs("svg", { viewBox: `0 0 ${pixelSize} ${pixelSize}`, className: "h-full w-full -rotate-90", "aria-hidden": "true", children: [_jsx("circle", { cx: pixelSize / 2, cy: pixelSize / 2, r: radius, fill: "none", strokeWidth: resolvedStrokeWidth, className: cn("stroke-secondary", trackClassName) }), _jsx(m.circle, { cx: pixelSize / 2, cy: pixelSize / 2, r: radius, fill: "none", strokeWidth: resolvedStrokeWidth, strokeLinecap: "round", strokeDasharray: circumference, initial: { strokeDashoffset: circumference }, animate: { strokeDashoffset: targetOffset }, transition: { duration: 0.5, ease: "easeOut" }, className: cn(circularProgressIndicatorVariants({ color }), indicatorClassName) })] }), (children || showValue) && (_jsx("div", { className: cn(circularProgressLabelVariants({ size }), labelClassName), "aria-hidden": "true", children: children ?? `${Math.round(percentage)}%` }))] }));
74
+ }
75
+ CircularProgress.displayName = "CircularProgress";
76
+ //# sourceMappingURL=circular-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circular-progress.js","sourceRoot":"","sources":["../../../../src/components/ui/circular-progress/circular-progress.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { CircularProgress, circularProgressVariants, circularProgressIndicatorVariants, circularProgressLabelVariants, circularProgressSizeIds, circularProgressColorIds, } from "./circular-progress";
2
+ export type * from "./circular-progress";
3
+ export { CircularProgress as default } from "./circular-progress";
@@ -0,0 +1,3 @@
1
+ export { CircularProgress, circularProgressVariants, circularProgressIndicatorVariants, circularProgressLabelVariants, circularProgressSizeIds, circularProgressColorIds, } from "./circular-progress";
2
+ export { CircularProgress as default } from "./circular-progress";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/circular-progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,iCAAiC,EACjC,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
@@ -98,6 +98,8 @@ export * from "./switch";
98
98
  export type * from "./switch";
99
99
  export * from "./progress-bar";
100
100
  export type * from "./progress-bar";
101
+ export * from "./circular-progress";
102
+ export type * from "./circular-progress";
101
103
  export * from "./breadcrumb";
102
104
  export type * from "./breadcrumb";
103
105
  export * from "./pagination";
@@ -48,6 +48,7 @@ export * from "./tabs";
48
48
  export * from "./slider";
49
49
  export * from "./switch";
50
50
  export * from "./progress-bar";
51
+ export * from "./circular-progress";
51
52
  export * from "./breadcrumb";
52
53
  export * from "./pagination";
53
54
  export * from "./kbd";
@@ -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,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,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,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"}
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,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/ui",
3
- "version": "0.30.1",
3
+ "version": "0.31.1",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "description": "React.js UI components for SchemaVaults frontend applications",