asterui 0.12.19 → 0.12.20
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/index14.js
CHANGED
|
@@ -1,161 +1,116 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { jsxs as s, jsx as e, Fragment as o } from "react/jsx-runtime";
|
|
2
|
+
function y({ children: d, hoverable: a = !1, className: l = "", style: c, ...n }) {
|
|
3
|
+
const m = [
|
|
4
|
+
"p-6 border border-base-content/10",
|
|
5
|
+
a && "cursor-pointer hover:shadow-md transition-shadow",
|
|
6
|
+
l
|
|
7
|
+
].filter(Boolean).join(" ");
|
|
8
|
+
return /* @__PURE__ */ e("div", { className: m, style: c, ...n, children: d });
|
|
9
|
+
}
|
|
10
|
+
function C({ avatar: d, title: a, description: l, className: c = "", ...n }) {
|
|
11
|
+
return /* @__PURE__ */ s("div", { className: `flex gap-4 ${c}`, ...n, children: [
|
|
12
|
+
d && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: d }),
|
|
13
|
+
/* @__PURE__ */ s("div", { className: "flex-1 min-w-0", children: [
|
|
14
|
+
a && /* @__PURE__ */ e("div", { className: "font-medium", children: a }),
|
|
15
|
+
l && /* @__PURE__ */ e("div", { className: "text-sm opacity-70 mt-1", children: l })
|
|
16
|
+
] })
|
|
17
|
+
] });
|
|
18
|
+
}
|
|
19
|
+
function M({
|
|
20
|
+
children: d,
|
|
21
|
+
title: a,
|
|
22
|
+
extra: l,
|
|
23
|
+
cover: c,
|
|
24
|
+
actions: n,
|
|
25
|
+
className: m = "",
|
|
26
|
+
style: h,
|
|
27
|
+
size: t,
|
|
28
|
+
bordered: b = !0,
|
|
29
|
+
side: k = !1,
|
|
30
|
+
imageFull: f = !1,
|
|
31
|
+
actionsJustify: N = "end",
|
|
32
|
+
loading: g = !1,
|
|
33
|
+
hoverable: j = !1,
|
|
34
|
+
avatar: r,
|
|
35
|
+
description: i,
|
|
36
|
+
...u
|
|
15
37
|
}) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const s = [];
|
|
37
|
-
let t = c;
|
|
38
|
-
for (const l of e) {
|
|
39
|
-
const a = t.find((f) => f.value === l);
|
|
40
|
-
if (!a) break;
|
|
41
|
-
s.push(a), t = a.children || [];
|
|
42
|
-
}
|
|
43
|
-
return s;
|
|
44
|
-
}, [c]), h = r && y.length > 0 ? y : o, v = [];
|
|
45
|
-
v.push(c);
|
|
46
|
-
for (let e = 0; e < h.length; e++) {
|
|
47
|
-
const s = z(e + 1, h);
|
|
48
|
-
s.length > 0 && v.push(s);
|
|
49
|
-
}
|
|
50
|
-
const K = (e, s) => {
|
|
51
|
-
if (e.disabled) return;
|
|
52
|
-
const t = [...h.slice(0, s), e.value];
|
|
53
|
-
e.children && e.children.length > 0 ? u(t) : (p(t), d(!1), u([]), k?.(t, O(t)));
|
|
54
|
-
}, A = (e, s) => {
|
|
55
|
-
if (D !== "hover" || e.disabled) return;
|
|
56
|
-
const t = [...h.slice(0, s), e.value];
|
|
57
|
-
u(t);
|
|
58
|
-
}, R = (e) => {
|
|
59
|
-
e.stopPropagation(), p([]), k?.([], []);
|
|
60
|
-
}, V = (e) => {
|
|
61
|
-
if (!i)
|
|
62
|
-
switch (e.key) {
|
|
63
|
-
case "Enter":
|
|
64
|
-
case " ":
|
|
65
|
-
e.preventDefault(), d(!r);
|
|
66
|
-
break;
|
|
67
|
-
case "Escape":
|
|
68
|
-
e.preventDefault(), d(!1), u([]);
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
}, L = O(o), P = L.map((e) => e.label), q = w ? w(P, L) : P.join(" / "), F = {
|
|
72
|
-
xs: "input-xs text-xs",
|
|
73
|
-
sm: "input-sm text-sm",
|
|
74
|
-
md: "input-md",
|
|
75
|
-
lg: "input-lg text-lg"
|
|
76
|
-
}, G = {
|
|
77
|
-
xs: "text-xs",
|
|
78
|
-
sm: "text-sm",
|
|
79
|
-
md: "text-base",
|
|
80
|
-
lg: "text-lg"
|
|
38
|
+
const v = [
|
|
39
|
+
"card",
|
|
40
|
+
"bg-base-100",
|
|
41
|
+
t && {
|
|
42
|
+
xs: "card-xs",
|
|
43
|
+
sm: "card-sm",
|
|
44
|
+
md: "card-md",
|
|
45
|
+
lg: "card-lg",
|
|
46
|
+
xl: "card-xl"
|
|
47
|
+
}[t],
|
|
48
|
+
// Don't add border when imageFull is used (it breaks the overlay effect)
|
|
49
|
+
b && !f && "border border-base-content/10 shadow-sm",
|
|
50
|
+
k && "card-side",
|
|
51
|
+
f && "image-full shadow-sm",
|
|
52
|
+
j && "transition-shadow hover:shadow-lg cursor-pointer",
|
|
53
|
+
m
|
|
54
|
+
].filter(Boolean).join(" "), w = {
|
|
55
|
+
start: "justify-start",
|
|
56
|
+
center: "justify-center",
|
|
57
|
+
end: "justify-end"
|
|
81
58
|
};
|
|
82
|
-
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
-
"div",
|
|
85
|
-
{
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
59
|
+
if (g)
|
|
60
|
+
return /* @__PURE__ */ s("div", { className: v, style: h, ...u, children: [
|
|
61
|
+
c && /* @__PURE__ */ e("figure", { children: /* @__PURE__ */ e("div", { className: "skeleton h-48 w-full rounded-none" }) }),
|
|
62
|
+
/* @__PURE__ */ s("div", { className: "card-body", children: [
|
|
63
|
+
(r || a) && /* @__PURE__ */ s("div", { className: "flex gap-4 mb-4", children: [
|
|
64
|
+
r && /* @__PURE__ */ e("div", { className: "skeleton w-12 h-12 rounded-full flex-shrink-0" }),
|
|
65
|
+
/* @__PURE__ */ s("div", { className: "flex-1 space-y-2", children: [
|
|
66
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-6 w-2/3" }),
|
|
67
|
+
i && /* @__PURE__ */ e("div", { className: "skeleton h-4 w-full" })
|
|
68
|
+
] })
|
|
69
|
+
] }),
|
|
70
|
+
!r && !a && /* @__PURE__ */ s(o, { children: [
|
|
71
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-6 w-2/3 mb-4" }),
|
|
72
|
+
/* @__PURE__ */ s("div", { className: "space-y-2", children: [
|
|
73
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-4 w-full" }),
|
|
74
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-4 w-5/6" }),
|
|
75
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-4 w-4/6" })
|
|
76
|
+
] })
|
|
77
|
+
] }),
|
|
78
|
+
n && /* @__PURE__ */ s("div", { className: `card-actions ${w[N]} mt-4`, children: [
|
|
79
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-10 w-20" }),
|
|
80
|
+
/* @__PURE__ */ e("div", { className: "skeleton h-10 w-20" })
|
|
81
|
+
] })
|
|
82
|
+
] })
|
|
83
|
+
] });
|
|
84
|
+
const p = r || a && i, x = () => !a && !l ? null : l ? /* @__PURE__ */ s("div", { className: "flex justify-between items-start gap-4", children: [
|
|
85
|
+
a && /* @__PURE__ */ e("h2", { className: "card-title", children: a }),
|
|
86
|
+
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: l })
|
|
87
|
+
] }) : a ? /* @__PURE__ */ e("h2", { className: "card-title", children: a }) : null;
|
|
88
|
+
return /* @__PURE__ */ s("div", { className: v, style: h, ...u, children: [
|
|
89
|
+
c && /* @__PURE__ */ e("figure", { children: c }),
|
|
90
|
+
/* @__PURE__ */ s("div", { className: "card-body", children: [
|
|
91
|
+
p ? /* @__PURE__ */ s(o, { children: [
|
|
92
|
+
/* @__PURE__ */ s("div", { className: "flex gap-4", children: [
|
|
93
|
+
r && /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: r }),
|
|
94
|
+
/* @__PURE__ */ s("div", { className: "flex-1 min-w-0", children: [
|
|
95
|
+
x(),
|
|
96
|
+
i && /* @__PURE__ */ e("p", { className: "text-sm opacity-70 mt-1", children: i })
|
|
118
97
|
] })
|
|
119
|
-
]
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
children: v.map((e, s) => /* @__PURE__ */ n(
|
|
128
|
-
"ul",
|
|
129
|
-
{
|
|
130
|
-
role: "listbox",
|
|
131
|
-
className: `min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${s > 0 ? "border-l border-base-300" : ""}`,
|
|
132
|
-
children: e.map((t) => {
|
|
133
|
-
const l = o[s] === t.value, a = h[s] === t.value, f = t.children && t.children.length > 0;
|
|
134
|
-
return /* @__PURE__ */ m(
|
|
135
|
-
"li",
|
|
136
|
-
{
|
|
137
|
-
role: "option",
|
|
138
|
-
"aria-selected": l,
|
|
139
|
-
"aria-disabled": t.disabled,
|
|
140
|
-
className: `px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${t.disabled ? "text-base-content/30 cursor-not-allowed" : l ? "bg-primary text-primary-content" : a ? "bg-base-200" : "hover:bg-base-200"}`,
|
|
141
|
-
onClick: () => K(t, s),
|
|
142
|
-
onMouseEnter: () => A(t, s),
|
|
143
|
-
children: [
|
|
144
|
-
/* @__PURE__ */ n("span", { children: t.label }),
|
|
145
|
-
f && /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
146
|
-
]
|
|
147
|
-
},
|
|
148
|
-
t.value
|
|
149
|
-
);
|
|
150
|
-
})
|
|
151
|
-
},
|
|
152
|
-
s
|
|
153
|
-
))
|
|
154
|
-
}
|
|
155
|
-
)
|
|
98
|
+
] }),
|
|
99
|
+
d
|
|
100
|
+
] }) : /* @__PURE__ */ s(o, { children: [
|
|
101
|
+
x(),
|
|
102
|
+
d
|
|
103
|
+
] }),
|
|
104
|
+
n && /* @__PURE__ */ e("div", { className: `card-actions ${w[N]}`, children: n })
|
|
105
|
+
] })
|
|
156
106
|
] });
|
|
157
107
|
}
|
|
108
|
+
const G = Object.assign(M, {
|
|
109
|
+
Grid: y,
|
|
110
|
+
Meta: C
|
|
111
|
+
});
|
|
158
112
|
export {
|
|
159
|
-
|
|
113
|
+
G as Card,
|
|
114
|
+
G as default
|
|
160
115
|
};
|
|
161
116
|
//# sourceMappingURL=index14.js.map
|
package/dist/index14.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index14.js","sources":["../src/components/Cascader.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback, useId } from 'react'\n\nexport interface CascaderOption {\n value: string | number\n label: React.ReactNode\n disabled?: boolean\n children?: CascaderOption[]\n}\n\nexport interface CascaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n options: CascaderOption[]\n value?: (string | number)[]\n onChange?: (value: (string | number)[], selectedOptions: CascaderOption[]) => void\n placeholder?: string\n disabled?: boolean\n allowClear?: boolean\n expandTrigger?: 'click' | 'hover'\n displayRender?: (labels: React.ReactNode[], selectedOptions: CascaderOption[]) => React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}\n\nexport function Cascader({\n options,\n value,\n onChange,\n placeholder = 'Please select',\n disabled = false,\n allowClear = true,\n expandTrigger = 'click',\n displayRender,\n size = 'md',\n className = '',\n ...rest\n}: CascaderProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [selectedPath, setSelectedPath] = useState<(string | number)[]>(value || [])\n const [hoveredPath, setHoveredPath] = useState<(string | number)[]>([])\n const containerRef = useRef<HTMLDivElement>(null)\n const inputId = useId()\n const listboxId = useId()\n\n // Sync with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setSelectedPath(value)\n }\n }, [value])\n\n // Close on outside click\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n setHoveredPath([])\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Get options at each level based on path\n const getOptionsAtLevel = useCallback((level: number, path: (string | number)[]): CascaderOption[] => {\n if (level === 0) return options\n\n let currentOptions = options\n for (let i = 0; i < level; i++) {\n const selected = currentOptions.find(opt => opt.value === path[i])\n if (!selected?.children) return []\n currentOptions = selected.children\n }\n return currentOptions\n }, [options])\n\n // Get selected options objects from path\n const getSelectedOptions = useCallback((path: (string | number)[]): CascaderOption[] => {\n const result: CascaderOption[] = []\n let currentOptions = options\n\n for (const val of path) {\n const found = currentOptions.find(opt => opt.value === val)\n if (!found) break\n result.push(found)\n currentOptions = found.children || []\n }\n\n return result\n }, [options])\n\n // Determine which path to use for displaying columns\n const activePath = isOpen ? (hoveredPath.length > 0 ? hoveredPath : selectedPath) : selectedPath\n\n // Build columns to display\n const columns: CascaderOption[][] = []\n columns.push(options)\n\n for (let i = 0; i < activePath.length; i++) {\n const nextOptions = getOptionsAtLevel(i + 1, activePath)\n if (nextOptions.length > 0) {\n columns.push(nextOptions)\n }\n }\n\n const handleOptionClick = (option: CascaderOption, level: number) => {\n if (option.disabled) return\n\n const newPath = [...activePath.slice(0, level), option.value]\n\n if (option.children && option.children.length > 0) {\n // Has children - just expand, don't select yet\n setHoveredPath(newPath)\n } else {\n // Leaf node - select and close\n setSelectedPath(newPath)\n setIsOpen(false)\n setHoveredPath([])\n onChange?.(newPath, getSelectedOptions(newPath))\n }\n }\n\n const handleOptionHover = (option: CascaderOption, level: number) => {\n if (expandTrigger !== 'hover' || option.disabled) return\n\n const newPath = [...activePath.slice(0, level), option.value]\n setHoveredPath(newPath)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n setSelectedPath([])\n onChange?.([], [])\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault()\n setIsOpen(!isOpen)\n break\n case 'Escape':\n e.preventDefault()\n setIsOpen(false)\n setHoveredPath([])\n break\n }\n }\n\n // Display value\n const selectedOptions = getSelectedOptions(selectedPath)\n const labels = selectedOptions.map(opt => opt.label)\n const displayValue = displayRender\n ? displayRender(labels, selectedOptions)\n : labels.join(' / ')\n\n // Size classes\n const sizeClasses = {\n xs: 'input-xs text-xs',\n sm: 'input-sm text-sm',\n md: 'input-md',\n lg: 'input-lg text-lg',\n }\n\n const dropdownSizeClasses = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n }\n\n return (\n <div ref={containerRef} className={`relative inline-block w-full ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n {/* Input/Trigger */}\n <div\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n tabIndex={disabled ? -1 : 0}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${sizeClasses[size]} ${\n disabled ? 'input-disabled cursor-not-allowed' : ''\n } ${isOpen ? 'border-primary' : ''}`}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n >\n <span className={selectedPath.length === 0 ? 'text-base-content/50' : ''}>\n {selectedPath.length > 0 ? displayValue : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && selectedPath.length > 0 && !disabled && (\n <button\n type=\"button\"\n className=\"btn btn-ghost btn-xs btn-circle\"\n onClick={handleClear}\n aria-label=\"Clear selection\"\n >\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n <svg\n className={`w-4 h-4 transition-transform ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </div>\n </div>\n\n {/* Dropdown */}\n {isOpen && (\n <div\n id={listboxId}\n className={`absolute z-50 mt-1 bg-base-100 border border-base-300 rounded-lg shadow-lg flex ${dropdownSizeClasses[size]}`}\n >\n {columns.map((columnOptions, colIndex) => (\n <ul\n key={colIndex}\n role=\"listbox\"\n className={`min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${\n colIndex > 0 ? 'border-l border-base-300' : ''\n }`}\n >\n {columnOptions.map((option) => {\n const isSelected = selectedPath[colIndex] === option.value\n const isHovered = activePath[colIndex] === option.value\n const hasChildren = option.children && option.children.length > 0\n\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n className={`px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${\n option.disabled\n ? 'text-base-content/30 cursor-not-allowed'\n : isSelected\n ? 'bg-primary text-primary-content'\n : isHovered\n ? 'bg-base-200'\n : 'hover:bg-base-200'\n }`}\n onClick={() => handleOptionClick(option, colIndex)}\n onMouseEnter={() => handleOptionHover(option, colIndex)}\n >\n <span>{option.label}</span>\n {hasChildren && (\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n )}\n </li>\n )\n })}\n </ul>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["Cascader","options","value","onChange","placeholder","disabled","allowClear","expandTrigger","displayRender","size","className","rest","isOpen","setIsOpen","useState","selectedPath","setSelectedPath","hoveredPath","setHoveredPath","containerRef","useRef","inputId","useId","listboxId","useEffect","handleClickOutside","e","getOptionsAtLevel","useCallback","level","path","currentOptions","i","selected","opt","getSelectedOptions","result","val","found","activePath","columns","nextOptions","handleOptionClick","option","newPath","handleOptionHover","handleClear","handleKeyDown","selectedOptions","labels","displayValue","sizeClasses","dropdownSizeClasses","jsxs","jsx","columnOptions","colIndex","isSelected","isHovered","hasChildren"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index14.js","sources":["../src/components/Card.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n children?: React.ReactNode\n title?: React.ReactNode\n /** Content in the top-right corner of the card header */\n extra?: React.ReactNode\n cover?: React.ReactNode\n actions?: React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n bordered?: boolean\n side?: boolean\n imageFull?: boolean\n actionsJustify?: 'start' | 'center' | 'end'\n loading?: boolean\n hoverable?: boolean\n // Meta props for avatar + description layout\n avatar?: React.ReactNode\n description?: React.ReactNode\n}\n\nexport interface CardMetaProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Avatar or icon element */\n avatar?: React.ReactNode\n /** Title content */\n title?: React.ReactNode\n /** Description content */\n description?: React.ReactNode\n}\n\nexport interface CardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hoverable?: boolean\n}\n\nfunction CardGrid({ children, hoverable = false, className = '', style, ...rest }: CardGridProps) {\n const classes = [\n 'p-6 border border-base-content/10',\n hoverable && 'cursor-pointer hover:shadow-md transition-shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes} style={style} {...rest}>\n {children}\n </div>\n )\n}\n\nfunction CardMeta({ avatar, title, description, className = '', ...rest }: CardMetaProps) {\n return (\n <div className={`flex gap-4 ${className}`} {...rest}>\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-medium\">{title}</div>}\n {description && <div className=\"text-sm opacity-70 mt-1\">{description}</div>}\n </div>\n </div>\n )\n}\n\nfunction CardRoot({\n children,\n title,\n extra,\n cover,\n actions,\n className = '',\n style,\n size,\n bordered = true,\n side = false,\n imageFull = false,\n actionsJustify = 'end',\n loading = false,\n hoverable = false,\n avatar,\n description,\n ...rest\n}: CardProps) {\n const sizeClasses: Record<string, string> = {\n xs: 'card-xs',\n sm: 'card-sm',\n md: 'card-md',\n lg: 'card-lg',\n xl: 'card-xl',\n }\n\n const classes = [\n 'card',\n 'bg-base-100',\n size && sizeClasses[size],\n // Don't add border when imageFull is used (it breaks the overlay effect)\n bordered && !imageFull && 'border border-base-content/10 shadow-sm',\n side && 'card-side',\n imageFull && 'image-full shadow-sm',\n hoverable && 'transition-shadow hover:shadow-lg cursor-pointer',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const justifyClasses: Record<string, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n }\n\n if (loading) {\n return (\n <div className={classes} style={style} {...rest}>\n {cover && (\n <figure>\n <div className=\"skeleton h-48 w-full rounded-none\" />\n </figure>\n )}\n <div className=\"card-body\">\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className=\"skeleton w-12 h-12 rounded-full flex-shrink-0\" />}\n <div className=\"flex-1 space-y-2\">\n <div className=\"skeleton h-6 w-2/3\" />\n {description && <div className=\"skeleton h-4 w-full\" />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className=\"skeleton h-6 w-2/3 mb-4\" />\n <div className=\"space-y-2\">\n <div className=\"skeleton h-4 w-full\" />\n <div className=\"skeleton h-4 w-5/6\" />\n <div className=\"skeleton h-4 w-4/6\" />\n </div>\n </>\n )}\n {actions && (\n <div className={`card-actions ${justifyClasses[actionsJustify]} mt-4`}>\n <div className=\"skeleton h-10 w-20\" />\n <div className=\"skeleton h-10 w-20\" />\n </div>\n )}\n </div>\n </div>\n )\n }\n\n // Render with avatar + title + description layout (meta style)\n const hasMetaLayout = avatar || (title && description)\n\n // Header with title and extra\n const renderHeader = () => {\n if (!title && !extra) return null\n\n if (extra) {\n return (\n <div className=\"flex justify-between items-start gap-4\">\n {title && <h2 className=\"card-title\">{title}</h2>}\n <div className=\"flex-shrink-0\">{extra}</div>\n </div>\n )\n }\n\n return title ? <h2 className=\"card-title\">{title}</h2> : null\n }\n\n return (\n <div className={classes} style={style} {...rest}>\n {cover && <figure>{cover}</figure>}\n <div className=\"card-body\">\n {hasMetaLayout ? (\n <>\n <div className=\"flex gap-4\">\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {renderHeader()}\n {description && <p className=\"text-sm opacity-70 mt-1\">{description}</p>}\n </div>\n </div>\n {children}\n </>\n ) : (\n <>\n {renderHeader()}\n {children}\n </>\n )}\n {actions && <div className={`card-actions ${justifyClasses[actionsJustify]}`}>{actions}</div>}\n </div>\n </div>\n )\n}\n\nexport const Card = Object.assign(CardRoot, {\n Grid: CardGrid,\n Meta: CardMeta,\n})\n\nexport default Card\n"],"names":["CardGrid","children","hoverable","className","style","rest","classes","CardMeta","avatar","title","description","jsx","jsxs","CardRoot","extra","cover","actions","size","bordered","side","imageFull","actionsJustify","loading","justifyClasses","Fragment","hasMetaLayout","renderHeader","Card"],"mappings":"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"}
|
package/dist/index15.js
CHANGED
|
@@ -1,153 +1,161 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useRef as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"--color-warning",
|
|
23
|
-
"--color-error"
|
|
24
|
-
].map((e) => {
|
|
25
|
-
const t = S(e);
|
|
26
|
-
return t.includes("oklch") ? x(t) : t;
|
|
27
|
-
}).filter(Boolean);
|
|
28
|
-
}
|
|
29
|
-
function A() {
|
|
30
|
-
const o = V(), e = S("--color-base-content"), t = e.includes("oklch") ? x(e) : e || "#888888", r = S("--color-base-300"), a = r.includes("oklch") ? x(r) : r || "#e0e0e0", c = t.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i), l = c ? (parseInt(c[1], 16) + parseInt(c[2], 16) + parseInt(c[3], 16)) / 3 > 128 : !1;
|
|
31
|
-
return {
|
|
32
|
-
colors: o.length > 0 ? o : void 0,
|
|
33
|
-
theme: {
|
|
34
|
-
mode: l ? "dark" : "light"
|
|
35
|
-
},
|
|
36
|
-
chart: {
|
|
37
|
-
background: "transparent",
|
|
38
|
-
foreColor: t
|
|
39
|
-
},
|
|
40
|
-
grid: {
|
|
41
|
-
borderColor: a
|
|
42
|
-
},
|
|
43
|
-
xaxis: {
|
|
44
|
-
labels: {
|
|
45
|
-
style: {
|
|
46
|
-
colors: t
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
axisBorder: {
|
|
50
|
-
color: a
|
|
51
|
-
},
|
|
52
|
-
axisTicks: {
|
|
53
|
-
color: a
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
yaxis: {
|
|
57
|
-
labels: {
|
|
58
|
-
style: {
|
|
59
|
-
colors: t
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
legend: {
|
|
64
|
-
labels: {
|
|
65
|
-
colors: t
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
tooltip: {
|
|
69
|
-
theme: l ? "dark" : "light",
|
|
70
|
-
style: {
|
|
71
|
-
fontSize: "12px"
|
|
72
|
-
},
|
|
73
|
-
x: {
|
|
74
|
-
show: !0
|
|
75
|
-
},
|
|
76
|
-
marker: {
|
|
77
|
-
show: !0
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
dataLabels: {
|
|
81
|
-
style: {
|
|
82
|
-
colors: [t, t, t, t, t, t, t]
|
|
83
|
-
},
|
|
84
|
-
background: {
|
|
85
|
-
enabled: !1
|
|
86
|
-
},
|
|
87
|
-
dropShadow: {
|
|
88
|
-
enabled: !1
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
function h(o, e) {
|
|
94
|
-
const t = { ...o };
|
|
95
|
-
for (const r in e)
|
|
96
|
-
e[r] !== void 0 && (typeof e[r] == "object" && e[r] !== null && !Array.isArray(e[r]) && typeof o[r] == "object" && o[r] !== null && !Array.isArray(o[r]) ? t[r] = h(
|
|
97
|
-
o[r],
|
|
98
|
-
e[r]
|
|
99
|
-
) : t[r] = e[r]);
|
|
100
|
-
return t;
|
|
101
|
-
}
|
|
102
|
-
const $ = ({
|
|
103
|
-
type: o,
|
|
104
|
-
series: e,
|
|
105
|
-
width: t = "100%",
|
|
106
|
-
height: r = 350,
|
|
107
|
-
options: a = {},
|
|
108
|
-
themed: c = !0,
|
|
109
|
-
className: l = ""
|
|
110
|
-
}) => {
|
|
111
|
-
const u = C(null), n = C(null), [, f] = v(!1), i = () => {
|
|
112
|
-
const s = {
|
|
113
|
-
chart: {
|
|
114
|
-
type: o,
|
|
115
|
-
width: t,
|
|
116
|
-
height: r
|
|
117
|
-
},
|
|
118
|
-
series: e
|
|
1
|
+
import { jsxs as m, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as g, useRef as I, useId as j, useEffect as $, useCallback as E } from "react";
|
|
3
|
+
function T({
|
|
4
|
+
options: c,
|
|
5
|
+
value: b,
|
|
6
|
+
onChange: k,
|
|
7
|
+
placeholder: M = "Please select",
|
|
8
|
+
disabled: i = !1,
|
|
9
|
+
allowClear: S = !0,
|
|
10
|
+
expandTrigger: D = "click",
|
|
11
|
+
displayRender: w,
|
|
12
|
+
size: C = "md",
|
|
13
|
+
className: B = "",
|
|
14
|
+
...H
|
|
15
|
+
}) {
|
|
16
|
+
const [r, d] = g(!1), [o, p] = g(b || []), [y, u] = g([]), x = I(null), W = j(), N = j();
|
|
17
|
+
$(() => {
|
|
18
|
+
b !== void 0 && p(b);
|
|
19
|
+
}, [b]), $(() => {
|
|
20
|
+
const e = (s) => {
|
|
21
|
+
x.current && !x.current.contains(s.target) && (d(!1), u([]));
|
|
119
22
|
};
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
23
|
+
if (r)
|
|
24
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
25
|
+
}, [r]);
|
|
26
|
+
const z = E((e, s) => {
|
|
27
|
+
if (e === 0) return c;
|
|
28
|
+
let t = c;
|
|
29
|
+
for (let l = 0; l < e; l++) {
|
|
30
|
+
const a = t.find((f) => f.value === s[l]);
|
|
31
|
+
if (!a?.children) return [];
|
|
32
|
+
t = a.children;
|
|
123
33
|
}
|
|
124
|
-
return
|
|
34
|
+
return t;
|
|
35
|
+
}, [c]), O = E((e) => {
|
|
36
|
+
const s = [];
|
|
37
|
+
let t = c;
|
|
38
|
+
for (const l of e) {
|
|
39
|
+
const a = t.find((f) => f.value === l);
|
|
40
|
+
if (!a) break;
|
|
41
|
+
s.push(a), t = a.children || [];
|
|
42
|
+
}
|
|
43
|
+
return s;
|
|
44
|
+
}, [c]), h = r && y.length > 0 ? y : o, v = [];
|
|
45
|
+
v.push(c);
|
|
46
|
+
for (let e = 0; e < h.length; e++) {
|
|
47
|
+
const s = z(e + 1, h);
|
|
48
|
+
s.length > 0 && v.push(s);
|
|
49
|
+
}
|
|
50
|
+
const K = (e, s) => {
|
|
51
|
+
if (e.disabled) return;
|
|
52
|
+
const t = [...h.slice(0, s), e.value];
|
|
53
|
+
e.children && e.children.length > 0 ? u(t) : (p(t), d(!1), u([]), k?.(t, O(t)));
|
|
54
|
+
}, A = (e, s) => {
|
|
55
|
+
if (D !== "hover" || e.disabled) return;
|
|
56
|
+
const t = [...h.slice(0, s), e.value];
|
|
57
|
+
u(t);
|
|
58
|
+
}, R = (e) => {
|
|
59
|
+
e.stopPropagation(), p([]), k?.([], []);
|
|
60
|
+
}, V = (e) => {
|
|
61
|
+
if (!i)
|
|
62
|
+
switch (e.key) {
|
|
63
|
+
case "Enter":
|
|
64
|
+
case " ":
|
|
65
|
+
e.preventDefault(), d(!r);
|
|
66
|
+
break;
|
|
67
|
+
case "Escape":
|
|
68
|
+
e.preventDefault(), d(!1), u([]);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}, L = O(o), P = L.map((e) => e.label), q = w ? w(P, L) : P.join(" / "), F = {
|
|
72
|
+
xs: "input-xs text-xs",
|
|
73
|
+
sm: "input-sm text-sm",
|
|
74
|
+
md: "input-md",
|
|
75
|
+
lg: "input-lg text-lg"
|
|
76
|
+
}, G = {
|
|
77
|
+
xs: "text-xs",
|
|
78
|
+
sm: "text-sm",
|
|
79
|
+
md: "text-base",
|
|
80
|
+
lg: "text-lg"
|
|
125
81
|
};
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
82
|
+
return /* @__PURE__ */ m("div", { ref: x, className: `relative inline-block w-full ${B}`, "data-state": r ? "open" : "closed", ...H, children: [
|
|
83
|
+
/* @__PURE__ */ m(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
id: W,
|
|
87
|
+
role: "combobox",
|
|
88
|
+
"aria-expanded": r,
|
|
89
|
+
"aria-haspopup": "listbox",
|
|
90
|
+
"aria-controls": N,
|
|
91
|
+
tabIndex: i ? -1 : 0,
|
|
92
|
+
className: `input input-bordered w-full flex items-center justify-between cursor-pointer ${F[C]} ${i ? "input-disabled cursor-not-allowed" : ""} ${r ? "border-primary" : ""}`,
|
|
93
|
+
onClick: () => !i && d(!r),
|
|
94
|
+
onKeyDown: V,
|
|
95
|
+
children: [
|
|
96
|
+
/* @__PURE__ */ n("span", { className: o.length === 0 ? "text-base-content/50" : "", children: o.length > 0 ? q : M }),
|
|
97
|
+
/* @__PURE__ */ m("div", { className: "flex items-center gap-1", children: [
|
|
98
|
+
S && o.length > 0 && !i && /* @__PURE__ */ n(
|
|
99
|
+
"button",
|
|
100
|
+
{
|
|
101
|
+
type: "button",
|
|
102
|
+
className: "btn btn-ghost btn-xs btn-circle",
|
|
103
|
+
onClick: R,
|
|
104
|
+
"aria-label": "Clear selection",
|
|
105
|
+
children: /* @__PURE__ */ n("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
/* @__PURE__ */ n(
|
|
109
|
+
"svg",
|
|
110
|
+
{
|
|
111
|
+
className: `w-4 h-4 transition-transform ${r ? "rotate-180" : ""}`,
|
|
112
|
+
fill: "none",
|
|
113
|
+
viewBox: "0 0 24 24",
|
|
114
|
+
stroke: "currentColor",
|
|
115
|
+
children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
] })
|
|
119
|
+
]
|
|
142
120
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
121
|
+
),
|
|
122
|
+
r && /* @__PURE__ */ n(
|
|
123
|
+
"div",
|
|
124
|
+
{
|
|
125
|
+
id: N,
|
|
126
|
+
className: `absolute z-50 mt-1 bg-base-100 border border-base-300 rounded-lg shadow-lg flex ${G[C]}`,
|
|
127
|
+
children: v.map((e, s) => /* @__PURE__ */ n(
|
|
128
|
+
"ul",
|
|
129
|
+
{
|
|
130
|
+
role: "listbox",
|
|
131
|
+
className: `min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${s > 0 ? "border-l border-base-300" : ""}`,
|
|
132
|
+
children: e.map((t) => {
|
|
133
|
+
const l = o[s] === t.value, a = h[s] === t.value, f = t.children && t.children.length > 0;
|
|
134
|
+
return /* @__PURE__ */ m(
|
|
135
|
+
"li",
|
|
136
|
+
{
|
|
137
|
+
role: "option",
|
|
138
|
+
"aria-selected": l,
|
|
139
|
+
"aria-disabled": t.disabled,
|
|
140
|
+
className: `px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${t.disabled ? "text-base-content/30 cursor-not-allowed" : l ? "bg-primary text-primary-content" : a ? "bg-base-200" : "hover:bg-base-200"}`,
|
|
141
|
+
onClick: () => K(t, s),
|
|
142
|
+
onMouseEnter: () => A(t, s),
|
|
143
|
+
children: [
|
|
144
|
+
/* @__PURE__ */ n("span", { children: t.label }),
|
|
145
|
+
f && /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
t.value
|
|
149
|
+
);
|
|
150
|
+
})
|
|
151
|
+
},
|
|
152
|
+
s
|
|
153
|
+
))
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
] });
|
|
157
|
+
}
|
|
150
158
|
export {
|
|
151
|
-
|
|
159
|
+
T as Cascader
|
|
152
160
|
};
|
|
153
161
|
//# sourceMappingURL=index15.js.map
|