asterui 0.12.13 → 0.12.15
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/Autocomplete.d.ts +22 -2
- package/dist/components/Button.d.ts +14 -5
- package/dist/components/Drawer.d.ts +47 -6
- package/dist/components/Dropdown.d.ts +65 -9
- package/dist/components/Form.d.ts +11 -1
- package/dist/components/Input.d.ts +15 -1
- package/dist/components/Modal.d.ts +5 -1
- package/dist/components/Navbar.d.ts +15 -1
- package/dist/components/Rating.d.ts +12 -4
- package/dist/components/SidebarDrawer.d.ts +21 -0
- package/dist/components/Tabs.d.ts +30 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +169 -167
- package/dist/index.js.map +1 -1
- package/dist/index100.js +44 -11
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +10 -12
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +14 -7
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +7 -12
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +11 -29
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +29 -16
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +21 -0
- package/dist/index106.js.map +1 -0
- package/dist/index21.js +1 -1
- package/dist/index26.js +171 -40
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +41 -17
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +17 -33
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +33 -52
- package/dist/index29.js.map +1 -1
- package/dist/index30.js +50 -61
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +60 -181
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +184 -18
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +15 -217
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +230 -1083
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +1086 -16
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +16 -121
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +119 -37
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +34 -208
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +390 -89
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +93 -158
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +211 -135
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +155 -15
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +15 -17
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +17 -21
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +18 -134
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +134 -10
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +13 -35
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +35 -34
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +34 -81
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +161 -80
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +71 -166
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +167 -144
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +152 -11
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +10 -20
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +22 -14
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +14 -7
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +6 -310
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +334 -17
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +47 -122
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +120 -108
- package/dist/index59.js.map +1 -1
- package/dist/index60.js +107 -167
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +167 -29
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +30 -120
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +116 -80
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +85 -19
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +19 -73
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +71 -54
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +56 -44
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +42 -49
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +52 -62
- package/dist/index69.js.map +1 -1
- package/dist/index70.js +118 -102
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +107 -41
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +41 -68
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +66 -19
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +18 -55
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +55 -251
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +254 -22
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +22 -31
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +30 -93
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +89 -324
- package/dist/index79.js.map +1 -1
- package/dist/index80.js +323 -50
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +79 -39
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +40 -23
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +21 -93
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +87 -148
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +147 -152
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +159 -63
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +65 -35
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +35 -234
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +231 -31
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +73 -46
- package/dist/index9.js.map +1 -1
- package/dist/index90.js +34 -210
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +195 -198
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +159 -241
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +283 -166
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +173 -253
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +258 -14
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +12 -31
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +32 -5
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +5 -13
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +11 -43
- package/dist/index99.js.map +1 -1
- package/package.json +1 -1
package/dist/index38.js
CHANGED
|
@@ -1,217 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
...p
|
|
21
|
-
}) {
|
|
22
|
-
const f = B(), l = B(), [c, g] = E(!1), [C, x] = E(-1), [A, k] = E(0), e = v(/* @__PURE__ */ new Map()), D = v(null), m = a !== void 0, b = m ? a : c, K = R((w) => {
|
|
23
|
-
t || (m || g(w), o?.(w));
|
|
24
|
-
}, [t, m, o]), $ = R((w, y, V) => {
|
|
25
|
-
y ? e.current.set(w, { ref: y, disabled: V }) : e.current.delete(w);
|
|
26
|
-
}, []);
|
|
27
|
-
O(() => {
|
|
28
|
-
const w = (y) => {
|
|
29
|
-
D.current && !D.current.contains(y.target) && (K(!1), x(-1));
|
|
30
|
-
};
|
|
31
|
-
if (b)
|
|
32
|
-
return document.addEventListener("mousedown", w), () => document.removeEventListener("mousedown", w);
|
|
33
|
-
}, [b]);
|
|
34
|
-
const M = {
|
|
35
|
-
top: "dropdown-top",
|
|
36
|
-
bottom: "dropdown-bottom",
|
|
37
|
-
left: "dropdown-left",
|
|
38
|
-
right: "dropdown-right"
|
|
39
|
-
}, P = {
|
|
40
|
-
start: "",
|
|
41
|
-
center: "dropdown-center",
|
|
42
|
-
end: "dropdown-end"
|
|
43
|
-
}, T = [
|
|
44
|
-
"dropdown",
|
|
45
|
-
M[u],
|
|
46
|
-
P[r],
|
|
47
|
-
d && "dropdown-hover",
|
|
48
|
-
b && "dropdown-open",
|
|
49
|
-
i
|
|
50
|
-
].filter(Boolean).join(" ");
|
|
51
|
-
return /* @__PURE__ */ I(
|
|
52
|
-
F.Provider,
|
|
53
|
-
{
|
|
54
|
-
value: {
|
|
55
|
-
position: u,
|
|
56
|
-
align: r,
|
|
57
|
-
menuId: f,
|
|
58
|
-
triggerId: l,
|
|
59
|
-
isOpen: b,
|
|
60
|
-
setIsOpen: K,
|
|
61
|
-
focusedIndex: C,
|
|
62
|
-
setFocusedIndex: x,
|
|
63
|
-
registerItem: $,
|
|
64
|
-
itemCount: A,
|
|
65
|
-
setItemCount: k,
|
|
66
|
-
disabled: t,
|
|
67
|
-
arrow: s
|
|
68
|
-
},
|
|
69
|
-
children: /* @__PURE__ */ I("div", { ref: D, className: T, "data-state": b ? "open" : "closed", "aria-disabled": t || void 0, ...p, children: n })
|
|
70
|
-
}
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
function z({ children: n, className: d = "" }) {
|
|
74
|
-
const { menuId: u, triggerId: r, isOpen: a, setIsOpen: o, setFocusedIndex: t, itemCount: s, disabled: i } = j(), p = (l) => {
|
|
75
|
-
switch (l.key) {
|
|
76
|
-
case "Enter":
|
|
77
|
-
case " ":
|
|
78
|
-
case "ArrowDown":
|
|
79
|
-
l.preventDefault(), o(!0), t(0);
|
|
80
|
-
break;
|
|
81
|
-
case "ArrowUp":
|
|
82
|
-
l.preventDefault(), o(!0), t(s - 1);
|
|
83
|
-
break;
|
|
84
|
-
case "Escape":
|
|
85
|
-
l.preventDefault(), o(!1), t(-1);
|
|
1
|
+
import { jsxs as p, jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import b from "react";
|
|
3
|
+
const j = ({
|
|
4
|
+
position: r = "top-end",
|
|
5
|
+
children: s,
|
|
6
|
+
className: c = "",
|
|
7
|
+
...o
|
|
8
|
+
}) => {
|
|
9
|
+
const n = (d) => {
|
|
10
|
+
const [l, h] = d.split("-"), t = [];
|
|
11
|
+
switch (l) {
|
|
12
|
+
case "top":
|
|
13
|
+
t.push("indicator-top");
|
|
14
|
+
break;
|
|
15
|
+
case "middle":
|
|
16
|
+
t.push("indicator-middle");
|
|
17
|
+
break;
|
|
18
|
+
case "bottom":
|
|
19
|
+
t.push("indicator-bottom");
|
|
86
20
|
break;
|
|
87
21
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return /* @__PURE__ */ I(
|
|
92
|
-
"button",
|
|
93
|
-
{
|
|
94
|
-
id: r,
|
|
95
|
-
type: "button",
|
|
96
|
-
tabIndex: i ? -1 : 0,
|
|
97
|
-
className: `btn ${d}`,
|
|
98
|
-
"aria-haspopup": "menu",
|
|
99
|
-
"aria-expanded": a,
|
|
100
|
-
"aria-controls": u,
|
|
101
|
-
disabled: i,
|
|
102
|
-
onClick: f,
|
|
103
|
-
onKeyDown: p,
|
|
104
|
-
children: n
|
|
105
|
-
}
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
function H({ children: n, className: d = "" }) {
|
|
109
|
-
const { menuId: u, triggerId: r, isOpen: a, setIsOpen: o, focusedIndex: t, setFocusedIndex: s, setItemCount: i, arrow: p, position: f } = j(), l = v(null), c = h.Children.toArray(n).filter(
|
|
110
|
-
(e) => h.isValidElement(e) && e.type === N
|
|
111
|
-
);
|
|
112
|
-
O(() => {
|
|
113
|
-
i(c.length);
|
|
114
|
-
}, [c.length, i]), O(() => {
|
|
115
|
-
a && t >= 0 && l.current && l.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')[t]?.focus();
|
|
116
|
-
}, [a, t]);
|
|
117
|
-
const g = (e) => {
|
|
118
|
-
const m = c.filter(
|
|
119
|
-
(b) => h.isValidElement(b) && !b.props.disabled
|
|
120
|
-
).length;
|
|
121
|
-
switch (e.key) {
|
|
122
|
-
case "ArrowDown":
|
|
123
|
-
e.preventDefault(), s((t + 1) % m);
|
|
124
|
-
break;
|
|
125
|
-
case "ArrowUp":
|
|
126
|
-
e.preventDefault(), s((t - 1 + m) % m);
|
|
127
|
-
break;
|
|
128
|
-
case "Home":
|
|
129
|
-
e.preventDefault(), s(0);
|
|
22
|
+
switch (h) {
|
|
23
|
+
case "start":
|
|
24
|
+
t.push("indicator-start");
|
|
130
25
|
break;
|
|
131
|
-
case "
|
|
132
|
-
|
|
26
|
+
case "center":
|
|
27
|
+
t.push("indicator-center");
|
|
133
28
|
break;
|
|
134
|
-
case "
|
|
135
|
-
|
|
29
|
+
case "end":
|
|
30
|
+
t.push("indicator-end");
|
|
136
31
|
break;
|
|
137
|
-
case "Tab":
|
|
138
|
-
o(!1), s(-1);
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
}, C = [
|
|
142
|
-
"dropdown-content",
|
|
143
|
-
"menu",
|
|
144
|
-
"bg-base-100",
|
|
145
|
-
"rounded-box",
|
|
146
|
-
"z-50",
|
|
147
|
-
"shadow",
|
|
148
|
-
d
|
|
149
|
-
].filter(Boolean).join(" "), x = h.Children.map(n, (e, D) => h.isValidElement(e) && e.type === N ? h.cloneElement(e, { _index: D }) : e), k = p ? /* @__PURE__ */ I(
|
|
150
|
-
"span",
|
|
151
|
-
{
|
|
152
|
-
className: `absolute w-0 h-0 border-8 border-solid ${{
|
|
153
|
-
top: "bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-t-base-100 border-l-transparent border-r-transparent border-b-transparent",
|
|
154
|
-
bottom: "top-0 left-1/2 -translate-x-1/2 -translate-y-full border-b-base-100 border-l-transparent border-r-transparent border-t-transparent",
|
|
155
|
-
left: "right-0 top-1/2 -translate-y-1/2 translate-x-full border-l-base-100 border-t-transparent border-b-transparent border-r-transparent",
|
|
156
|
-
right: "left-0 top-1/2 -translate-y-1/2 -translate-x-full border-r-base-100 border-t-transparent border-b-transparent border-l-transparent"
|
|
157
|
-
}[f || "bottom"]}`,
|
|
158
|
-
"aria-hidden": "true"
|
|
159
|
-
}
|
|
160
|
-
) : null;
|
|
161
|
-
return /* @__PURE__ */ L(
|
|
162
|
-
"ul",
|
|
163
|
-
{
|
|
164
|
-
ref: l,
|
|
165
|
-
id: u,
|
|
166
|
-
role: "menu",
|
|
167
|
-
"aria-labelledby": r,
|
|
168
|
-
tabIndex: -1,
|
|
169
|
-
className: `${C} ${p ? "relative" : ""}`,
|
|
170
|
-
onKeyDown: g,
|
|
171
|
-
children: [
|
|
172
|
-
k,
|
|
173
|
-
x
|
|
174
|
-
]
|
|
175
32
|
}
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
danger: a = !1,
|
|
184
|
-
className: o = ""
|
|
185
|
-
}) {
|
|
186
|
-
const { setIsOpen: t, setFocusedIndex: s, triggerId: i } = j(), p = [u && "active", r && "disabled", o].filter(Boolean).join(" "), f = () => {
|
|
187
|
-
r || (d?.(), t(!1), s(-1), document.getElementById(i)?.focus());
|
|
188
|
-
};
|
|
189
|
-
return /* @__PURE__ */ I("li", { className: p, role: "none", children: /* @__PURE__ */ I(
|
|
190
|
-
"a",
|
|
191
|
-
{
|
|
192
|
-
role: "menuitem",
|
|
193
|
-
tabIndex: r ? -1 : 0,
|
|
194
|
-
"aria-disabled": r || void 0,
|
|
195
|
-
className: a ? "text-error" : "",
|
|
196
|
-
onClick: f,
|
|
197
|
-
onKeyDown: (c) => {
|
|
198
|
-
(c.key === "Enter" || c.key === " ") && !r && (c.preventDefault(), f());
|
|
199
|
-
},
|
|
200
|
-
children: n
|
|
201
|
-
}
|
|
202
|
-
) });
|
|
203
|
-
}
|
|
204
|
-
function W({ className: n = "" }) {
|
|
205
|
-
const d = ["border-base-content/10", n].filter(Boolean).join(" ");
|
|
206
|
-
return /* @__PURE__ */ I("li", { role: "separator", className: "my-1", children: /* @__PURE__ */ I("hr", { className: d }) });
|
|
207
|
-
}
|
|
208
|
-
const J = Object.assign(q, {
|
|
209
|
-
Trigger: z,
|
|
210
|
-
Menu: H,
|
|
211
|
-
Item: N,
|
|
212
|
-
Divider: W
|
|
213
|
-
});
|
|
33
|
+
return t.join(" ");
|
|
34
|
+
}, e = b.Children.toArray(s), a = e[0], i = e[1];
|
|
35
|
+
return /* @__PURE__ */ p("div", { className: `indicator inline-block ${c}`, ...o, children: [
|
|
36
|
+
i && /* @__PURE__ */ m("div", { className: `indicator-item ${n(r)}`, children: i }),
|
|
37
|
+
a
|
|
38
|
+
] });
|
|
39
|
+
};
|
|
214
40
|
export {
|
|
215
|
-
|
|
41
|
+
j as Indicator
|
|
216
42
|
};
|
|
217
43
|
//# sourceMappingURL=index38.js.map
|
package/dist/index38.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index38.js","sources":["../src/components/Dropdown.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useRef, useState, useCallback, useEffect } from 'react'\n\ninterface DropdownContextValue {\n position?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n menuId: string\n triggerId: string\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n registerItem: (index: number, ref: HTMLElement | null, disabled: boolean) => void\n itemCount: number\n setItemCount: (count: number) => void\n disabled: boolean\n arrow: boolean\n}\n\nconst DropdownContext = createContext<DropdownContextValue | undefined>(undefined)\n\nfunction useDropdownContext() {\n const context = useContext(DropdownContext)\n if (!context) {\n throw new Error('Dropdown compound components must be used within Dropdown')\n }\n return context\n}\n\nexport interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hover?: boolean\n position?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n /** Controlled open state */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Disable the dropdown */\n disabled?: boolean\n /** Show arrow pointing to trigger */\n arrow?: boolean\n}\n\nexport interface DropdownTriggerProps {\n children: React.ReactNode\n className?: string\n}\n\nexport interface DropdownMenuProps {\n children: React.ReactNode\n className?: string\n}\n\nexport interface DropdownItemProps {\n children: React.ReactNode\n onClick?: () => void\n active?: boolean\n disabled?: boolean\n danger?: boolean\n className?: string\n _index?: number // Internal prop passed by DropdownMenu\n}\n\nexport interface DropdownDividerProps {\n className?: string\n}\n\nfunction DropdownRoot({\n children,\n hover = false,\n position = 'bottom',\n align = 'start',\n open: controlledOpen,\n onOpenChange,\n disabled = false,\n arrow = false,\n className = '',\n ...rest\n}: DropdownProps) {\n const menuId = useId()\n const triggerId = useId()\n const [internalOpen, setInternalOpen] = useState(false)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [itemCount, setItemCount] = useState(0)\n const itemRefs = useRef<Map<number, { ref: HTMLElement | null; disabled: boolean }>>(new Map())\n const dropdownRef = useRef<HTMLDivElement>(null)\n\n // Use controlled or uncontrolled open state\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const setIsOpen = useCallback((open: boolean) => {\n if (disabled) return\n if (!isControlled) {\n setInternalOpen(open)\n }\n onOpenChange?.(open)\n }, [disabled, isControlled, onOpenChange])\n\n const registerItem = useCallback((index: number, ref: HTMLElement | null, disabled: boolean) => {\n if (ref) {\n itemRefs.current.set(index, { ref, disabled })\n } else {\n itemRefs.current.delete(index)\n }\n }, [])\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n setFocusedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const positionClasses: Record<string, string> = {\n top: 'dropdown-top',\n bottom: 'dropdown-bottom',\n left: 'dropdown-left',\n right: 'dropdown-right',\n }\n\n const alignClasses: Record<string, string> = {\n start: '',\n center: 'dropdown-center',\n end: 'dropdown-end',\n }\n\n const dropdownClasses = [\n 'dropdown',\n positionClasses[position],\n alignClasses[align],\n hover && 'dropdown-hover',\n isOpen && 'dropdown-open',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <DropdownContext.Provider\n value={{\n position,\n align,\n menuId,\n triggerId,\n isOpen,\n setIsOpen,\n focusedIndex,\n setFocusedIndex,\n registerItem,\n itemCount,\n setItemCount,\n disabled,\n arrow,\n }}\n >\n <div ref={dropdownRef} className={dropdownClasses} data-state={isOpen ? 'open' : 'closed'} aria-disabled={disabled || undefined} {...rest}>{children}</div>\n </DropdownContext.Provider>\n )\n}\n\nfunction DropdownTrigger({ children, className = '' }: DropdownTriggerProps) {\n const { menuId, triggerId, isOpen, setIsOpen, setFocusedIndex, itemCount, disabled } = useDropdownContext()\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault()\n setIsOpen(true)\n setFocusedIndex(0)\n break\n case 'ArrowUp':\n event.preventDefault()\n setIsOpen(true)\n setFocusedIndex(itemCount - 1)\n break\n case 'Escape':\n event.preventDefault()\n setIsOpen(false)\n setFocusedIndex(-1)\n break\n }\n }\n\n const handleClick = () => {\n setIsOpen(!isOpen)\n if (!isOpen) {\n setFocusedIndex(0)\n }\n }\n\n return (\n <button\n id={triggerId}\n type=\"button\"\n tabIndex={disabled ? -1 : 0}\n className={`btn ${className}`}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={menuId}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </button>\n )\n}\n\nfunction DropdownMenu({ children, className = '' }: DropdownMenuProps) {\n const { menuId, triggerId, isOpen, setIsOpen, focusedIndex, setFocusedIndex, setItemCount, arrow, position } = useDropdownContext()\n const menuRef = useRef<HTMLUListElement>(null)\n\n // Count children and set item count\n const childArray = React.Children.toArray(children).filter(\n (child) => React.isValidElement(child) && (child.type === DropdownItem)\n )\n\n useEffect(() => {\n setItemCount(childArray.length)\n }, [childArray.length, setItemCount])\n\n // Focus management\n useEffect(() => {\n if (isOpen && focusedIndex >= 0 && menuRef.current) {\n const items = menuRef.current.querySelectorAll('[role=\"menuitem\"]:not([aria-disabled=\"true\"])')\n const item = items[focusedIndex] as HTMLElement\n item?.focus()\n }\n }, [isOpen, focusedIndex])\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const enabledItems = childArray.filter(\n (child) => React.isValidElement(child) && !(child.props as DropdownItemProps).disabled\n )\n const enabledCount = enabledItems.length\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n setFocusedIndex((focusedIndex + 1) % enabledCount)\n break\n case 'ArrowUp':\n event.preventDefault()\n setFocusedIndex((focusedIndex - 1 + enabledCount) % enabledCount)\n break\n case 'Home':\n event.preventDefault()\n setFocusedIndex(0)\n break\n case 'End':\n event.preventDefault()\n setFocusedIndex(enabledCount - 1)\n break\n case 'Escape':\n event.preventDefault()\n setIsOpen(false)\n setFocusedIndex(-1)\n // Return focus to trigger\n document.getElementById(triggerId)?.focus()\n break\n case 'Tab':\n setIsOpen(false)\n setFocusedIndex(-1)\n break\n }\n }\n\n const menuClasses = [\n 'dropdown-content',\n 'menu',\n 'bg-base-100',\n 'rounded-box',\n 'z-50',\n 'shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Clone children to pass index\n const childrenWithIndex = React.Children.map(children, (child, index) => {\n if (React.isValidElement(child) && child.type === DropdownItem) {\n return React.cloneElement(child as React.ReactElement<any>, { _index: index })\n }\n return child\n })\n\n // Arrow position classes based on menu position\n const arrowPositionClasses: Record<string, string> = {\n top: 'bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-t-base-100 border-l-transparent border-r-transparent border-b-transparent',\n bottom: 'top-0 left-1/2 -translate-x-1/2 -translate-y-full border-b-base-100 border-l-transparent border-r-transparent border-t-transparent',\n left: 'right-0 top-1/2 -translate-y-1/2 translate-x-full border-l-base-100 border-t-transparent border-b-transparent border-r-transparent',\n right: 'left-0 top-1/2 -translate-y-1/2 -translate-x-full border-r-base-100 border-t-transparent border-b-transparent border-l-transparent',\n }\n\n const arrowElement = arrow ? (\n <span\n className={`absolute w-0 h-0 border-8 border-solid ${arrowPositionClasses[position || 'bottom']}`}\n aria-hidden=\"true\"\n />\n ) : null\n\n return (\n <ul\n ref={menuRef}\n id={menuId}\n role=\"menu\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={`${menuClasses} ${arrow ? 'relative' : ''}`}\n onKeyDown={handleKeyDown}\n >\n {arrowElement}\n {childrenWithIndex}\n </ul>\n )\n}\n\nfunction DropdownItem({\n children,\n onClick,\n active = false,\n disabled = false,\n danger = false,\n className = '',\n}: DropdownItemProps) {\n const { setIsOpen, setFocusedIndex, triggerId } = useDropdownContext()\n const itemClasses = [active && 'active', disabled && 'disabled', className].filter(Boolean).join(' ')\n\n const handleClick = () => {\n if (!disabled) {\n onClick?.()\n setIsOpen(false)\n setFocusedIndex(-1)\n document.getElementById(triggerId)?.focus()\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if ((event.key === 'Enter' || event.key === ' ') && !disabled) {\n event.preventDefault()\n handleClick()\n }\n }\n\n return (\n <li className={itemClasses} role=\"none\">\n <a\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n className={danger ? 'text-error' : ''}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </a>\n </li>\n )\n}\n\nfunction DropdownDivider({ className = '' }: DropdownDividerProps) {\n const classes = ['border-base-content/10', className].filter(Boolean).join(' ')\n return (\n <li role=\"separator\" className=\"my-1\">\n <hr className={classes} />\n </li>\n )\n}\n\nexport const Dropdown = Object.assign(DropdownRoot, {\n Trigger: DropdownTrigger,\n Menu: DropdownMenu,\n Item: DropdownItem,\n Divider: DropdownDivider,\n})\n"],"names":["DropdownContext","createContext","useDropdownContext","context","useContext","DropdownRoot","children","hover","position","align","controlledOpen","onOpenChange","disabled","arrow","className","rest","menuId","useId","triggerId","internalOpen","setInternalOpen","useState","focusedIndex","setFocusedIndex","itemCount","setItemCount","itemRefs","useRef","dropdownRef","isControlled","isOpen","setIsOpen","useCallback","open","registerItem","index","ref","useEffect","handleClickOutside","event","positionClasses","alignClasses","dropdownClasses","jsx","DropdownTrigger","handleKeyDown","handleClick","DropdownMenu","menuRef","childArray","React","child","DropdownItem","enabledCount","menuClasses","childrenWithIndex","arrowElement","jsxs","onClick","active","danger","itemClasses","DropdownDivider","classes","Dropdown"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index38.js","sources":["../src/components/Indicator.tsx"],"sourcesContent":["import React from 'react'\n\nexport type IndicatorPosition =\n | 'top-start'\n | 'top-center'\n | 'top-end'\n | 'middle-start'\n | 'middle-center'\n | 'middle-end'\n | 'bottom-start'\n | 'bottom-center'\n | 'bottom-end'\n\nexport interface IndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n position?: IndicatorPosition\n children: React.ReactNode\n}\n\nexport const Indicator: React.FC<IndicatorProps> = ({\n position = 'top-end',\n children,\n className = '',\n ...rest\n}) => {\n // Get position classes for indicator\n const getPositionClasses = (pos: IndicatorPosition) => {\n const [vertical, horizontal] = pos.split('-')\n const classes: string[] = []\n\n switch (vertical) {\n case 'top':\n classes.push('indicator-top')\n break\n case 'middle':\n classes.push('indicator-middle')\n break\n case 'bottom':\n classes.push('indicator-bottom')\n break\n }\n\n switch (horizontal) {\n case 'start':\n classes.push('indicator-start')\n break\n case 'center':\n classes.push('indicator-center')\n break\n case 'end':\n classes.push('indicator-end')\n break\n }\n\n return classes.join(' ')\n }\n\n const childrenArray = React.Children.toArray(children)\n const content = childrenArray[0]\n const indicatorElement = childrenArray[1]\n\n return (\n <div className={`indicator inline-block ${className}`} {...rest}>\n {indicatorElement && (\n <div className={`indicator-item ${getPositionClasses(position)}`}>\n {indicatorElement}\n </div>\n )}\n {content}\n </div>\n )\n}\n"],"names":["Indicator","position","children","className","rest","getPositionClasses","pos","vertical","horizontal","classes","childrenArray","React","content","indicatorElement","jsx"],"mappings":";;AAkBO,MAAMA,IAAsC,CAAC;AAAA,EAClD,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AAEJ,QAAMC,IAAqB,CAACC,MAA2B;AACrD,UAAM,CAACC,GAAUC,CAAU,IAAIF,EAAI,MAAM,GAAG,GACtCG,IAAoB,CAAA;AAE1B,YAAQF,GAAA;AAAA,MACN,KAAK;AACH,QAAAE,EAAQ,KAAK,eAAe;AAC5B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,kBAAkB;AAC/B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,kBAAkB;AAC/B;AAAA,IAAA;AAGJ,YAAQD,GAAA;AAAA,MACN,KAAK;AACH,QAAAC,EAAQ,KAAK,iBAAiB;AAC9B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,kBAAkB;AAC/B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,eAAe;AAC5B;AAAA,IAAA;AAGJ,WAAOA,EAAQ,KAAK,GAAG;AAAA,EACzB,GAEMC,IAAgBC,EAAM,SAAS,QAAQT,CAAQ,GAC/CU,IAAUF,EAAc,CAAC,GACzBG,IAAmBH,EAAc,CAAC;AAExC,2BACG,OAAA,EAAI,WAAW,0BAA0BP,CAAS,IAAK,GAAGC,GACxD,UAAA;AAAA,IAAAS,KACC,gBAAAC,EAAC,SAAI,WAAW,kBAAkBT,EAAmBJ,CAAQ,CAAC,IAC3D,UAAAY,EAAA,CACH;AAAA,IAEDD;AAAA,EAAA,GACH;AAEJ;"}
|