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.
Files changed (204) hide show
  1. package/dist/components/Code.d.ts +2 -0
  2. package/dist/components/CopyButton.d.ts +34 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +205 -203
  5. package/dist/index.js.map +1 -1
  6. package/dist/index10.js +91 -121
  7. package/dist/index10.js.map +1 -1
  8. package/dist/index100.js +5 -13
  9. package/dist/index100.js.map +1 -1
  10. package/dist/index101.js +11 -43
  11. package/dist/index101.js.map +1 -1
  12. package/dist/index102.js +44 -11
  13. package/dist/index102.js.map +1 -1
  14. package/dist/index103.js +10 -12
  15. package/dist/index103.js.map +1 -1
  16. package/dist/index104.js +14 -7
  17. package/dist/index104.js.map +1 -1
  18. package/dist/index105.js +7 -12
  19. package/dist/index105.js.map +1 -1
  20. package/dist/index106.js +11 -29
  21. package/dist/index106.js.map +1 -1
  22. package/dist/index107.js +29 -16
  23. package/dist/index107.js.map +1 -1
  24. package/dist/index108.js +21 -0
  25. package/dist/index108.js.map +1 -0
  26. package/dist/index11.js +123 -30
  27. package/dist/index11.js.map +1 -1
  28. package/dist/index12.js +28 -263
  29. package/dist/index12.js.map +1 -1
  30. package/dist/index13.js +257 -105
  31. package/dist/index13.js.map +1 -1
  32. package/dist/index14.js +108 -153
  33. package/dist/index14.js.map +1 -1
  34. package/dist/index15.js +154 -146
  35. package/dist/index15.js.map +1 -1
  36. package/dist/index16.js +150 -5
  37. package/dist/index16.js.map +1 -1
  38. package/dist/index17.js +5 -71
  39. package/dist/index17.js.map +1 -1
  40. package/dist/index18.js +70 -24
  41. package/dist/index18.js.map +1 -1
  42. package/dist/index19.js +23 -194
  43. package/dist/index19.js.map +1 -1
  44. package/dist/index20.js +188 -106
  45. package/dist/index20.js.map +1 -1
  46. package/dist/index21.js +107 -177
  47. package/dist/index21.js.map +1 -1
  48. package/dist/index22.js +181 -107
  49. package/dist/index22.js.map +1 -1
  50. package/dist/index23.js +110 -19
  51. package/dist/index23.js.map +1 -1
  52. package/dist/index24.js +17 -41
  53. package/dist/index24.js.map +1 -1
  54. package/dist/index25.js +43 -32
  55. package/dist/index25.js.map +1 -1
  56. package/dist/index26.js +30 -170
  57. package/dist/index26.js.map +1 -1
  58. package/dist/index27.js +171 -40
  59. package/dist/index27.js.map +1 -1
  60. package/dist/index28.js +41 -17
  61. package/dist/index28.js.map +1 -1
  62. package/dist/index29.js +17 -33
  63. package/dist/index29.js.map +1 -1
  64. package/dist/index30.js +33 -52
  65. package/dist/index30.js.map +1 -1
  66. package/dist/index31.js +50 -61
  67. package/dist/index31.js.map +1 -1
  68. package/dist/index32.js +60 -181
  69. package/dist/index32.js.map +1 -1
  70. package/dist/index33.js +184 -18
  71. package/dist/index33.js.map +1 -1
  72. package/dist/index34.js +15 -271
  73. package/dist/index34.js.map +1 -1
  74. package/dist/index35.js +270 -1083
  75. package/dist/index35.js.map +1 -1
  76. package/dist/index36.js +1086 -16
  77. package/dist/index36.js.map +1 -1
  78. package/dist/index37.js +17 -17
  79. package/dist/index37.js.map +1 -1
  80. package/dist/index38.js +15 -120
  81. package/dist/index38.js.map +1 -1
  82. package/dist/index39.js +119 -37
  83. package/dist/index39.js.map +1 -1
  84. package/dist/index40.js +40 -398
  85. package/dist/index40.js.map +1 -1
  86. package/dist/index41.js +390 -89
  87. package/dist/index41.js.map +1 -1
  88. package/dist/index42.js +91 -253
  89. package/dist/index42.js.map +1 -1
  90. package/dist/index43.js +249 -145
  91. package/dist/index43.js.map +1 -1
  92. package/dist/index44.js +155 -15
  93. package/dist/index44.js.map +1 -1
  94. package/dist/index45.js +15 -17
  95. package/dist/index45.js.map +1 -1
  96. package/dist/index46.js +16 -136
  97. package/dist/index46.js.map +1 -1
  98. package/dist/index47.js +134 -10
  99. package/dist/index47.js.map +1 -1
  100. package/dist/index48.js +13 -35
  101. package/dist/index48.js.map +1 -1
  102. package/dist/index49.js +35 -34
  103. package/dist/index49.js.map +1 -1
  104. package/dist/index50.js +34 -81
  105. package/dist/index50.js.map +1 -1
  106. package/dist/index51.js +71 -166
  107. package/dist/index51.js.map +1 -1
  108. package/dist/index52.js +167 -144
  109. package/dist/index52.js.map +1 -1
  110. package/dist/index53.js +152 -11
  111. package/dist/index53.js.map +1 -1
  112. package/dist/index54.js +10 -20
  113. package/dist/index54.js.map +1 -1
  114. package/dist/index55.js +55 -12
  115. package/dist/index55.js.map +1 -1
  116. package/dist/index56.js +14 -7
  117. package/dist/index56.js.map +1 -1
  118. package/dist/index57.js +6 -333
  119. package/dist/index57.js.map +1 -1
  120. package/dist/index58.js +334 -47
  121. package/dist/index58.js.map +1 -1
  122. package/dist/index59.js +47 -122
  123. package/dist/index59.js.map +1 -1
  124. package/dist/index60.js +120 -108
  125. package/dist/index60.js.map +1 -1
  126. package/dist/index61.js +107 -167
  127. package/dist/index61.js.map +1 -1
  128. package/dist/index62.js +167 -29
  129. package/dist/index62.js.map +1 -1
  130. package/dist/index63.js +30 -120
  131. package/dist/index63.js.map +1 -1
  132. package/dist/index64.js +116 -80
  133. package/dist/index64.js.map +1 -1
  134. package/dist/index65.js +85 -19
  135. package/dist/index65.js.map +1 -1
  136. package/dist/index66.js +19 -73
  137. package/dist/index66.js.map +1 -1
  138. package/dist/index67.js +71 -54
  139. package/dist/index67.js.map +1 -1
  140. package/dist/index68.js +56 -44
  141. package/dist/index68.js.map +1 -1
  142. package/dist/index69.js +42 -49
  143. package/dist/index69.js.map +1 -1
  144. package/dist/index70.js +50 -121
  145. package/dist/index70.js.map +1 -1
  146. package/dist/index71.js +118 -102
  147. package/dist/index71.js.map +1 -1
  148. package/dist/index72.js +105 -72
  149. package/dist/index72.js.map +1 -1
  150. package/dist/index73.js +73 -67
  151. package/dist/index73.js.map +1 -1
  152. package/dist/index74.js +66 -19
  153. package/dist/index74.js.map +1 -1
  154. package/dist/index75.js +18 -55
  155. package/dist/index75.js.map +1 -1
  156. package/dist/index76.js +55 -251
  157. package/dist/index76.js.map +1 -1
  158. package/dist/index77.js +254 -22
  159. package/dist/index77.js.map +1 -1
  160. package/dist/index78.js +22 -31
  161. package/dist/index78.js.map +1 -1
  162. package/dist/index79.js +30 -93
  163. package/dist/index79.js.map +1 -1
  164. package/dist/index80.js +89 -324
  165. package/dist/index80.js.map +1 -1
  166. package/dist/index81.js +322 -73
  167. package/dist/index81.js.map +1 -1
  168. package/dist/index82.js +79 -39
  169. package/dist/index82.js.map +1 -1
  170. package/dist/index83.js +40 -23
  171. package/dist/index83.js.map +1 -1
  172. package/dist/index84.js +21 -93
  173. package/dist/index84.js.map +1 -1
  174. package/dist/index85.js +87 -148
  175. package/dist/index85.js.map +1 -1
  176. package/dist/index86.js +147 -152
  177. package/dist/index86.js.map +1 -1
  178. package/dist/index87.js +159 -63
  179. package/dist/index87.js.map +1 -1
  180. package/dist/index88.js +65 -35
  181. package/dist/index88.js.map +1 -1
  182. package/dist/index89.js +35 -234
  183. package/dist/index89.js.map +1 -1
  184. package/dist/index90.js +231 -31
  185. package/dist/index90.js.map +1 -1
  186. package/dist/index91.js +34 -210
  187. package/dist/index91.js.map +1 -1
  188. package/dist/index92.js +195 -198
  189. package/dist/index92.js.map +1 -1
  190. package/dist/index93.js +159 -241
  191. package/dist/index93.js.map +1 -1
  192. package/dist/index94.js +283 -166
  193. package/dist/index94.js.map +1 -1
  194. package/dist/index95.js +173 -253
  195. package/dist/index95.js.map +1 -1
  196. package/dist/index96.js +253 -121
  197. package/dist/index96.js.map +1 -1
  198. package/dist/index97.js +126 -14
  199. package/dist/index97.js.map +1 -1
  200. package/dist/index98.js +12 -31
  201. package/dist/index98.js.map +1 -1
  202. package/dist/index99.js +32 -5
  203. package/dist/index99.js.map +1 -1
  204. package/package.json +1 -1
package/dist/index40.js CHANGED
@@ -1,401 +1,43 @@
1
- import { jsxs as B, Fragment as ie, jsx as i } from "react/jsx-runtime";
2
- import D, { useId as q, useState as j, useRef as N, useCallback as R, useEffect as L, createContext as ue, useContext as de } from "react";
3
- const _ = ue(void 0);
4
- function V() {
5
- const l = de(_);
6
- if (!l)
7
- throw new Error("Dropdown compound components must be used within Dropdown");
8
- return l;
9
- }
10
- function pe({
11
- children: l,
12
- items: d,
13
- hover: b = !1,
14
- trigger: h = ["click"],
15
- position: s = "bottom",
16
- align: u = "start",
17
- open: n,
18
- onOpenChange: r,
19
- disabled: p = !1,
20
- arrow: f = !1,
21
- mouseEnterDelay: m = 0.15,
22
- mouseLeaveDelay: c = 0.1,
23
- getPopupContainer: y,
24
- destroyOnHidden: o = !1,
25
- className: k = "",
26
- ...S
27
- }) {
28
- const U = q(), v = q(), [e, I] = j(!1), [w, x] = j(-1), [T, P] = j(0), [Y, z] = j(!o), W = N(/* @__PURE__ */ new Map()), $ = N(null), C = N(null), M = b ? ["hover"] : h, F = n !== void 0, A = F ? n : e, g = R((t, E = "trigger") => {
29
- p || (F || I(t), t && z(!0), r?.(t, { source: E }));
30
- }, [p, F, r]), Z = R(() => {
31
- g(!1, "menu"), x(-1), document.getElementById(v)?.focus();
32
- }, [g, v]), H = R((t, E, a) => {
33
- E ? W.current.set(t, { ref: E, disabled: a }) : W.current.delete(t);
34
- }, []);
35
- L(() => {
36
- if (o && !A) {
37
- const t = setTimeout(() => z(!1), 300);
38
- return () => clearTimeout(t);
39
- }
40
- }, [A, o]), L(() => {
41
- const t = (E) => {
42
- $.current && !$.current.contains(E.target) && (g(!1, "trigger"), x(-1));
43
- };
44
- if (A)
45
- return document.addEventListener("mousedown", t), () => document.removeEventListener("mousedown", t);
46
- }, [A, g]);
47
- const ee = R(() => {
48
- M.includes("hover") && (C.current && clearTimeout(C.current), C.current = setTimeout(() => {
49
- g(!0, "trigger");
50
- }, m * 1e3));
51
- }, [M, m, g]), ne = R(() => {
52
- M.includes("hover") && (C.current && clearTimeout(C.current), C.current = setTimeout(() => {
53
- g(!1, "trigger"), x(-1);
54
- }, c * 1e3));
55
- }, [M, c, g]), te = R((t) => {
56
- M.includes("contextMenu") && (t.preventDefault(), g(!0, "trigger"));
57
- }, [M, g]);
58
- L(() => () => {
59
- C.current && clearTimeout(C.current);
60
- }, []);
61
- const re = {
62
- top: "dropdown-top",
63
- bottom: "dropdown-bottom",
64
- left: "dropdown-left",
65
- right: "dropdown-right"
66
- }, oe = {
67
- start: "",
68
- center: "dropdown-center",
69
- end: "dropdown-end"
70
- }, se = typeof f == "boolean" ? f : !!f, ae = [
71
- "dropdown",
72
- re[s],
73
- oe[u],
74
- M.includes("hover") && "dropdown-hover",
75
- A && "dropdown-open",
76
- k
77
- ].filter(Boolean).join(" "), le = () => d ? d.map((t, E) => {
78
- if ("type" in t && t.type === "divider")
79
- return /* @__PURE__ */ i(X, {}, t.key || `divider-${E}`);
80
- const a = t;
81
- return a.children && a.children.length > 0 ? /* @__PURE__ */ i(
82
- Q,
83
- {
84
- itemKey: a.key,
85
- title: a.label,
86
- icon: a.icon,
87
- disabled: a.disabled,
88
- children: a.children.map((K) => /* @__PURE__ */ i(
89
- O,
90
- {
91
- itemKey: K.key,
92
- icon: K.icon,
93
- disabled: K.disabled,
94
- danger: K.danger,
95
- onClick: K.onClick,
96
- children: K.label
97
- },
98
- K.key
99
- ))
100
- },
101
- a.key
102
- ) : /* @__PURE__ */ i(
103
- O,
104
- {
105
- itemKey: a.key,
106
- icon: a.icon,
107
- disabled: a.disabled,
108
- danger: a.danger,
109
- onClick: a.onClick,
110
- children: a.label
111
- },
112
- a.key
113
- );
114
- }) : null, ce = d ? /* @__PURE__ */ B(ie, { children: [
115
- D.Children.toArray(l).find(
116
- (t) => D.isValidElement(t) && t.type === G
117
- ),
118
- (Y || !o) && /* @__PURE__ */ i(J, { children: le() })
119
- ] }) : l;
120
- return /* @__PURE__ */ i(
121
- _.Provider,
122
- {
123
- value: {
124
- position: s,
125
- align: u,
126
- menuId: U,
127
- triggerId: v,
128
- isOpen: A,
129
- setIsOpen: g,
130
- focusedIndex: w,
131
- setFocusedIndex: x,
132
- registerItem: H,
133
- itemCount: T,
134
- setItemCount: P,
135
- disabled: p,
136
- arrow: se,
137
- closeDropdown: Z
138
- },
139
- children: /* @__PURE__ */ i(
140
- "div",
141
- {
142
- ref: $,
143
- className: ae,
144
- "data-state": A ? "open" : "closed",
145
- "aria-disabled": p || void 0,
146
- onMouseEnter: ee,
147
- onMouseLeave: ne,
148
- onContextMenu: te,
149
- ...S,
150
- children: ce
151
- }
152
- )
153
- }
154
- );
155
- }
156
- function G({ children: l, className: d = "" }) {
157
- const { menuId: b, triggerId: h, isOpen: s, setIsOpen: u, setFocusedIndex: n, itemCount: r, disabled: p } = V(), f = (o) => {
158
- switch (o.key) {
159
- case "Enter":
160
- case " ":
161
- case "ArrowDown":
162
- o.preventDefault(), u(!0), n(0);
163
- break;
164
- case "ArrowUp":
165
- o.preventDefault(), u(!0), n(r - 1);
166
- break;
167
- case "Escape":
168
- o.preventDefault(), u(!1), n(-1);
169
- break;
170
- }
171
- }, m = () => {
172
- u(!s), s || n(0);
173
- }, c = D.Children.only(l), y = c.props;
174
- return D.cloneElement(c, {
175
- id: h,
176
- tabIndex: p ? -1 : 0,
177
- "aria-haspopup": "menu",
178
- "aria-expanded": s,
179
- "aria-controls": b,
180
- onClick: (o) => {
181
- m(), y.onClick?.(o);
182
- },
183
- onKeyDown: (o) => {
184
- f(o), y.onKeyDown?.(o);
185
- },
186
- className: `${y.className || ""} ${d}`.trim()
187
- });
188
- }
189
- function J({ children: l, className: d = "" }) {
190
- const { menuId: b, triggerId: h, isOpen: s, setIsOpen: u, focusedIndex: n, setFocusedIndex: r, setItemCount: p, arrow: f, position: m } = V(), c = N(null), y = D.Children.toArray(l).filter(
191
- (e) => D.isValidElement(e) && e.type === O
192
- );
193
- L(() => {
194
- p(y.length);
195
- }, [y.length, p]), L(() => {
196
- s && n >= 0 && c.current && c.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')[n]?.focus();
197
- }, [s, n]);
198
- const o = (e) => {
199
- const w = y.filter(
200
- (x) => D.isValidElement(x) && !x.props.disabled
201
- ).length;
202
- switch (e.key) {
203
- case "ArrowDown":
204
- e.preventDefault(), r((n + 1) % w);
205
- break;
206
- case "ArrowUp":
207
- e.preventDefault(), r((n - 1 + w) % w);
208
- break;
209
- case "Home":
210
- e.preventDefault(), r(0);
211
- break;
212
- case "End":
213
- e.preventDefault(), r(w - 1);
214
- break;
215
- case "Escape":
216
- e.preventDefault(), u(!1), r(-1), document.getElementById(h)?.focus();
217
- break;
218
- case "Tab":
219
- u(!1), r(-1);
220
- break;
221
- }
222
- }, k = [
223
- "dropdown-content",
224
- "menu",
225
- "bg-base-100",
226
- "rounded-box",
227
- "z-50",
228
- "shadow",
229
- d
230
- ].filter(Boolean).join(" "), S = D.Children.map(l, (e, I) => D.isValidElement(e) && e.type === O ? D.cloneElement(e, { _index: I }) : e), v = f ? /* @__PURE__ */ i(
231
- "span",
232
- {
233
- className: `absolute w-0 h-0 border-8 border-solid ${{
234
- 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",
235
- 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",
236
- 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",
237
- 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"
238
- }[m || "bottom"]}`,
239
- "aria-hidden": "true"
240
- }
241
- ) : null;
242
- return /* @__PURE__ */ B(
243
- "ul",
244
- {
245
- ref: c,
246
- id: b,
247
- role: "menu",
248
- "aria-labelledby": h,
249
- tabIndex: -1,
250
- className: `${k} ${f ? "relative" : ""}`,
251
- onKeyDown: o,
252
- children: [
253
- v,
254
- S
255
- ]
256
- }
257
- );
258
- }
259
- function O({
260
- children: l,
261
- itemKey: d,
262
- icon: b,
263
- label: h,
264
- onClick: s,
265
- active: u = !1,
266
- disabled: n = !1,
267
- danger: r = !1,
268
- className: p = ""
269
- }) {
270
- const { closeDropdown: f } = V(), m = [u && "active", n && "disabled", p].filter(Boolean).join(" "), c = () => {
271
- n || (s?.(), f());
272
- };
273
- return /* @__PURE__ */ i("li", { className: m, role: "none", "data-key": d, children: /* @__PURE__ */ B(
274
- "a",
275
- {
276
- role: "menuitem",
277
- tabIndex: n ? -1 : 0,
278
- "aria-disabled": n || void 0,
279
- className: r ? "text-error" : "",
280
- onClick: c,
281
- onKeyDown: (k) => {
282
- (k.key === "Enter" || k.key === " ") && !n && (k.preventDefault(), c());
283
- },
284
- children: [
285
- b && /* @__PURE__ */ i("span", { className: "mr-2 inline-flex items-center", children: b }),
286
- h || l
287
- ]
288
- }
289
- ) });
290
- }
291
- function Q({
292
- children: l,
293
- itemKey: d,
294
- title: b,
295
- icon: h,
296
- disabled: s = !1,
297
- className: u = ""
298
- }) {
299
- const [n, r] = j(!1), p = N(null), f = N(null), m = N(null), c = q(), y = () => {
300
- s || r(!0);
301
- }, o = () => {
302
- r(!1);
303
- }, k = () => {
304
- setTimeout(() => {
305
- m.current?.querySelector('[role="menuitem"]:not([aria-disabled="true"])')?.focus();
306
- }, 0);
307
- }, S = (e) => {
308
- if (!s)
309
- switch (e.key) {
310
- case "ArrowRight":
311
- case "Enter":
312
- case " ":
313
- e.preventDefault(), e.stopPropagation(), r(!0), k();
314
- break;
315
- case "ArrowLeft":
316
- case "Escape":
317
- e.preventDefault(), e.stopPropagation(), r(!1);
318
- break;
319
- }
320
- }, U = (e) => {
321
- switch (e.key) {
322
- case "ArrowLeft":
323
- case "Escape":
324
- e.preventDefault(), e.stopPropagation(), r(!1), f.current?.focus();
325
- break;
326
- case "ArrowDown":
327
- e.preventDefault(), e.stopPropagation();
328
- const I = m.current?.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])');
329
- if (I) {
330
- const T = (Array.from(I).findIndex((P) => P === document.activeElement) + 1) % I.length;
331
- I[T]?.focus();
332
- }
333
- break;
334
- case "ArrowUp":
335
- e.preventDefault(), e.stopPropagation();
336
- const w = m.current?.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])');
337
- if (w) {
338
- const T = (Array.from(w).findIndex((P) => P === document.activeElement) - 1 + w.length) % w.length;
339
- w[T]?.focus();
340
- }
341
- break;
342
- }
343
- }, v = [s && "disabled", u].filter(Boolean).join(" ");
344
- return /* @__PURE__ */ i(
345
- "li",
346
- {
347
- ref: p,
348
- className: v,
349
- role: "none",
350
- "data-key": d,
351
- onMouseEnter: y,
352
- onMouseLeave: o,
353
- children: /* @__PURE__ */ B("details", { open: n, children: [
354
- /* @__PURE__ */ B(
355
- "summary",
356
- {
357
- ref: f,
358
- role: "menuitem",
359
- tabIndex: s ? -1 : 0,
360
- "aria-disabled": s || void 0,
361
- "aria-haspopup": "menu",
362
- "aria-expanded": n,
363
- "aria-controls": c,
364
- onKeyDown: S,
365
- children: [
366
- h && /* @__PURE__ */ i("span", { className: "mr-2 inline-flex items-center", children: h }),
367
- b
368
- ]
369
- }
370
- ),
371
- /* @__PURE__ */ i(
372
- "ul",
373
- {
374
- ref: m,
375
- id: c,
376
- className: "menu bg-base-100 rounded-box z-50 shadow",
377
- role: "menu",
378
- "aria-label": typeof b == "string" ? b : void 0,
379
- onKeyDown: U,
380
- children: l
381
- }
382
- )
383
- ] })
384
- }
385
- );
386
- }
387
- function X({ className: l = "" }) {
388
- const d = ["border-base-content/10", l].filter(Boolean).join(" ");
389
- return /* @__PURE__ */ i("li", { role: "separator", className: "my-1", children: /* @__PURE__ */ i("hr", { className: d }) });
390
- }
391
- const be = Object.assign(pe, {
392
- Trigger: G,
393
- Menu: J,
394
- Item: O,
395
- SubMenu: Q,
396
- Divider: X
397
- });
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");
20
+ break;
21
+ }
22
+ switch (h) {
23
+ case "start":
24
+ t.push("indicator-start");
25
+ break;
26
+ case "center":
27
+ t.push("indicator-center");
28
+ break;
29
+ case "end":
30
+ t.push("indicator-end");
31
+ break;
32
+ }
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
+ };
398
40
  export {
399
- be as Dropdown
41
+ j as Indicator
400
42
  };
401
43
  //# sourceMappingURL=index40.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index40.js","sources":["../src/components/Dropdown.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useRef, useState, useCallback, useEffect } from 'react'\n\n// Types for data-driven items prop\nexport type DropdownTriggerType = 'click' | 'hover' | 'contextMenu'\n\nexport interface DropdownMenuItem {\n key: string\n label: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n danger?: boolean\n onClick?: () => void\n children?: DropdownMenuItem[] // For submenus\n}\n\nexport interface DropdownMenuDivider {\n type: 'divider'\n key?: string\n}\n\nexport type DropdownMenuItemType = DropdownMenuItem | DropdownMenuDivider\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 closeDropdown: () => void\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 Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Trigger element and dropdown content (compound pattern) */\n children?: React.ReactNode\n /** Menu items (data-driven pattern) */\n items?: DropdownMenuItemType[]\n /** @deprecated Use trigger={['hover']} instead */\n hover?: boolean\n /** Trigger mode(s) for dropdown */\n trigger?: DropdownTriggerType[]\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, info?: { source: 'trigger' | 'menu' }) => void\n /** Disable the dropdown */\n disabled?: boolean\n /** Show arrow pointing to trigger */\n arrow?: boolean | { pointAtCenter?: boolean }\n /** Delay before showing dropdown on hover (seconds) */\n mouseEnterDelay?: number\n /** Delay before hiding dropdown on mouse leave (seconds) */\n mouseLeaveDelay?: number\n /** Container for the dropdown menu */\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement\n /** Destroy dropdown when hidden */\n destroyOnHidden?: 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 /** Unique key for the item */\n itemKey?: string\n /** Icon to display before label */\n icon?: React.ReactNode\n /** Item label (alternative to children) */\n label?: 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 DropdownSubMenuProps {\n children: React.ReactNode\n /** Unique key for the submenu */\n itemKey?: string\n /** Submenu title/label */\n title: React.ReactNode\n /** Icon to display before title */\n icon?: React.ReactNode\n disabled?: boolean\n className?: string\n}\n\nexport interface DropdownDividerProps {\n className?: string\n}\n\nfunction DropdownRoot({\n children,\n items,\n hover = false,\n trigger = ['click'],\n position = 'bottom',\n align = 'start',\n open: controlledOpen,\n onOpenChange,\n disabled = false,\n arrow = false,\n mouseEnterDelay = 0.15,\n mouseLeaveDelay = 0.1,\n getPopupContainer,\n destroyOnHidden = 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 [shouldRender, setShouldRender] = useState(!destroyOnHidden)\n const itemRefs = useRef<Map<number, { ref: HTMLElement | null; disabled: boolean }>>(new Map())\n const dropdownRef = useRef<HTMLDivElement>(null)\n const hoverTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Normalize trigger - support both hover boolean (deprecated) and trigger array\n const triggers = hover ? ['hover'] : trigger\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, source: 'trigger' | 'menu' = 'trigger') => {\n if (disabled) return\n if (!isControlled) {\n setInternalOpen(open)\n }\n if (open) {\n setShouldRender(true)\n }\n onOpenChange?.(open, { source })\n }, [disabled, isControlled, onOpenChange])\n\n const closeDropdown = useCallback(() => {\n setIsOpen(false, 'menu')\n setFocusedIndex(-1)\n document.getElementById(triggerId)?.focus()\n }, [setIsOpen, triggerId])\n\n const registerItem = useCallback((index: number, ref: HTMLElement | null, itemDisabled: boolean) => {\n if (ref) {\n itemRefs.current.set(index, { ref, disabled: itemDisabled })\n } else {\n itemRefs.current.delete(index)\n }\n }, [])\n\n // Handle destroyOnHidden\n useEffect(() => {\n if (destroyOnHidden && !isOpen) {\n const timeout = setTimeout(() => setShouldRender(false), 300)\n return () => clearTimeout(timeout)\n }\n }, [isOpen, destroyOnHidden])\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, 'trigger')\n setFocusedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen, setIsOpen])\n\n // Hover handlers with delay\n const handleMouseEnter = useCallback(() => {\n if (!triggers.includes('hover')) return\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current)\n }\n hoverTimeoutRef.current = setTimeout(() => {\n setIsOpen(true, 'trigger')\n }, mouseEnterDelay * 1000)\n }, [triggers, mouseEnterDelay, setIsOpen])\n\n const handleMouseLeave = useCallback(() => {\n if (!triggers.includes('hover')) return\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current)\n }\n hoverTimeoutRef.current = setTimeout(() => {\n setIsOpen(false, 'trigger')\n setFocusedIndex(-1)\n }, mouseLeaveDelay * 1000)\n }, [triggers, mouseLeaveDelay, setIsOpen])\n\n // Context menu handler\n const handleContextMenu = useCallback((event: React.MouseEvent) => {\n if (!triggers.includes('contextMenu')) return\n event.preventDefault()\n setIsOpen(true, 'trigger')\n }, [triggers, setIsOpen])\n\n // Cleanup timeout on unmount\n useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current)\n }\n }\n }, [])\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 showArrow = typeof arrow === 'boolean' ? arrow : !!arrow\n\n const dropdownClasses = [\n 'dropdown',\n positionClasses[position],\n alignClasses[align],\n triggers.includes('hover') && 'dropdown-hover',\n isOpen && 'dropdown-open',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Render items from data-driven prop\n const renderItems = () => {\n if (!items) return null\n return items.map((item, index) => {\n if ('type' in item && item.type === 'divider') {\n return <DropdownDivider key={item.key || `divider-${index}`} />\n }\n const menuItem = item as DropdownMenuItem\n if (menuItem.children && menuItem.children.length > 0) {\n return (\n <DropdownSubMenu\n key={menuItem.key}\n itemKey={menuItem.key}\n title={menuItem.label}\n icon={menuItem.icon}\n disabled={menuItem.disabled}\n >\n {menuItem.children.map((child) => (\n <DropdownItem\n key={child.key}\n itemKey={child.key}\n icon={child.icon}\n disabled={child.disabled}\n danger={child.danger}\n onClick={child.onClick}\n >\n {child.label}\n </DropdownItem>\n ))}\n </DropdownSubMenu>\n )\n }\n return (\n <DropdownItem\n key={menuItem.key}\n itemKey={menuItem.key}\n icon={menuItem.icon}\n disabled={menuItem.disabled}\n danger={menuItem.danger}\n onClick={menuItem.onClick}\n >\n {menuItem.label}\n </DropdownItem>\n )\n })\n }\n\n // Determine content - either compound children or items-generated menu\n const content = items ? (\n <>\n {React.Children.toArray(children).find(\n (child) => React.isValidElement(child) && child.type === DropdownTrigger\n )}\n {(shouldRender || !destroyOnHidden) && (\n <DropdownMenu>{renderItems()}</DropdownMenu>\n )}\n </>\n ) : (\n children\n )\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: showArrow,\n closeDropdown,\n }}\n >\n <div\n ref={dropdownRef}\n className={dropdownClasses}\n data-state={isOpen ? 'open' : 'closed'}\n aria-disabled={disabled || undefined}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onContextMenu={handleContextMenu}\n {...rest}\n >\n {content}\n </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 // Clone the child element to add event handlers and ARIA attributes\n const child = React.Children.only(children) as React.ReactElement<\n React.HTMLAttributes<HTMLElement> & {\n onClick?: (e: React.MouseEvent) => void\n onKeyDown?: (e: React.KeyboardEvent) => void\n className?: string\n }\n >\n\n const childProps = child.props\n\n return React.cloneElement(child, {\n id: triggerId,\n tabIndex: disabled ? -1 : 0,\n 'aria-haspopup': 'menu' as const,\n 'aria-expanded': isOpen,\n 'aria-controls': menuId,\n onClick: (e: React.MouseEvent) => {\n handleClick()\n childProps.onClick?.(e)\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n handleKeyDown(e)\n childProps.onKeyDown?.(e)\n },\n className: `${childProps.className || ''} ${className}`.trim(),\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 itemKey,\n icon,\n label,\n onClick,\n active = false,\n disabled = false,\n danger = false,\n className = '',\n}: DropdownItemProps) {\n const { closeDropdown } = useDropdownContext()\n const itemClasses = [active && 'active', disabled && 'disabled', className].filter(Boolean).join(' ')\n\n const handleClick = () => {\n if (!disabled) {\n onClick?.()\n closeDropdown()\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 const content = label || children\n\n return (\n <li className={itemClasses} role=\"none\" data-key={itemKey}>\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 {icon && <span className=\"mr-2 inline-flex items-center\">{icon}</span>}\n {content}\n </a>\n </li>\n )\n}\n\nfunction DropdownSubMenu({\n children,\n itemKey,\n title,\n icon,\n disabled = false,\n className = '',\n}: DropdownSubMenuProps) {\n const [isSubOpen, setIsSubOpen] = useState(false)\n const subMenuRef = useRef<HTMLLIElement>(null)\n const summaryRef = useRef<HTMLElement>(null)\n const subMenuListRef = useRef<HTMLUListElement>(null)\n const subMenuId = useId()\n\n const handleMouseEnter = () => {\n if (!disabled) setIsSubOpen(true)\n }\n\n const handleMouseLeave = () => {\n setIsSubOpen(false)\n }\n\n // Focus first item in submenu\n const focusFirstItem = () => {\n setTimeout(() => {\n const firstItem = subMenuListRef.current?.querySelector('[role=\"menuitem\"]:not([aria-disabled=\"true\"])') as HTMLElement\n firstItem?.focus()\n }, 0)\n }\n\n // Keyboard handler for summary (submenu trigger)\n const handleSummaryKeyDown = (event: React.KeyboardEvent) => {\n if (disabled) return\n\n switch (event.key) {\n case 'ArrowRight':\n case 'Enter':\n case ' ':\n event.preventDefault()\n event.stopPropagation()\n setIsSubOpen(true)\n focusFirstItem()\n break\n case 'ArrowLeft':\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n setIsSubOpen(false)\n break\n }\n }\n\n // Keyboard handler for submenu items\n const handleSubMenuKeyDown = (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowLeft':\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n setIsSubOpen(false)\n summaryRef.current?.focus()\n break\n case 'ArrowDown':\n event.preventDefault()\n event.stopPropagation()\n const items = subMenuListRef.current?.querySelectorAll('[role=\"menuitem\"]:not([aria-disabled=\"true\"])')\n if (items) {\n const currentIndex = Array.from(items).findIndex(item => item === document.activeElement)\n const nextIndex = (currentIndex + 1) % items.length\n ;(items[nextIndex] as HTMLElement)?.focus()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n event.stopPropagation()\n const itemsUp = subMenuListRef.current?.querySelectorAll('[role=\"menuitem\"]:not([aria-disabled=\"true\"])')\n if (itemsUp) {\n const currentIndexUp = Array.from(itemsUp).findIndex(item => item === document.activeElement)\n const prevIndex = (currentIndexUp - 1 + itemsUp.length) % itemsUp.length\n ;(itemsUp[prevIndex] as HTMLElement)?.focus()\n }\n break\n }\n }\n\n const itemClasses = [disabled && 'disabled', className].filter(Boolean).join(' ')\n\n return (\n <li\n ref={subMenuRef}\n className={itemClasses}\n role=\"none\"\n data-key={itemKey}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <details open={isSubOpen}>\n <summary\n ref={summaryRef}\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n aria-haspopup=\"menu\"\n aria-expanded={isSubOpen}\n aria-controls={subMenuId}\n onKeyDown={handleSummaryKeyDown}\n >\n {icon && <span className=\"mr-2 inline-flex items-center\">{icon}</span>}\n {title}\n </summary>\n <ul\n ref={subMenuListRef}\n id={subMenuId}\n className=\"menu bg-base-100 rounded-box z-50 shadow\"\n role=\"menu\"\n aria-label={typeof title === 'string' ? title : undefined}\n onKeyDown={handleSubMenuKeyDown}\n >\n {children}\n </ul>\n </details>\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 SubMenu: DropdownSubMenu,\n Divider: DropdownDivider,\n})\n"],"names":["DropdownContext","createContext","useDropdownContext","context","useContext","DropdownRoot","children","items","hover","trigger","position","align","controlledOpen","onOpenChange","disabled","arrow","mouseEnterDelay","mouseLeaveDelay","getPopupContainer","destroyOnHidden","className","rest","menuId","useId","triggerId","internalOpen","setInternalOpen","useState","focusedIndex","setFocusedIndex","itemCount","setItemCount","shouldRender","setShouldRender","itemRefs","useRef","dropdownRef","hoverTimeoutRef","triggers","isControlled","isOpen","setIsOpen","useCallback","open","source","closeDropdown","registerItem","index","ref","itemDisabled","useEffect","timeout","handleClickOutside","event","handleMouseEnter","handleMouseLeave","handleContextMenu","positionClasses","alignClasses","showArrow","dropdownClasses","renderItems","item","DropdownDivider","menuItem","jsx","DropdownSubMenu","child","DropdownItem","content","jsxs","Fragment","React","DropdownTrigger","DropdownMenu","handleKeyDown","handleClick","childProps","e","menuRef","childArray","enabledCount","menuClasses","childrenWithIndex","arrowElement","itemKey","icon","label","onClick","active","danger","itemClasses","title","isSubOpen","setIsSubOpen","subMenuRef","summaryRef","subMenuListRef","subMenuId","focusFirstItem","handleSummaryKeyDown","handleSubMenuKeyDown","nextIndex","itemsUp","prevIndex","classes","Dropdown"],"mappings":"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"}
1
+ {"version":3,"file":"index40.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;"}