asterui 0.12.19 → 0.12.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/dist/components/Code.d.ts +2 -0
- package/dist/components/CopyButton.d.ts +34 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +205 -203
- package/dist/index.js.map +1 -1
- package/dist/index10.js +91 -121
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +5 -13
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +11 -43
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +44 -11
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +10 -12
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +14 -7
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +7 -12
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +11 -29
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +29 -16
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +21 -0
- package/dist/index108.js.map +1 -0
- package/dist/index11.js +123 -30
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +28 -263
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +257 -105
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +108 -153
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +154 -146
- package/dist/index15.js.map +1 -1
- package/dist/index16.js +150 -5
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +5 -71
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +70 -24
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +23 -194
- package/dist/index19.js.map +1 -1
- package/dist/index20.js +188 -106
- package/dist/index20.js.map +1 -1
- package/dist/index21.js +107 -177
- package/dist/index21.js.map +1 -1
- package/dist/index22.js +181 -107
- package/dist/index22.js.map +1 -1
- package/dist/index23.js +110 -19
- package/dist/index23.js.map +1 -1
- package/dist/index24.js +17 -41
- package/dist/index24.js.map +1 -1
- package/dist/index25.js +43 -32
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +30 -170
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +171 -40
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +41 -17
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +17 -33
- package/dist/index29.js.map +1 -1
- package/dist/index30.js +33 -52
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +50 -61
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +60 -181
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +184 -18
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +15 -271
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +270 -1083
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +1086 -16
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +17 -17
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +15 -120
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +119 -37
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +40 -398
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +390 -89
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +91 -253
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +249 -145
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +155 -15
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +15 -17
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +16 -136
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +134 -10
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +13 -35
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +35 -34
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +34 -81
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +71 -166
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +167 -144
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +152 -11
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +10 -20
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +55 -12
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +14 -7
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +6 -333
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +334 -47
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +47 -122
- package/dist/index59.js.map +1 -1
- package/dist/index60.js +120 -108
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +107 -167
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +167 -29
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +30 -120
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +116 -80
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +85 -19
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +19 -73
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +71 -54
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +56 -44
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +42 -49
- package/dist/index69.js.map +1 -1
- package/dist/index70.js +50 -121
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +118 -102
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +105 -72
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +73 -67
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +66 -19
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +18 -55
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +55 -251
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +254 -22
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +22 -31
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +30 -93
- package/dist/index79.js.map +1 -1
- package/dist/index80.js +89 -324
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +322 -73
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +79 -39
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +40 -23
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +21 -93
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +87 -148
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +147 -152
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +159 -63
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +65 -35
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +35 -234
- package/dist/index89.js.map +1 -1
- package/dist/index90.js +231 -31
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +34 -210
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +195 -198
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +159 -241
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +283 -166
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +173 -253
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +253 -121
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +126 -14
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +12 -31
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +32 -5
- package/dist/index99.js.map +1 -1
- package/package.json +1 -1
package/dist/index70.js
CHANGED
|
@@ -1,126 +1,55 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
md: "gap-2",
|
|
38
|
-
lg: "gap-3"
|
|
39
|
-
}, E = [
|
|
40
|
-
"rating",
|
|
41
|
-
// Half-star mode requires a size class to render correctly, default to md
|
|
42
|
-
s ? y[e || "md"] : e && y[e],
|
|
43
|
-
s ? "rating-half" : l && B[l],
|
|
44
|
-
f
|
|
45
|
-
].filter(Boolean).join(" "), b = s ? "star-2" : h, F = n || /* @__PURE__ */ G(_, { children: [
|
|
46
|
-
u && /* @__PURE__ */ t(c, { value: 0, hidden: !0 }),
|
|
47
|
-
s ? (
|
|
48
|
-
// Half-star mode: each star is two inputs
|
|
49
|
-
Array.from({ length: d }, (r, a) => /* @__PURE__ */ G(L.Fragment, { children: [
|
|
50
|
-
/* @__PURE__ */ t(c, { value: a + 0.5, mask: b, color: o, half: "first" }),
|
|
51
|
-
/* @__PURE__ */ t(c, { value: a + 1, mask: b, color: o, half: "second" })
|
|
52
|
-
] }, a + 1))
|
|
53
|
-
) : (
|
|
54
|
-
// Standard mode: one input per star
|
|
55
|
-
Array.from({ length: d }, (r, a) => /* @__PURE__ */ t(c, { value: a + 1, mask: b, color: o }, a + 1))
|
|
56
|
-
)
|
|
57
|
-
] });
|
|
58
|
-
return /* @__PURE__ */ t(N.Provider, { value: { name: $, currentValue: V, hoverValue: p, onChange: A, onHover: I, size: e, disabled: m, halfGap: s ? l : void 0 }, children: /* @__PURE__ */ t(
|
|
59
|
-
"div",
|
|
60
|
-
{
|
|
61
|
-
role: "radiogroup",
|
|
62
|
-
"aria-label": "Rating",
|
|
63
|
-
className: E,
|
|
64
|
-
"data-value": V,
|
|
65
|
-
onMouseLeave: () => I(0),
|
|
66
|
-
...C,
|
|
67
|
-
children: F
|
|
68
|
-
}
|
|
69
|
-
) });
|
|
70
|
-
}
|
|
71
|
-
function c({ value: n, mask: i = "star-2", color: v = "bg-warning", hidden: x = !1, half: g, className: d = "" }) {
|
|
72
|
-
const e = S(N);
|
|
73
|
-
if (!e)
|
|
74
|
-
throw new Error("Rating.Item must be used within Rating");
|
|
75
|
-
const { name: l, currentValue: o, hoverValue: h, onChange: u, onHover: s, disabled: m, halfGap: f } = e, C = {
|
|
76
|
-
star: "mask-star",
|
|
77
|
-
"star-2": "mask-star-2",
|
|
78
|
-
heart: "mask-heart"
|
|
79
|
-
}, R = {
|
|
80
|
-
first: "mask-half-1",
|
|
81
|
-
second: `mask-half-2 ${f ? {
|
|
82
|
-
none: "",
|
|
83
|
-
xs: "mr-0.5",
|
|
84
|
-
sm: "mr-1",
|
|
85
|
-
md: "mr-2",
|
|
86
|
-
lg: "mr-3"
|
|
87
|
-
}[f] : ""}`.trim()
|
|
88
|
-
}, p = x ? "rating-hidden" : [
|
|
89
|
-
"mask",
|
|
90
|
-
C[i],
|
|
91
|
-
g && R[g],
|
|
92
|
-
v,
|
|
93
|
-
d
|
|
94
|
-
].filter(Boolean).join(" ");
|
|
95
|
-
if (m)
|
|
96
|
-
return /* @__PURE__ */ t(
|
|
97
|
-
"div",
|
|
1
|
+
import { jsxs as b, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { useState as j } from "react";
|
|
3
|
+
const A = ({
|
|
4
|
+
value: s,
|
|
5
|
+
defaultValue: m = 50,
|
|
6
|
+
onChange: d,
|
|
7
|
+
min: r = 0,
|
|
8
|
+
max: c = 100,
|
|
9
|
+
step: t = 1,
|
|
10
|
+
size: f = "md",
|
|
11
|
+
color: l,
|
|
12
|
+
disabled: u = !1,
|
|
13
|
+
showValue: x = !1,
|
|
14
|
+
showSteps: o = !1,
|
|
15
|
+
className: h = ""
|
|
16
|
+
}) => {
|
|
17
|
+
const [p, y] = j(m), g = s !== void 0 ? s : p, C = (e) => {
|
|
18
|
+
const n = parseFloat(e.target.value);
|
|
19
|
+
s === void 0 && y(n), d?.(n);
|
|
20
|
+
}, v = {
|
|
21
|
+
xs: "range-xs",
|
|
22
|
+
sm: "range-sm",
|
|
23
|
+
md: "range-md",
|
|
24
|
+
lg: "range-lg"
|
|
25
|
+
}, w = {
|
|
26
|
+
primary: "range-primary",
|
|
27
|
+
secondary: "range-secondary",
|
|
28
|
+
accent: "range-accent",
|
|
29
|
+
success: "range-success",
|
|
30
|
+
warning: "range-warning",
|
|
31
|
+
info: "range-info",
|
|
32
|
+
error: "range-error"
|
|
33
|
+
}, N = v[f], V = l ? w[l] : "", i = o ? Array.from({ length: Math.floor((c - r) / t) + 1 }, (e, n) => r + n * t) : [];
|
|
34
|
+
return /* @__PURE__ */ b("div", { className: h, children: [
|
|
35
|
+
/* @__PURE__ */ a(
|
|
36
|
+
"input",
|
|
98
37
|
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
38
|
+
type: "range",
|
|
39
|
+
min: r,
|
|
40
|
+
max: c,
|
|
41
|
+
step: t,
|
|
42
|
+
value: g,
|
|
43
|
+
onChange: C,
|
|
44
|
+
disabled: u,
|
|
45
|
+
className: `range ${N} ${V}`
|
|
102
46
|
}
|
|
103
|
-
)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
type: "radio",
|
|
109
|
-
name: l,
|
|
110
|
-
className: p,
|
|
111
|
-
checked: k === n,
|
|
112
|
-
onChange: () => {
|
|
113
|
-
},
|
|
114
|
-
onClick: () => u(n),
|
|
115
|
-
onMouseEnter: () => s(n),
|
|
116
|
-
"aria-label": `Rating ${n}`
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
const J = Object.assign(q, {
|
|
121
|
-
Item: c
|
|
122
|
-
});
|
|
47
|
+
),
|
|
48
|
+
o && i.length > 0 && /* @__PURE__ */ a("div", { className: "w-full flex justify-between text-xs px-2 mt-2", children: i.map((e) => /* @__PURE__ */ a("span", { className: "text-base-content/60", children: "|" }, e)) }),
|
|
49
|
+
x && /* @__PURE__ */ a("div", { className: "text-center mt-2 text-sm font-medium text-base-content", children: g })
|
|
50
|
+
] });
|
|
51
|
+
};
|
|
123
52
|
export {
|
|
124
|
-
|
|
53
|
+
A as Range
|
|
125
54
|
};
|
|
126
55
|
//# sourceMappingURL=index70.js.map
|
package/dist/index70.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index70.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index70.js","sources":["../src/components/Range.tsx"],"sourcesContent":["import React, { useState } from 'react'\n\nexport interface RangeProps {\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n min?: number\n max?: number\n step?: number\n size?: 'xs' | 'sm' | 'md' | 'lg'\n color?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error'\n disabled?: boolean\n showValue?: boolean\n showSteps?: boolean\n className?: string\n}\n\nexport const Range: React.FC<RangeProps> = ({\n value,\n defaultValue = 50,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n size = 'md',\n color,\n disabled = false,\n showValue = false,\n showSteps = false,\n className = '',\n}) => {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const currentValue = value !== undefined ? value : internalValue\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseFloat(e.target.value)\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n\n const sizeClasses = {\n xs: 'range-xs',\n sm: 'range-sm',\n md: 'range-md',\n lg: 'range-lg',\n } as const\n\n const colorClasses = {\n primary: 'range-primary',\n secondary: 'range-secondary',\n accent: 'range-accent',\n success: 'range-success',\n warning: 'range-warning',\n info: 'range-info',\n error: 'range-error',\n } as const\n\n const sizeClass = sizeClasses[size]\n const colorClass = color ? colorClasses[color] : ''\n\n // Calculate steps for visual markers\n const steps = showSteps\n ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => min + i * step)\n : []\n\n return (\n <div className={className}>\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentValue}\n onChange={handleChange}\n disabled={disabled}\n className={`range ${sizeClass} ${colorClass}`}\n />\n {showSteps && steps.length > 0 && (\n <div className=\"w-full flex justify-between text-xs px-2 mt-2\">\n {steps.map((stepValue) => (\n <span key={stepValue} className=\"text-base-content/60\">\n |\n </span>\n ))}\n </div>\n )}\n {showValue && (\n <div className=\"text-center mt-2 text-sm font-medium text-base-content\">\n {currentValue}\n </div>\n )}\n </div>\n )\n}\n"],"names":["Range","value","defaultValue","onChange","min","max","step","size","color","disabled","showValue","showSteps","className","internalValue","setInternalValue","useState","currentValue","handleChange","newValue","sizeClasses","colorClasses","sizeClass","colorClass","steps","_","i","jsxs","jsx","stepValue"],"mappings":";;AAiBO,MAAMA,IAA8B,CAAC;AAAA,EAC1C,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,KAAAC,IAAM;AAAA,EACN,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AACd,MAAM;AACJ,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAASb,CAAY,GACzDc,IAAef,MAAU,SAAYA,IAAQY,GAE7CI,IAAe,CAAC,MAA2C;AAC/D,UAAMC,IAAW,WAAW,EAAE,OAAO,KAAK;AAC1C,IAAIjB,MAAU,UACZa,EAAiBI,CAAQ,GAE3Bf,IAAWe,CAAQ;AAAA,EACrB,GAEMC,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAe;AAAA,IACnB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EAAA,GAGHC,IAAYF,EAAYZ,CAAI,GAC5Be,IAAad,IAAQY,EAAaZ,CAAK,IAAI,IAG3Ce,IAAQZ,IACV,MAAM,KAAK,EAAE,QAAQ,KAAK,OAAON,IAAMD,KAAOE,CAAI,IAAI,EAAA,GAAK,CAACkB,GAAGC,MAAMrB,IAAMqB,IAAInB,CAAI,IACnF,CAAA;AAEJ,SACE,gBAAAoB,EAAC,SAAI,WAAAd,GACH,UAAA;AAAA,IAAA,gBAAAe;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,KAAAvB;AAAA,QACA,KAAAC;AAAA,QACA,MAAAC;AAAA,QACA,OAAOU;AAAA,QACP,UAAUC;AAAA,QACV,UAAAR;AAAA,QACA,WAAW,SAASY,CAAS,IAAIC,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAE5CX,KAAaY,EAAM,SAAS,KAC3B,gBAAAI,EAAC,OAAA,EAAI,WAAU,iDACZ,UAAAJ,EAAM,IAAI,CAACK,wBACT,QAAA,EAAqB,WAAU,wBAAuB,UAAA,IAAA,GAA5CA,CAEX,CACD,GACH;AAAA,IAEDlB,KACC,gBAAAiB,EAAC,OAAA,EAAI,WAAU,0DACZ,UAAAX,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
|
package/dist/index71.js
CHANGED
|
@@ -1,110 +1,126 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
1
|
+
import { jsxs as G, Fragment as _, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import L, { useState as M, useId as O, createContext as P, useContext as S } from "react";
|
|
3
|
+
const N = P(null);
|
|
4
|
+
function q({
|
|
5
|
+
children: n,
|
|
6
|
+
value: i,
|
|
7
|
+
defaultValue: v = 0,
|
|
8
|
+
onChange: x,
|
|
9
|
+
onHoverChange: g,
|
|
10
|
+
count: d = 5,
|
|
11
|
+
size: e,
|
|
12
|
+
gap: l = "md",
|
|
13
|
+
color: o = "bg-warning",
|
|
14
|
+
mask: h = "star-2",
|
|
15
|
+
allowClear: u = !0,
|
|
16
|
+
allowHalf: s = !1,
|
|
17
|
+
disabled: m = !1,
|
|
18
|
+
className: f = "",
|
|
19
|
+
...C
|
|
20
|
+
}) {
|
|
21
|
+
const [j, R] = M(v), [p, k] = M(0), V = i !== void 0 ? i : j, $ = O(), A = (r) => {
|
|
22
|
+
if (m) return;
|
|
23
|
+
const a = u && r === V ? 0 : r;
|
|
24
|
+
i === void 0 && R(a), k(0), x?.(a);
|
|
25
|
+
}, I = (r) => {
|
|
26
|
+
m || (k(r), g?.(r));
|
|
27
|
+
}, y = {
|
|
28
|
+
xs: "rating-xs",
|
|
29
|
+
sm: "rating-sm",
|
|
30
|
+
md: "rating-md",
|
|
31
|
+
lg: "rating-lg",
|
|
32
|
+
xl: "rating-xl"
|
|
33
|
+
}, B = {
|
|
34
|
+
none: "gap-0",
|
|
35
|
+
xs: "gap-0.5",
|
|
36
|
+
sm: "gap-1",
|
|
37
|
+
md: "gap-2",
|
|
38
|
+
lg: "gap-3"
|
|
39
|
+
}, E = [
|
|
40
|
+
"rating",
|
|
41
|
+
// Half-star mode requires a size class to render correctly, default to md
|
|
42
|
+
s ? y[e || "md"] : e && y[e],
|
|
43
|
+
s ? "rating-half" : l && B[l],
|
|
44
|
+
f
|
|
45
|
+
].filter(Boolean).join(" "), b = s ? "star-2" : h, F = n || /* @__PURE__ */ G(_, { children: [
|
|
46
|
+
u && /* @__PURE__ */ t(c, { value: 0, hidden: !0 }),
|
|
47
|
+
s ? (
|
|
48
|
+
// Half-star mode: each star is two inputs
|
|
49
|
+
Array.from({ length: d }, (r, a) => /* @__PURE__ */ G(L.Fragment, { children: [
|
|
50
|
+
/* @__PURE__ */ t(c, { value: a + 0.5, mask: b, color: o, half: "first" }),
|
|
51
|
+
/* @__PURE__ */ t(c, { value: a + 1, mask: b, color: o, half: "second" })
|
|
52
|
+
] }, a + 1))
|
|
53
|
+
) : (
|
|
54
|
+
// Standard mode: one input per star
|
|
55
|
+
Array.from({ length: d }, (r, a) => /* @__PURE__ */ t(c, { value: a + 1, mask: b, color: o }, a + 1))
|
|
56
|
+
)
|
|
57
|
+
] });
|
|
58
|
+
return /* @__PURE__ */ t(N.Provider, { value: { name: $, currentValue: V, hoverValue: p, onChange: A, onHover: I, size: e, disabled: m, halfGap: s ? l : void 0 }, children: /* @__PURE__ */ t(
|
|
59
|
+
"div",
|
|
59
60
|
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
strokeLinecap: "round",
|
|
68
|
-
strokeLinejoin: "round",
|
|
69
|
-
strokeWidth: 2,
|
|
70
|
-
d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
|
|
71
|
-
}
|
|
72
|
-
)
|
|
61
|
+
role: "radiogroup",
|
|
62
|
+
"aria-label": "Rating",
|
|
63
|
+
className: E,
|
|
64
|
+
"data-value": V,
|
|
65
|
+
onMouseLeave: () => I(0),
|
|
66
|
+
...C,
|
|
67
|
+
children: F
|
|
73
68
|
}
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
69
|
+
) });
|
|
70
|
+
}
|
|
71
|
+
function c({ value: n, mask: i = "star-2", color: v = "bg-warning", hidden: x = !1, half: g, className: d = "" }) {
|
|
72
|
+
const e = S(N);
|
|
73
|
+
if (!e)
|
|
74
|
+
throw new Error("Rating.Item must be used within Rating");
|
|
75
|
+
const { name: l, currentValue: o, hoverValue: h, onChange: u, onHover: s, disabled: m, halfGap: f } = e, C = {
|
|
76
|
+
star: "mask-star",
|
|
77
|
+
"star-2": "mask-star-2",
|
|
78
|
+
heart: "mask-heart"
|
|
79
|
+
}, R = {
|
|
80
|
+
first: "mask-half-1",
|
|
81
|
+
second: `mask-half-2 ${f ? {
|
|
82
|
+
none: "",
|
|
83
|
+
xs: "mr-0.5",
|
|
84
|
+
sm: "mr-1",
|
|
85
|
+
md: "mr-2",
|
|
86
|
+
lg: "mr-3"
|
|
87
|
+
}[f] : ""}`.trim()
|
|
88
|
+
}, p = x ? "rating-hidden" : [
|
|
89
|
+
"mask",
|
|
90
|
+
C[i],
|
|
91
|
+
g && R[g],
|
|
92
|
+
v,
|
|
93
|
+
d
|
|
94
|
+
].filter(Boolean).join(" ");
|
|
95
|
+
if (m)
|
|
96
|
+
return /* @__PURE__ */ t(
|
|
97
|
+
"div",
|
|
98
|
+
{
|
|
99
|
+
className: p,
|
|
100
|
+
"aria-current": o === n ? "true" : void 0,
|
|
101
|
+
"aria-label": `Rating ${n}`
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
const k = h > 0 ? h : o;
|
|
105
|
+
return /* @__PURE__ */ t(
|
|
106
|
+
"input",
|
|
91
107
|
{
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
]
|
|
108
|
+
type: "radio",
|
|
109
|
+
name: l,
|
|
110
|
+
className: p,
|
|
111
|
+
checked: k === n,
|
|
112
|
+
onChange: () => {
|
|
113
|
+
},
|
|
114
|
+
onClick: () => u(n),
|
|
115
|
+
onMouseEnter: () => s(n),
|
|
116
|
+
"aria-label": `Rating ${n}`
|
|
102
117
|
}
|
|
103
118
|
);
|
|
104
|
-
}
|
|
105
|
-
|
|
119
|
+
}
|
|
120
|
+
const J = Object.assign(q, {
|
|
121
|
+
Item: c
|
|
122
|
+
});
|
|
106
123
|
export {
|
|
107
|
-
|
|
108
|
-
x as default
|
|
124
|
+
J as Rating
|
|
109
125
|
};
|
|
110
126
|
//# sourceMappingURL=index71.js.map
|
package/dist/index71.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index71.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index71.js","sources":["../src/components/Rating.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useState } from 'react'\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n children?: React.ReactNode\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n onHoverChange?: (value: number) => void\n count?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n color?: string\n mask?: 'star' | 'star-2' | 'heart'\n allowClear?: boolean\n allowHalf?: boolean\n disabled?: boolean\n}\n\nexport interface RatingItemProps {\n value: number\n mask?: 'star' | 'star-2' | 'heart'\n color?: string\n hidden?: boolean\n half?: 'first' | 'second'\n className?: string\n}\n\ninterface RatingContextValue {\n name: string\n currentValue: number\n hoverValue: number\n onChange: (value: number) => void\n onHover: (value: number) => void\n size?: string\n disabled?: boolean\n halfGap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n}\n\nconst RatingContext = createContext<RatingContextValue | null>(null)\n\nfunction RatingRoot({\n children,\n value,\n defaultValue = 0,\n onChange,\n onHoverChange,\n count = 5,\n size,\n gap = 'md',\n color = 'bg-warning',\n mask = 'star-2',\n allowClear = true,\n allowHalf = false,\n disabled = false,\n className = '',\n ...rest\n}: RatingProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState(0)\n const currentValue = value !== undefined ? value : internalValue\n const name = useId()\n\n const handleChange = (newValue: number) => {\n if (disabled) return\n // Allow clearing if clicking the same value and allowClear is true\n const finalValue = allowClear && newValue === currentValue ? 0 : newValue\n if (value === undefined) {\n setInternalValue(finalValue)\n }\n // Clear hover state so the clicked value shows immediately\n setHoverValue(0)\n onChange?.(finalValue)\n }\n\n const handleHover = (hoverVal: number) => {\n if (disabled) return\n setHoverValue(hoverVal)\n onHoverChange?.(hoverVal)\n }\n\n const sizeClasses = {\n xs: 'rating-xs',\n sm: 'rating-sm',\n md: 'rating-md',\n lg: 'rating-lg',\n xl: 'rating-xl',\n }\n\n const gapClasses = {\n none: 'gap-0',\n xs: 'gap-0.5',\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n }\n\n const classes = [\n 'rating',\n // Half-star mode requires a size class to render correctly, default to md\n allowHalf ? sizeClasses[size || 'md'] : (size && sizeClasses[size]),\n allowHalf ? 'rating-half' : (gap && gapClasses[gap]),\n className,\n ].filter(Boolean).join(' ')\n\n // Auto-generate items if no children provided\n // Note: half-star mode requires mask-star-2 per DaisyUI\n const effectiveMask = allowHalf ? 'star-2' : mask\n const items = children || (\n <>\n {allowClear && <RatingItem value={0} hidden />}\n {allowHalf ? (\n // Half-star mode: each star is two inputs\n Array.from({ length: count }, (_, i) => (\n <React.Fragment key={i + 1}>\n <RatingItem value={i + 0.5} mask={effectiveMask} color={color} half=\"first\" />\n <RatingItem value={i + 1} mask={effectiveMask} color={color} half=\"second\" />\n </React.Fragment>\n ))\n ) : (\n // Standard mode: one input per star\n Array.from({ length: count }, (_, i) => (\n <RatingItem key={i + 1} value={i + 1} mask={effectiveMask} color={color} />\n ))\n )}\n </>\n )\n\n return (\n <RatingContext.Provider value={{ name, currentValue, hoverValue, onChange: handleChange, onHover: handleHover, size, disabled, halfGap: allowHalf ? gap : undefined }}>\n <div\n role=\"radiogroup\"\n aria-label=\"Rating\"\n className={classes}\n data-value={currentValue}\n onMouseLeave={() => handleHover(0)}\n {...rest}\n >\n {items}\n </div>\n </RatingContext.Provider>\n )\n}\n\nfunction RatingItem({ value, mask = 'star-2', color = 'bg-warning', hidden = false, half, className = '' }: RatingItemProps) {\n const context = useContext(RatingContext)\n if (!context) {\n throw new Error('Rating.Item must be used within Rating')\n }\n\n const { name, currentValue, hoverValue, onChange, onHover, disabled, halfGap } = context\n\n const maskClasses = {\n star: 'mask-star',\n 'star-2': 'mask-star-2',\n heart: 'mask-heart',\n }\n\n const halfGapClasses = {\n none: '',\n xs: 'mr-0.5',\n sm: 'mr-1',\n md: 'mr-2',\n lg: 'mr-3',\n }\n\n const halfClasses = {\n first: 'mask-half-1',\n second: `mask-half-2 ${halfGap ? halfGapClasses[halfGap] : ''}`.trim(),\n }\n\n // Hidden items only get rating-hidden class (no mask)\n // Visible items get mask classes - DaisyUI CSS handles filled/unfilled state\n const classes = hidden\n ? 'rating-hidden'\n : [\n 'mask',\n maskClasses[mask],\n half && halfClasses[half],\n color,\n className,\n ].filter(Boolean).join(' ')\n\n if (disabled) {\n return (\n <div\n className={classes}\n aria-current={currentValue === value ? 'true' : undefined}\n aria-label={`Rating ${value}`}\n />\n )\n }\n\n // Use hoverValue for checked state when hovering (for visual preview)\n // DaisyUI CSS fills all stars up to the checked one\n const displayValue = hoverValue > 0 ? hoverValue : currentValue\n\n return (\n <input\n type=\"radio\"\n name={name}\n className={classes}\n checked={displayValue === value}\n onChange={() => {}} // Controlled by onClick\n onClick={() => onChange(value)}\n onMouseEnter={() => onHover(value)}\n aria-label={`Rating ${value}`}\n />\n )\n}\n\nexport const Rating = Object.assign(RatingRoot, {\n Item: RatingItem,\n})\n"],"names":["RatingContext","createContext","RatingRoot","children","value","defaultValue","onChange","onHoverChange","count","size","gap","color","mask","allowClear","allowHalf","disabled","className","rest","internalValue","setInternalValue","useState","hoverValue","setHoverValue","currentValue","name","useId","handleChange","newValue","finalValue","handleHover","hoverVal","sizeClasses","gapClasses","classes","effectiveMask","items","jsxs","Fragment","jsx","RatingItem","_","i","React","hidden","half","context","useContext","onHover","halfGap","maskClasses","halfClasses","displayValue","Rating"],"mappings":";;AAsCA,MAAMA,IAAgBC,EAAyC,IAAI;AAEnE,SAASC,EAAW;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAgB;AACd,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAASf,CAAY,GACzD,CAACgB,GAAYC,CAAa,IAAIF,EAAS,CAAC,GACxCG,IAAenB,MAAU,SAAYA,IAAQc,GAC7CM,IAAOC,EAAA,GAEPC,IAAe,CAACC,MAAqB;AACzC,QAAIZ,EAAU;AAEd,UAAMa,IAAaf,KAAcc,MAAaJ,IAAe,IAAII;AACjE,IAAIvB,MAAU,UACZe,EAAiBS,CAAU,GAG7BN,EAAc,CAAC,GACfhB,IAAWsB,CAAU;AAAA,EACvB,GAEMC,IAAc,CAACC,MAAqB;AACxC,IAAIf,MACJO,EAAcQ,CAAQ,GACtBvB,IAAgBuB,CAAQ;AAAA,EAC1B,GAEMC,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAa;AAAA,IACjB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAU;AAAA,IACd;AAAA;AAAA,IAEAnB,IAAYiB,EAAYtB,KAAQ,IAAI,IAAKA,KAAQsB,EAAYtB,CAAI;AAAA,IACjEK,IAAY,gBAAiBJ,KAAOsB,EAAWtB,CAAG;AAAA,IAClDM;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAIpBkB,IAAgBpB,IAAY,WAAWF,GACvCuB,IAAQhC,KACZ,gBAAAiC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAxB,KAAc,gBAAAyB,EAACC,GAAA,EAAW,OAAO,GAAG,QAAM,IAAC;AAAA,IAC3CzB;AAAA;AAAA,MAEC,MAAM,KAAK,EAAE,QAAQN,EAAA,GAAS,CAACgC,GAAGC,MAChC,gBAAAL,EAACM,EAAM,UAAN,EACC,UAAA;AAAA,QAAA,gBAAAJ,EAACC,GAAA,EAAW,OAAOE,IAAI,KAAK,MAAMP,GAAe,OAAAvB,GAAc,MAAK,QAAA,CAAQ;AAAA,QAC5E,gBAAA2B,EAACC,KAAW,OAAOE,IAAI,GAAG,MAAMP,GAAe,OAAAvB,GAAc,MAAK,SAAA,CAAS;AAAA,MAAA,EAAA,GAFxD8B,IAAI,CAGzB,CACD;AAAA;AAAA;AAAA,MAGD,MAAM,KAAK,EAAE,QAAQjC,EAAA,GAAS,CAACgC,GAAGC,wBAC/BF,GAAA,EAAuB,OAAOE,IAAI,GAAG,MAAMP,GAAe,OAAAvB,EAAA,GAA1C8B,IAAI,CAAoD,CAC1E;AAAA;AAAA,EAAA,GAEL;AAGF,2BACGzC,EAAc,UAAd,EAAuB,OAAO,EAAE,MAAAwB,GAAM,cAAAD,GAAc,YAAAF,GAAY,UAAUK,GAAc,SAASG,GAAa,MAAApB,GAAM,UAAAM,GAAU,SAASD,IAAYJ,IAAM,UACxJ,UAAA,gBAAA4B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWL;AAAA,MACX,cAAYV;AAAA,MACZ,cAAc,MAAMM,EAAY,CAAC;AAAA,MAChC,GAAGZ;AAAA,MAEH,UAAAkB;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEA,SAASI,EAAW,EAAE,OAAAnC,GAAO,MAAAQ,IAAO,UAAU,OAAAD,IAAQ,cAAc,QAAAgC,IAAS,IAAO,MAAAC,GAAM,WAAA5B,IAAY,GAAA,GAAuB;AAC3H,QAAM6B,IAAUC,EAAW9C,CAAa;AACxC,MAAI,CAAC6C;AACH,UAAM,IAAI,MAAM,wCAAwC;AAG1D,QAAM,EAAE,MAAArB,GAAM,cAAAD,GAAc,YAAAF,GAAY,UAAAf,GAAU,SAAAyC,GAAS,UAAAhC,GAAU,SAAAiC,MAAYH,GAE3EI,IAAc;AAAA,IAClB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,EAAA,GAWHC,IAAc;AAAA,IAClB,OAAO;AAAA,IACP,QAAQ,eAAeF,IAVF;AAAA,MACrB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,EAK4CA,CAAO,IAAI,EAAE,GAAG,KAAA;AAAA,EAAK,GAKjEf,IAAUU,IACZ,kBACA;AAAA,IACE;AAAA,IACAM,EAAYrC,CAAI;AAAA,IAChBgC,KAAQM,EAAYN,CAAI;AAAA,IACxBjC;AAAA,IACAK;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE9B,MAAID;AACF,WACE,gBAAAuB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWL;AAAA,QACX,gBAAcV,MAAiBnB,IAAQ,SAAS;AAAA,QAChD,cAAY,UAAUA,CAAK;AAAA,MAAA;AAAA,IAAA;AAOjC,QAAM+C,IAAe9B,IAAa,IAAIA,IAAaE;AAEnD,SACE,gBAAAe;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAAd;AAAA,MACA,WAAWS;AAAA,MACX,SAASkB,MAAiB/C;AAAA,MAC1B,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,SAAS,MAAME,EAASF,CAAK;AAAA,MAC7B,cAAc,MAAM2C,EAAQ3C,CAAK;AAAA,MACjC,cAAY,UAAUA,CAAK;AAAA,IAAA;AAAA,EAAA;AAGjC;AAEO,MAAMgD,IAAS,OAAO,OAAOlD,GAAY;AAAA,EAC9C,MAAMqC;AACR,CAAC;"}
|