asterui 0.12.26 → 0.12.28

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 (166) hide show
  1. package/dist/components/Collapse.d.ts +40 -20
  2. package/dist/components/Descriptions.d.ts +35 -3
  3. package/dist/components/Empty.d.ts +10 -1
  4. package/dist/components/Image.d.ts +13 -1
  5. package/dist/components/List.d.ts +74 -8
  6. package/dist/components/Table.d.ts +64 -10
  7. package/dist/components/Timeline.d.ts +62 -7
  8. package/dist/index.d.ts +4 -6
  9. package/dist/index.js +148 -150
  10. package/dist/index.js.map +1 -1
  11. package/dist/index10.js +1 -1
  12. package/dist/index100.js +5 -32
  13. package/dist/index100.js.map +1 -1
  14. package/dist/index101.js +13 -5
  15. package/dist/index101.js.map +1 -1
  16. package/dist/index102.js +43 -11
  17. package/dist/index102.js.map +1 -1
  18. package/dist/index103.js +11 -44
  19. package/dist/index103.js.map +1 -1
  20. package/dist/index104.js +12 -10
  21. package/dist/index104.js.map +1 -1
  22. package/dist/index105.js +7 -14
  23. package/dist/index105.js.map +1 -1
  24. package/dist/index106.js +12 -7
  25. package/dist/index106.js.map +1 -1
  26. package/dist/index107.js +29 -11
  27. package/dist/index107.js.map +1 -1
  28. package/dist/index108.js +16 -29
  29. package/dist/index108.js.map +1 -1
  30. package/dist/index109.js +31 -16
  31. package/dist/index109.js.map +1 -1
  32. package/dist/index110.js +517 -30
  33. package/dist/index110.js.map +1 -1
  34. package/dist/index111.js +45 -515
  35. package/dist/index111.js.map +1 -1
  36. package/dist/index18.js +105 -64
  37. package/dist/index18.js.map +1 -1
  38. package/dist/index22.js +1 -1
  39. package/dist/index23.js +127 -93
  40. package/dist/index23.js.map +1 -1
  41. package/dist/index39.js +162 -115
  42. package/dist/index39.js.map +1 -1
  43. package/dist/index40.js +398 -40
  44. package/dist/index40.js.map +1 -1
  45. package/dist/index41.js +132 -389
  46. package/dist/index41.js.map +1 -1
  47. package/dist/index42.js +252 -91
  48. package/dist/index42.js.map +1 -1
  49. package/dist/index43.js +143 -247
  50. package/dist/index43.js.map +1 -1
  51. package/dist/index44.js +15 -154
  52. package/dist/index44.js.map +1 -1
  53. package/dist/index45.js +17 -15
  54. package/dist/index45.js.map +1 -1
  55. package/dist/index46.js +136 -16
  56. package/dist/index46.js.map +1 -1
  57. package/dist/index47.js +118 -133
  58. package/dist/index47.js.map +1 -1
  59. package/dist/index48.js +35 -13
  60. package/dist/index48.js.map +1 -1
  61. package/dist/index49.js +34 -35
  62. package/dist/index49.js.map +1 -1
  63. package/dist/index50.js +81 -34
  64. package/dist/index50.js.map +1 -1
  65. package/dist/index51.js +166 -71
  66. package/dist/index51.js.map +1 -1
  67. package/dist/index52.js +144 -167
  68. package/dist/index52.js.map +1 -1
  69. package/dist/index53.js +11 -152
  70. package/dist/index53.js.map +1 -1
  71. package/dist/index54.js +55 -10
  72. package/dist/index54.js.map +1 -1
  73. package/dist/index55.js +12 -55
  74. package/dist/index55.js.map +1 -1
  75. package/dist/index56.js +7 -14
  76. package/dist/index56.js.map +1 -1
  77. package/dist/index57.js +333 -6
  78. package/dist/index57.js.map +1 -1
  79. package/dist/index58.js +47 -334
  80. package/dist/index58.js.map +1 -1
  81. package/dist/index59.js +122 -47
  82. package/dist/index59.js.map +1 -1
  83. package/dist/index60.js +108 -120
  84. package/dist/index60.js.map +1 -1
  85. package/dist/index61.js +167 -107
  86. package/dist/index61.js.map +1 -1
  87. package/dist/index62.js +29 -167
  88. package/dist/index62.js.map +1 -1
  89. package/dist/index63.js +120 -30
  90. package/dist/index63.js.map +1 -1
  91. package/dist/index64.js +80 -116
  92. package/dist/index64.js.map +1 -1
  93. package/dist/index65.js +19 -85
  94. package/dist/index65.js.map +1 -1
  95. package/dist/index66.js +73 -19
  96. package/dist/index66.js.map +1 -1
  97. package/dist/index67.js +54 -71
  98. package/dist/index67.js.map +1 -1
  99. package/dist/index68.js +44 -56
  100. package/dist/index68.js.map +1 -1
  101. package/dist/index69.js +49 -42
  102. package/dist/index69.js.map +1 -1
  103. package/dist/index70.js +121 -50
  104. package/dist/index70.js.map +1 -1
  105. package/dist/index71.js +102 -118
  106. package/dist/index71.js.map +1 -1
  107. package/dist/index72.js +72 -105
  108. package/dist/index72.js.map +1 -1
  109. package/dist/index73.js +67 -73
  110. package/dist/index73.js.map +1 -1
  111. package/dist/index74.js +19 -66
  112. package/dist/index74.js.map +1 -1
  113. package/dist/index75.js +55 -18
  114. package/dist/index75.js.map +1 -1
  115. package/dist/index76.js +251 -55
  116. package/dist/index76.js.map +1 -1
  117. package/dist/index77.js +22 -254
  118. package/dist/index77.js.map +1 -1
  119. package/dist/index78.js +31 -22
  120. package/dist/index78.js.map +1 -1
  121. package/dist/index79.js +93 -30
  122. package/dist/index79.js.map +1 -1
  123. package/dist/index80.js +626 -86
  124. package/dist/index80.js.map +1 -1
  125. package/dist/index81.js +73 -322
  126. package/dist/index81.js.map +1 -1
  127. package/dist/index82.js +39 -79
  128. package/dist/index82.js.map +1 -1
  129. package/dist/index83.js +23 -40
  130. package/dist/index83.js.map +1 -1
  131. package/dist/index84.js +207 -23
  132. package/dist/index84.js.map +1 -1
  133. package/dist/index85.js +148 -199
  134. package/dist/index85.js.map +1 -1
  135. package/dist/index86.js +152 -147
  136. package/dist/index86.js.map +1 -1
  137. package/dist/index87.js +143 -156
  138. package/dist/index87.js.map +1 -1
  139. package/dist/index88.js +35 -65
  140. package/dist/index88.js.map +1 -1
  141. package/dist/index89.js +234 -35
  142. package/dist/index89.js.map +1 -1
  143. package/dist/index90.js +31 -231
  144. package/dist/index90.js.map +1 -1
  145. package/dist/index91.js +210 -34
  146. package/dist/index91.js.map +1 -1
  147. package/dist/index92.js +418 -187
  148. package/dist/index92.js.map +1 -1
  149. package/dist/index93.js +686 -376
  150. package/dist/index93.js.map +1 -1
  151. package/dist/index94.js +165 -738
  152. package/dist/index94.js.map +1 -1
  153. package/dist/index95.js +253 -173
  154. package/dist/index95.js.map +1 -1
  155. package/dist/index96.js +64 -256
  156. package/dist/index96.js.map +1 -1
  157. package/dist/index97.js +121 -61
  158. package/dist/index97.js.map +1 -1
  159. package/dist/index98.js +14 -126
  160. package/dist/index98.js.map +1 -1
  161. package/dist/index99.js +31 -12
  162. package/dist/index99.js.map +1 -1
  163. package/package.json +1 -1
  164. package/dist/components/Indicator.d.ts +0 -7
  165. package/dist/index112.js +0 -53
  166. package/dist/index112.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index39.js","sources":["../src/components/Image.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\n\nexport interface ImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {\n src: string\n alt?: string\n fallback?: string\n placeholder?: React.ReactNode\n preview?: boolean\n width?: string | number\n height?: string | number\n className?: string\n onLoad?: () => void\n onError?: () => void\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = '',\n fallback,\n placeholder,\n preview = true,\n width,\n height,\n className = '',\n onLoad,\n onError,\n ...props\n}) => {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [showPreview, setShowPreview] = useState(false)\n const [currentSrc, setCurrentSrc] = useState(src)\n\n useEffect(() => {\n setLoading(true)\n setError(false)\n setCurrentSrc(src)\n }, [src])\n\n const handleLoad = () => {\n setLoading(false)\n setError(false)\n onLoad?.()\n }\n\n const handleError = () => {\n setLoading(false)\n setError(true)\n if (fallback) {\n setCurrentSrc(fallback)\n }\n onError?.()\n }\n\n const handleImageClick = () => {\n if (preview && !error && !loading) {\n setShowPreview(true)\n }\n }\n\n const handleClosePreview = () => {\n setShowPreview(false)\n }\n\n const getStyle = (): React.CSSProperties => {\n const style: React.CSSProperties = {}\n if (width) {\n style.width = typeof width === 'number' ? `${width}px` : width\n }\n if (height) {\n style.height = typeof height === 'number' ? `${height}px` : height\n }\n return style\n }\n\n const imageClasses = [\n className,\n preview && !error && !loading ? 'cursor-pointer hover:opacity-80 transition-opacity' : '',\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <>\n <div className=\"relative inline-block\" style={getStyle()}>\n {loading && placeholder && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-base-200\">\n {placeholder}\n </div>\n )}\n <img\n {...props}\n src={currentSrc}\n alt={alt}\n className={imageClasses}\n style={{ ...getStyle(), display: loading ? 'none' : 'block' }}\n onLoad={handleLoad}\n onError={handleError}\n onClick={handleImageClick}\n />\n {error && !fallback && (\n <div\n className=\"flex items-center justify-center bg-base-200 text-base-content/50\"\n style={getStyle()}\n >\n <svg\n className=\"w-12 h-12\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n )}\n </div>\n\n {showPreview && (\n <div\n className=\"fixed inset-0 z-50 bg-black bg-opacity-80 flex items-center justify-center p-4\"\n onClick={handleClosePreview}\n >\n <div className=\"relative max-w-full max-h-full\">\n <button\n className=\"absolute top-4 right-4 btn btn-circle btn-sm\"\n onClick={handleClosePreview}\n >\n <svg\n className=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n <img\n src={src}\n alt={alt}\n className=\"max-w-full max-h-[90vh] object-contain\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n </div>\n )}\n </>\n )\n}\n"],"names":["Image","src","alt","fallback","placeholder","preview","width","height","className","onLoad","onError","props","loading","setLoading","useState","error","setError","showPreview","setShowPreview","currentSrc","setCurrentSrc","useEffect","handleLoad","handleError","handleImageClick","handleClosePreview","getStyle","style","imageClasses","jsxs","Fragment","jsx","e"],"mappings":"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"}
1
+ {"version":3,"file":"index39.js","sources":["../src/components/Image.tsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef, useCallback } from 'react'\n\nexport interface ImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {\n /** Image source URL */\n src: string\n /** Alternative text for the image */\n alt?: string\n /** Fallback image URL when source fails to load */\n fallback?: string\n /** Placeholder content shown while loading */\n placeholder?: React.ReactNode\n /** Enable click to preview image in lightbox */\n preview?: boolean\n /** Image width */\n width?: string | number\n /** Image height */\n height?: string | number\n /** Additional CSS classes */\n className?: string\n /** Callback when image loads successfully */\n onLoad?: () => void\n /** Callback when image fails to load */\n onError?: () => void\n /** Test ID for the component */\n 'data-testid'?: string\n}\n\nexport const Image = forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n src,\n alt = '',\n fallback,\n placeholder,\n preview = true,\n width,\n height,\n className = '',\n onLoad,\n onError,\n 'data-testid': testId = 'image',\n ...props\n },\n ref\n ) => {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [showPreview, setShowPreview] = useState(false)\n const [currentSrc, setCurrentSrc] = useState(src)\n\n useEffect(() => {\n setLoading(true)\n setError(false)\n setCurrentSrc(src)\n }, [src])\n\n const handleLoad = useCallback(() => {\n setLoading(false)\n setError(false)\n onLoad?.()\n }, [onLoad])\n\n const handleError = useCallback(() => {\n setLoading(false)\n setError(true)\n if (fallback) {\n setCurrentSrc(fallback)\n }\n onError?.()\n }, [fallback, onError])\n\n const handleImageClick = useCallback(() => {\n if (preview && !error && !loading) {\n setShowPreview(true)\n }\n }, [preview, error, loading])\n\n const handleClosePreview = useCallback(() => {\n setShowPreview(false)\n }, [])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (preview && !error && !loading && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n setShowPreview(true)\n }\n },\n [preview, error, loading]\n )\n\n const handlePreviewKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setShowPreview(false)\n }\n }, [])\n\n const getStyle = (): React.CSSProperties => {\n const style: React.CSSProperties = {}\n if (width) {\n style.width = typeof width === 'number' ? `${width}px` : width\n }\n if (height) {\n style.height = typeof height === 'number' ? `${height}px` : height\n }\n return style\n }\n\n const isPreviewable = preview && !error && !loading\n const imageClasses = [\n className,\n isPreviewable ? 'cursor-pointer hover:opacity-80 transition-opacity' : '',\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <>\n <div\n className=\"relative inline-block\"\n style={getStyle()}\n data-testid={testId}\n data-state={loading ? 'loading' : error ? 'error' : 'loaded'}\n >\n {loading && placeholder && (\n <div\n className=\"absolute inset-0 flex items-center justify-center bg-base-200\"\n data-testid={`${testId}-placeholder`}\n >\n {placeholder}\n </div>\n )}\n <img\n ref={ref}\n {...props}\n src={currentSrc}\n alt={alt}\n className={imageClasses}\n style={{ ...getStyle(), display: loading ? 'none' : 'block' }}\n onLoad={handleLoad}\n onError={handleError}\n onClick={handleImageClick}\n onKeyDown={handleKeyDown}\n tabIndex={isPreviewable ? 0 : undefined}\n role={isPreviewable ? 'button' : undefined}\n aria-label={isPreviewable ? `${alt || 'Image'} (click to preview)` : undefined}\n data-testid={`${testId}-img`}\n />\n {error && !fallback && (\n <div\n className=\"flex items-center justify-center bg-base-200 text-base-content/50\"\n style={getStyle()}\n data-testid={`${testId}-error`}\n role=\"img\"\n aria-label={`Failed to load: ${alt || 'image'}`}\n >\n <svg\n className=\"w-12 h-12\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n )}\n </div>\n\n {showPreview && (\n <div\n className=\"fixed inset-0 z-50 bg-black bg-opacity-80 flex items-center justify-center p-4\"\n onClick={handleClosePreview}\n onKeyDown={handlePreviewKeyDown}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`Preview: ${alt || 'Image'}`}\n data-testid={`${testId}-preview`}\n >\n <div className=\"relative max-w-full max-h-full\">\n <button\n className=\"absolute top-4 right-4 btn btn-circle btn-sm\"\n onClick={handleClosePreview}\n aria-label=\"Close preview\"\n autoFocus\n data-testid={`${testId}-preview-close`}\n >\n <svg\n className=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n <img\n src={src}\n alt={alt}\n className=\"max-w-full max-h-[90vh] object-contain\"\n onClick={(e) => e.stopPropagation()}\n data-testid={`${testId}-preview-img`}\n />\n </div>\n </div>\n )}\n </>\n )\n }\n)\n\nImage.displayName = 'Image'\n"],"names":["Image","forwardRef","src","alt","fallback","placeholder","preview","width","height","className","onLoad","onError","testId","props","ref","loading","setLoading","useState","error","setError","showPreview","setShowPreview","currentSrc","setCurrentSrc","useEffect","handleLoad","useCallback","handleError","handleImageClick","handleClosePreview","handleKeyDown","handlePreviewKeyDown","getStyle","style","isPreviewable","imageClasses","jsxs","Fragment","jsx"],"mappings":"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"}
package/dist/index40.js CHANGED
@@ -1,43 +1,401 @@
1
- import { jsxs as p, jsx as m } from "react/jsx-runtime";
2
- import b from "react";
3
- const f = ({
4
- position: r = "top-end",
5
- children: s,
6
- className: c = "",
7
- ...o
8
- }) => {
9
- const a = (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), n = 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 ${a(r)}`, children: i }),
37
- n
38
- ] });
39
- };
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 W = ue(void 0);
4
+ function V() {
5
+ const l = de(W);
6
+ if (!l)
7
+ throw new Error("Dropdown compound components must be used within Dropdown");
8
+ return l;
9
+ }
10
+ function fe({
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: f = !1,
20
+ arrow: p = !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, _] = j(!o), z = 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
+ f || (F || I(t), t && _(!0), r?.(t, { source: E }));
30
+ }, [f, F, r]), Z = R(() => {
31
+ g(!1, "menu"), x(-1), document.getElementById(v)?.focus();
32
+ }, [g, v]), H = R((t, E, a) => {
33
+ E ? z.current.set(t, { ref: E, disabled: a }) : z.current.delete(t);
34
+ }, []);
35
+ L(() => {
36
+ if (o && !A) {
37
+ const t = setTimeout(() => _(!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 p == "boolean" ? p : !!p, 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
+ W.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: f,
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": f || 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: f } = V(), p = (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: f ? -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
+ p(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: f, arrow: p, position: m } = V(), c = N(null), y = D.Children.toArray(l).filter(
191
+ (e) => D.isValidElement(e) && e.type === O
192
+ );
193
+ L(() => {
194
+ f(y.length);
195
+ }, [y.length, f]), 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 = p ? /* @__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} ${p ? "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: f = ""
269
+ }) {
270
+ const { closeDropdown: p } = V(), m = [u && "active", n && "disabled", f].filter(Boolean).join(" "), c = () => {
271
+ n || (s?.(), p());
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), f = N(null), p = 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), p.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: f,
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: p,
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(fe, {
392
+ Trigger: G,
393
+ Menu: J,
394
+ Item: O,
395
+ SubMenu: Q,
396
+ Divider: X
397
+ });
40
398
  export {
41
- f as Indicator
399
+ be as Dropdown
42
400
  };
43
401
  //# sourceMappingURL=index40.js.map
@@ -1 +1 @@
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;"}
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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"}