@schemavaults/ui 0.23.1 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/index.d.ts +2 -0
- package/dist/components/ui/index.js +1 -0
- package/dist/components/ui/index.js.map +1 -1
- package/dist/components/ui/rating/index.d.ts +4 -0
- package/dist/components/ui/rating/index.js +3 -0
- package/dist/components/ui/rating/index.js.map +1 -0
- package/dist/components/ui/rating/rating-variants.d.ts +4 -0
- package/dist/components/ui/rating/rating-variants.js +8 -0
- package/dist/components/ui/rating/rating-variants.js.map +1 -0
- package/dist/components/ui/rating/rating.d.ts +41 -0
- package/dist/components/ui/rating/rating.js +123 -0
- package/dist/components/ui/rating/rating.js.map +1 -0
- package/package.json +1 -1
|
@@ -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"}
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/rating/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,MAAM,IAAI,OAAO,EACjB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const ratingSizeIds: readonly ["sm", "md", "lg", "xl"];
|
|
2
|
+
export type RatingSize = (typeof ratingSizeIds)[number];
|
|
3
|
+
export declare const ratingColorIds: readonly ["warning", "primary", "destructive", "foreground"];
|
|
4
|
+
export type RatingColor = (typeof ratingColorIds)[number];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/rating/rating-variants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAsC,CAAC;AAG3F,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,aAAa;IACb,YAAY;CACwB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type ReactElement, type Ref } from "react";
|
|
3
|
+
import { ratingColorIds, ratingSizeIds, type RatingColor, type RatingSize } from "./rating-variants";
|
|
4
|
+
declare const ratingContainerVariants: (props?: ({
|
|
5
|
+
size?: "sm" | "lg" | "xl" | "md" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export interface RatingProps extends VariantProps<typeof ratingContainerVariants> {
|
|
8
|
+
/** Current rating value (0..max). Supports fractional values when `allowHalf` is true. */
|
|
9
|
+
value?: number;
|
|
10
|
+
/** Default uncontrolled value. */
|
|
11
|
+
defaultValue?: number;
|
|
12
|
+
/** Maximum number of stars. Defaults to 5. */
|
|
13
|
+
max?: number;
|
|
14
|
+
/** Color used for filled portions of stars. */
|
|
15
|
+
color?: RatingColor;
|
|
16
|
+
/** When true, allow half-star granularity in interactive mode. */
|
|
17
|
+
allowHalf?: boolean;
|
|
18
|
+
/** Disable interaction; render as a display-only rating. */
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
/** Disabled state — non-interactive and visually muted. */
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
/** Callback fired when the user selects a new value. */
|
|
23
|
+
onValueChange?: (value: number) => void;
|
|
24
|
+
/** Optional accessible label for the rating widget. */
|
|
25
|
+
"aria-label"?: string;
|
|
26
|
+
/** Optional id of an element labelling the rating widget. */
|
|
27
|
+
"aria-labelledby"?: string;
|
|
28
|
+
/** Custom class name forwarded to the root container. */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Optional ref to the root container. */
|
|
31
|
+
ref?: Ref<HTMLDivElement>;
|
|
32
|
+
/** Optional name to render a hidden form input (helpful for native form submission). */
|
|
33
|
+
name?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function Rating({ value, defaultValue, max, size, color, allowHalf, readOnly, disabled, onValueChange, className, ref, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }: RatingProps): ReactElement;
|
|
36
|
+
export declare namespace Rating {
|
|
37
|
+
var displayName: string;
|
|
38
|
+
}
|
|
39
|
+
export { ratingContainerVariants, ratingColorIds, ratingSizeIds };
|
|
40
|
+
export type { RatingColor, RatingSize };
|
|
41
|
+
export default Rating;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Star } from "lucide-react";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { useCallback, useMemo, useState, } from "react";
|
|
6
|
+
import { cn } from "../../../lib/utils";
|
|
7
|
+
import { ratingColorIds, ratingSizeIds, } from "./rating-variants";
|
|
8
|
+
const ratingContainerVariants = cva("inline-flex items-center align-middle text-muted-foreground/40", {
|
|
9
|
+
variants: {
|
|
10
|
+
size: {
|
|
11
|
+
sm: "gap-0.5",
|
|
12
|
+
md: "gap-1",
|
|
13
|
+
lg: "gap-1.5",
|
|
14
|
+
xl: "gap-2",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
size: "md",
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const starSizeClasses = {
|
|
22
|
+
sm: "size-3.5",
|
|
23
|
+
md: "size-5",
|
|
24
|
+
lg: "size-6",
|
|
25
|
+
xl: "size-8",
|
|
26
|
+
};
|
|
27
|
+
const filledColorClasses = {
|
|
28
|
+
warning: "text-warning",
|
|
29
|
+
primary: "text-primary",
|
|
30
|
+
destructive: "text-destructive",
|
|
31
|
+
foreground: "text-foreground",
|
|
32
|
+
};
|
|
33
|
+
function clampValue(value, max) {
|
|
34
|
+
if (Number.isNaN(value))
|
|
35
|
+
return 0;
|
|
36
|
+
if (value < 0)
|
|
37
|
+
return 0;
|
|
38
|
+
if (value > max)
|
|
39
|
+
return max;
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
export function Rating({ value, defaultValue, max = 5, size, color = "warning", allowHalf = false, readOnly = false, disabled = false, onValueChange, className, ref, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }) {
|
|
43
|
+
const isControlled = value !== undefined;
|
|
44
|
+
const [internal, setInternal] = useState(clampValue(defaultValue ?? 0, max));
|
|
45
|
+
const [hover, setHover] = useState(null);
|
|
46
|
+
const current = clampValue(isControlled ? value : internal, max);
|
|
47
|
+
const display = hover !== null ? hover : current;
|
|
48
|
+
const interactive = !readOnly && !disabled;
|
|
49
|
+
const updateValue = useCallback((next) => {
|
|
50
|
+
const clamped = clampValue(next, max);
|
|
51
|
+
if (!isControlled)
|
|
52
|
+
setInternal(clamped);
|
|
53
|
+
onValueChange?.(clamped);
|
|
54
|
+
}, [isControlled, max, onValueChange]);
|
|
55
|
+
const handleClick = useCallback((event, index) => {
|
|
56
|
+
if (!interactive)
|
|
57
|
+
return;
|
|
58
|
+
let next = index + 1;
|
|
59
|
+
if (allowHalf) {
|
|
60
|
+
const target = event.currentTarget;
|
|
61
|
+
const rect = target.getBoundingClientRect();
|
|
62
|
+
const isLeftHalf = event.clientX - rect.left < rect.width / 2;
|
|
63
|
+
next = index + (isLeftHalf ? 0.5 : 1);
|
|
64
|
+
}
|
|
65
|
+
// Toggle off when clicking the currently selected single-unit value.
|
|
66
|
+
if (!allowHalf && current === next) {
|
|
67
|
+
next = next - 1;
|
|
68
|
+
}
|
|
69
|
+
updateValue(next);
|
|
70
|
+
}, [interactive, allowHalf, current, updateValue]);
|
|
71
|
+
const handleKeyDown = useCallback((event) => {
|
|
72
|
+
if (!interactive)
|
|
73
|
+
return;
|
|
74
|
+
const step = allowHalf ? 0.5 : 1;
|
|
75
|
+
switch (event.key) {
|
|
76
|
+
case "ArrowRight":
|
|
77
|
+
case "ArrowUp":
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
updateValue(current + step);
|
|
80
|
+
break;
|
|
81
|
+
case "ArrowLeft":
|
|
82
|
+
case "ArrowDown":
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
updateValue(current - step);
|
|
85
|
+
break;
|
|
86
|
+
case "Home":
|
|
87
|
+
event.preventDefault();
|
|
88
|
+
updateValue(0);
|
|
89
|
+
break;
|
|
90
|
+
case "End":
|
|
91
|
+
event.preventDefault();
|
|
92
|
+
updateValue(max);
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}, [interactive, allowHalf, current, max, updateValue]);
|
|
98
|
+
const stars = useMemo(() => Array.from({ length: max }, (_, i) => i), [max]);
|
|
99
|
+
const starClass = size ? starSizeClasses[size] : starSizeClasses.md;
|
|
100
|
+
const filledClass = filledColorClasses[color];
|
|
101
|
+
return (_jsxs("div", { ref: ref, role: interactive ? "slider" : "img", "aria-label": ariaLabel ?? `Rating: ${current} out of ${max}`, "aria-labelledby": ariaLabelledBy, "aria-valuemin": interactive ? 0 : undefined, "aria-valuemax": interactive ? max : undefined, "aria-valuenow": interactive ? current : undefined, "aria-valuetext": `${current} out of ${max}`, "aria-readonly": readOnly || undefined, "aria-disabled": disabled || undefined, tabIndex: interactive ? 0 : -1, onKeyDown: handleKeyDown, "data-slot": "rating", className: cn(ratingContainerVariants({ size }), interactive
|
|
102
|
+
? "cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md"
|
|
103
|
+
: "cursor-default", disabled && "opacity-50 pointer-events-none", className), children: [stars.map((index) => {
|
|
104
|
+
const fill = Math.max(0, Math.min(1, display - index));
|
|
105
|
+
const filledPct = `${Math.round(fill * 100)}%`;
|
|
106
|
+
return (_jsxs("button", { type: "button", tabIndex: -1, disabled: !interactive, "aria-hidden": "true", "data-slot": "rating-star", "data-index": index, "data-fill": fill, onClick: (e) => handleClick(e, index), onMouseMove: (e) => {
|
|
107
|
+
if (!interactive)
|
|
108
|
+
return;
|
|
109
|
+
if (allowHalf) {
|
|
110
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
111
|
+
const isLeftHalf = e.clientX - rect.left < rect.width / 2;
|
|
112
|
+
setHover(index + (isLeftHalf ? 0.5 : 1));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
setHover(index + 1);
|
|
116
|
+
}
|
|
117
|
+
}, onMouseLeave: () => setHover(null), onFocus: () => undefined, className: cn("relative inline-flex items-center justify-center bg-transparent border-0 p-0 m-0", "transition-transform duration-150", interactive && "hover:scale-110 active:scale-95", !interactive && "cursor-default"), children: [_jsx(Star, { className: cn(starClass, "stroke-current fill-none"), "aria-hidden": "true" }), _jsx("span", { "aria-hidden": "true", className: cn("pointer-events-none absolute inset-0 inline-flex items-center justify-center overflow-hidden", filledClass), style: { clipPath: `inset(0 ${100 - parseInt(filledPct, 10)}% 0 0)` }, children: _jsx(Star, { className: cn(starClass, "fill-current stroke-current"), "aria-hidden": "true" }) })] }, index));
|
|
118
|
+
}), name ? (_jsx("input", { type: "hidden", name: name, value: current, readOnly: true })) : null] }));
|
|
119
|
+
}
|
|
120
|
+
Rating.displayName = "Rating";
|
|
121
|
+
export { ratingContainerVariants, ratingColorIds, ratingSizeIds };
|
|
122
|
+
export default Rating;
|
|
123
|
+
//# sourceMappingURL=rating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../../src/components/ui/rating/rating.tsx"],"names":[],"mappings":"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"}
|