asterui 0.12.6 → 0.12.8

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 (176) hide show
  1. package/dist/components/Container.d.ts +7 -1
  2. package/dist/components/Fieldset.d.ts +6 -0
  3. package/dist/components/Filter.d.ts +27 -0
  4. package/dist/components/FloatButton.d.ts +50 -11
  5. package/dist/components/Grid.d.ts +1 -1
  6. package/dist/components/Modal.d.ts +7 -2
  7. package/dist/components/ThemeController.d.ts +12 -4
  8. package/dist/index.d.ts +4 -2
  9. package/dist/index.js +167 -165
  10. package/dist/index.js.map +1 -1
  11. package/dist/index100.js +44 -11
  12. package/dist/index100.js.map +1 -1
  13. package/dist/index101.js +10 -12
  14. package/dist/index101.js.map +1 -1
  15. package/dist/index102.js +14 -7
  16. package/dist/index102.js.map +1 -1
  17. package/dist/index103.js +7 -12
  18. package/dist/index103.js.map +1 -1
  19. package/dist/index104.js +11 -29
  20. package/dist/index104.js.map +1 -1
  21. package/dist/index105.js +29 -16
  22. package/dist/index105.js.map +1 -1
  23. package/dist/index106.js +21 -0
  24. package/dist/index106.js.map +1 -0
  25. package/dist/index18.js +23 -15
  26. package/dist/index18.js.map +1 -1
  27. package/dist/index2.js +41 -34
  28. package/dist/index2.js.map +1 -1
  29. package/dist/index21.js +1 -1
  30. package/dist/index25.js +8 -8
  31. package/dist/index25.js.map +1 -1
  32. package/dist/index27.js +13 -8
  33. package/dist/index27.js.map +1 -1
  34. package/dist/index29.js +50 -61
  35. package/dist/index29.js.map +1 -1
  36. package/dist/index30.js +60 -77
  37. package/dist/index30.js.map +1 -1
  38. package/dist/index31.js +184 -18
  39. package/dist/index31.js.map +1 -1
  40. package/dist/index32.js +15 -217
  41. package/dist/index32.js.map +1 -1
  42. package/dist/index33.js +216 -1078
  43. package/dist/index33.js.map +1 -1
  44. package/dist/index34.js +1086 -17
  45. package/dist/index34.js.map +1 -1
  46. package/dist/index35.js +17 -121
  47. package/dist/index35.js.map +1 -1
  48. package/dist/index36.js +119 -37
  49. package/dist/index36.js.map +1 -1
  50. package/dist/index37.js +34 -208
  51. package/dist/index37.js.map +1 -1
  52. package/dist/index38.js +214 -97
  53. package/dist/index38.js.map +1 -1
  54. package/dist/index39.js +93 -158
  55. package/dist/index39.js.map +1 -1
  56. package/dist/index40.js +155 -139
  57. package/dist/index40.js.map +1 -1
  58. package/dist/index41.js +146 -15
  59. package/dist/index41.js.map +1 -1
  60. package/dist/index42.js +15 -17
  61. package/dist/index42.js.map +1 -1
  62. package/dist/index43.js +17 -21
  63. package/dist/index43.js.map +1 -1
  64. package/dist/index44.js +18 -116
  65. package/dist/index44.js.map +1 -1
  66. package/dist/index45.js +116 -10
  67. package/dist/index45.js.map +1 -1
  68. package/dist/index46.js +13 -35
  69. package/dist/index46.js.map +1 -1
  70. package/dist/index47.js +35 -34
  71. package/dist/index47.js.map +1 -1
  72. package/dist/index48.js +34 -116
  73. package/dist/index48.js.map +1 -1
  74. package/dist/index49.js +114 -174
  75. package/dist/index49.js.map +1 -1
  76. package/dist/index50.js +165 -136
  77. package/dist/index50.js.map +1 -1
  78. package/dist/index51.js +146 -11
  79. package/dist/index51.js.map +1 -1
  80. package/dist/index52.js +10 -20
  81. package/dist/index52.js.map +1 -1
  82. package/dist/index53.js +22 -14
  83. package/dist/index53.js.map +1 -1
  84. package/dist/index54.js +14 -7
  85. package/dist/index54.js.map +1 -1
  86. package/dist/index55.js +6 -268
  87. package/dist/index55.js.map +1 -1
  88. package/dist/index56.js +311 -17
  89. package/dist/index56.js.map +1 -1
  90. package/dist/index57.js +17 -122
  91. package/dist/index57.js.map +1 -1
  92. package/dist/index58.js +120 -108
  93. package/dist/index58.js.map +1 -1
  94. package/dist/index59.js +107 -167
  95. package/dist/index59.js.map +1 -1
  96. package/dist/index60.js +167 -29
  97. package/dist/index60.js.map +1 -1
  98. package/dist/index61.js +30 -120
  99. package/dist/index61.js.map +1 -1
  100. package/dist/index62.js +116 -80
  101. package/dist/index62.js.map +1 -1
  102. package/dist/index63.js +85 -19
  103. package/dist/index63.js.map +1 -1
  104. package/dist/index64.js +19 -73
  105. package/dist/index64.js.map +1 -1
  106. package/dist/index65.js +71 -54
  107. package/dist/index65.js.map +1 -1
  108. package/dist/index66.js +56 -44
  109. package/dist/index66.js.map +1 -1
  110. package/dist/index67.js +42 -49
  111. package/dist/index67.js.map +1 -1
  112. package/dist/index68.js +52 -62
  113. package/dist/index68.js.map +1 -1
  114. package/dist/index69.js +56 -101
  115. package/dist/index69.js.map +1 -1
  116. package/dist/index70.js +107 -41
  117. package/dist/index70.js.map +1 -1
  118. package/dist/index71.js +41 -68
  119. package/dist/index71.js.map +1 -1
  120. package/dist/index72.js +66 -19
  121. package/dist/index72.js.map +1 -1
  122. package/dist/index73.js +18 -43
  123. package/dist/index73.js.map +1 -1
  124. package/dist/index74.js +44 -132
  125. package/dist/index74.js.map +1 -1
  126. package/dist/index75.js +132 -50
  127. package/dist/index75.js.map +1 -1
  128. package/dist/index76.js +51 -21
  129. package/dist/index76.js.map +1 -1
  130. package/dist/index77.js +22 -31
  131. package/dist/index77.js.map +1 -1
  132. package/dist/index78.js +31 -22
  133. package/dist/index78.js.map +1 -1
  134. package/dist/index79.js +20 -327
  135. package/dist/index79.js.map +1 -1
  136. package/dist/index80.js +323 -50
  137. package/dist/index80.js.map +1 -1
  138. package/dist/index81.js +56 -40
  139. package/dist/index81.js.map +1 -1
  140. package/dist/index82.js +40 -23
  141. package/dist/index82.js.map +1 -1
  142. package/dist/index83.js +21 -93
  143. package/dist/index83.js.map +1 -1
  144. package/dist/index84.js +88 -123
  145. package/dist/index84.js.map +1 -1
  146. package/dist/index85.js +147 -152
  147. package/dist/index85.js.map +1 -1
  148. package/dist/index86.js +159 -63
  149. package/dist/index86.js.map +1 -1
  150. package/dist/index87.js +65 -35
  151. package/dist/index87.js.map +1 -1
  152. package/dist/index88.js +35 -234
  153. package/dist/index88.js.map +1 -1
  154. package/dist/index89.js +231 -31
  155. package/dist/index89.js.map +1 -1
  156. package/dist/index90.js +34 -210
  157. package/dist/index90.js.map +1 -1
  158. package/dist/index91.js +195 -198
  159. package/dist/index91.js.map +1 -1
  160. package/dist/index92.js +159 -241
  161. package/dist/index92.js.map +1 -1
  162. package/dist/index93.js +283 -166
  163. package/dist/index93.js.map +1 -1
  164. package/dist/index94.js +173 -253
  165. package/dist/index94.js.map +1 -1
  166. package/dist/index95.js +258 -14
  167. package/dist/index95.js.map +1 -1
  168. package/dist/index96.js +12 -31
  169. package/dist/index96.js.map +1 -1
  170. package/dist/index97.js +32 -5
  171. package/dist/index97.js.map +1 -1
  172. package/dist/index98.js +5 -13
  173. package/dist/index98.js.map +1 -1
  174. package/dist/index99.js +11 -43
  175. package/dist/index99.js.map +1 -1
  176. package/package.json +2 -2
package/dist/index37.js CHANGED
@@ -1,217 +1,43 @@
1
- import { jsx as I, jsxs as L } from "react/jsx-runtime";
2
- import h, { useId as B, useState as E, useRef as v, useCallback as R, useEffect as O, createContext as S, useContext as U } from "react";
3
- const F = S(void 0);
4
- function j() {
5
- const n = U(F);
6
- if (!n)
7
- throw new Error("Dropdown compound components must be used within Dropdown");
8
- return n;
9
- }
10
- function q({
11
- children: n,
12
- hover: d = !1,
13
- position: u = "bottom",
14
- align: r = "start",
15
- open: a,
16
- onOpenChange: o,
17
- disabled: t = !1,
18
- arrow: s = !1,
19
- className: i = "",
20
- ...p
21
- }) {
22
- const f = B(), l = B(), [c, g] = E(!1), [C, x] = E(-1), [A, k] = E(0), e = v(/* @__PURE__ */ new Map()), D = v(null), m = a !== void 0, b = m ? a : c, K = R((w) => {
23
- t || (m || g(w), o?.(w));
24
- }, [t, m, o]), $ = R((w, y, V) => {
25
- y ? e.current.set(w, { ref: y, disabled: V }) : e.current.delete(w);
26
- }, []);
27
- O(() => {
28
- const w = (y) => {
29
- D.current && !D.current.contains(y.target) && (K(!1), x(-1));
30
- };
31
- if (b)
32
- return document.addEventListener("mousedown", w), () => document.removeEventListener("mousedown", w);
33
- }, [b]);
34
- const M = {
35
- top: "dropdown-top",
36
- bottom: "dropdown-bottom",
37
- left: "dropdown-left",
38
- right: "dropdown-right"
39
- }, P = {
40
- start: "",
41
- center: "dropdown-center",
42
- end: "dropdown-end"
43
- }, T = [
44
- "dropdown",
45
- M[u],
46
- P[r],
47
- d && "dropdown-hover",
48
- b && "dropdown-open",
49
- i
50
- ].filter(Boolean).join(" ");
51
- return /* @__PURE__ */ I(
52
- F.Provider,
53
- {
54
- value: {
55
- position: u,
56
- align: r,
57
- menuId: f,
58
- triggerId: l,
59
- isOpen: b,
60
- setIsOpen: K,
61
- focusedIndex: C,
62
- setFocusedIndex: x,
63
- registerItem: $,
64
- itemCount: A,
65
- setItemCount: k,
66
- disabled: t,
67
- arrow: s
68
- },
69
- children: /* @__PURE__ */ I("div", { ref: D, className: T, "data-state": b ? "open" : "closed", "aria-disabled": t || void 0, ...p, children: n })
70
- }
71
- );
72
- }
73
- function z({ children: n, className: d = "" }) {
74
- const { menuId: u, triggerId: r, isOpen: a, setIsOpen: o, setFocusedIndex: t, itemCount: s, disabled: i } = j(), p = (l) => {
75
- switch (l.key) {
76
- case "Enter":
77
- case " ":
78
- case "ArrowDown":
79
- l.preventDefault(), o(!0), t(0);
80
- break;
81
- case "ArrowUp":
82
- l.preventDefault(), o(!0), t(s - 1);
83
- break;
84
- case "Escape":
85
- l.preventDefault(), o(!1), t(-1);
1
+ import { jsxs as p, jsx as m } from "react/jsx-runtime";
2
+ import b from "react";
3
+ const j = ({
4
+ position: r = "top-end",
5
+ children: s,
6
+ className: c = "",
7
+ ...o
8
+ }) => {
9
+ const n = (d) => {
10
+ const [l, h] = d.split("-"), t = [];
11
+ switch (l) {
12
+ case "top":
13
+ t.push("indicator-top");
14
+ break;
15
+ case "middle":
16
+ t.push("indicator-middle");
17
+ break;
18
+ case "bottom":
19
+ t.push("indicator-bottom");
86
20
  break;
87
21
  }
88
- }, f = () => {
89
- o(!a), a || t(0);
90
- };
91
- return /* @__PURE__ */ I(
92
- "button",
93
- {
94
- id: r,
95
- type: "button",
96
- tabIndex: i ? -1 : 0,
97
- className: `btn ${d}`,
98
- "aria-haspopup": "menu",
99
- "aria-expanded": a,
100
- "aria-controls": u,
101
- disabled: i,
102
- onClick: f,
103
- onKeyDown: p,
104
- children: n
105
- }
106
- );
107
- }
108
- function H({ children: n, className: d = "" }) {
109
- const { menuId: u, triggerId: r, isOpen: a, setIsOpen: o, focusedIndex: t, setFocusedIndex: s, setItemCount: i, arrow: p, position: f } = j(), l = v(null), c = h.Children.toArray(n).filter(
110
- (e) => h.isValidElement(e) && e.type === N
111
- );
112
- O(() => {
113
- i(c.length);
114
- }, [c.length, i]), O(() => {
115
- a && t >= 0 && l.current && l.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')[t]?.focus();
116
- }, [a, t]);
117
- const g = (e) => {
118
- const m = c.filter(
119
- (b) => h.isValidElement(b) && !b.props.disabled
120
- ).length;
121
- switch (e.key) {
122
- case "ArrowDown":
123
- e.preventDefault(), s((t + 1) % m);
124
- break;
125
- case "ArrowUp":
126
- e.preventDefault(), s((t - 1 + m) % m);
127
- break;
128
- case "Home":
129
- e.preventDefault(), s(0);
22
+ switch (h) {
23
+ case "start":
24
+ t.push("indicator-start");
130
25
  break;
131
- case "End":
132
- e.preventDefault(), s(m - 1);
26
+ case "center":
27
+ t.push("indicator-center");
133
28
  break;
134
- case "Escape":
135
- e.preventDefault(), o(!1), s(-1), document.getElementById(r)?.focus();
29
+ case "end":
30
+ t.push("indicator-end");
136
31
  break;
137
- case "Tab":
138
- o(!1), s(-1);
139
- break;
140
- }
141
- }, C = [
142
- "dropdown-content",
143
- "menu",
144
- "bg-base-100",
145
- "rounded-box",
146
- "z-50",
147
- "shadow",
148
- d
149
- ].filter(Boolean).join(" "), x = h.Children.map(n, (e, D) => h.isValidElement(e) && e.type === N ? h.cloneElement(e, { _index: D }) : e), k = p ? /* @__PURE__ */ I(
150
- "span",
151
- {
152
- className: `absolute w-0 h-0 border-8 border-solid ${{
153
- top: "bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-t-base-100 border-l-transparent border-r-transparent border-b-transparent",
154
- bottom: "top-0 left-1/2 -translate-x-1/2 -translate-y-full border-b-base-100 border-l-transparent border-r-transparent border-t-transparent",
155
- left: "right-0 top-1/2 -translate-y-1/2 translate-x-full border-l-base-100 border-t-transparent border-b-transparent border-r-transparent",
156
- right: "left-0 top-1/2 -translate-y-1/2 -translate-x-full border-r-base-100 border-t-transparent border-b-transparent border-l-transparent"
157
- }[f || "bottom"]}`,
158
- "aria-hidden": "true"
159
- }
160
- ) : null;
161
- return /* @__PURE__ */ L(
162
- "ul",
163
- {
164
- ref: l,
165
- id: u,
166
- role: "menu",
167
- "aria-labelledby": r,
168
- tabIndex: -1,
169
- className: `${C} ${p ? "relative" : ""}`,
170
- onKeyDown: g,
171
- children: [
172
- k,
173
- x
174
- ]
175
32
  }
176
- );
177
- }
178
- function N({
179
- children: n,
180
- onClick: d,
181
- active: u = !1,
182
- disabled: r = !1,
183
- danger: a = !1,
184
- className: o = ""
185
- }) {
186
- const { setIsOpen: t, setFocusedIndex: s, triggerId: i } = j(), p = [u && "active", r && "disabled", o].filter(Boolean).join(" "), f = () => {
187
- r || (d?.(), t(!1), s(-1), document.getElementById(i)?.focus());
188
- };
189
- return /* @__PURE__ */ I("li", { className: p, role: "none", children: /* @__PURE__ */ I(
190
- "a",
191
- {
192
- role: "menuitem",
193
- tabIndex: r ? -1 : 0,
194
- "aria-disabled": r || void 0,
195
- className: a ? "text-error" : "",
196
- onClick: f,
197
- onKeyDown: (c) => {
198
- (c.key === "Enter" || c.key === " ") && !r && (c.preventDefault(), f());
199
- },
200
- children: n
201
- }
202
- ) });
203
- }
204
- function W({ className: n = "" }) {
205
- const d = ["border-base-content/10", n].filter(Boolean).join(" ");
206
- return /* @__PURE__ */ I("li", { role: "separator", className: "my-1", children: /* @__PURE__ */ I("hr", { className: d }) });
207
- }
208
- const J = Object.assign(q, {
209
- Trigger: z,
210
- Menu: H,
211
- Item: N,
212
- Divider: W
213
- });
33
+ return t.join(" ");
34
+ }, e = b.Children.toArray(s), a = e[0], i = e[1];
35
+ return /* @__PURE__ */ p("div", { className: `indicator inline-block ${c}`, ...o, children: [
36
+ i && /* @__PURE__ */ m("div", { className: `indicator-item ${n(r)}`, children: i }),
37
+ a
38
+ ] });
39
+ };
214
40
  export {
215
- J as Dropdown
41
+ j as Indicator
216
42
  };
217
43
  //# sourceMappingURL=index37.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index37.js","sources":["../src/components/Dropdown.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useRef, useState, useCallback, useEffect } from 'react'\n\ninterface DropdownContextValue {\n position?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n menuId: string\n triggerId: string\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n registerItem: (index: number, ref: HTMLElement | null, disabled: boolean) => void\n itemCount: number\n setItemCount: (count: number) => void\n disabled: boolean\n arrow: boolean\n}\n\nconst DropdownContext = createContext<DropdownContextValue | undefined>(undefined)\n\nfunction useDropdownContext() {\n const context = useContext(DropdownContext)\n if (!context) {\n throw new Error('Dropdown compound components must be used within Dropdown')\n }\n return context\n}\n\nexport interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hover?: boolean\n position?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n /** Controlled open state */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Disable the dropdown */\n disabled?: boolean\n /** Show arrow pointing to trigger */\n arrow?: boolean\n}\n\nexport interface DropdownTriggerProps {\n children: React.ReactNode\n className?: string\n}\n\nexport interface DropdownMenuProps {\n children: React.ReactNode\n className?: string\n}\n\nexport interface DropdownItemProps {\n children: React.ReactNode\n onClick?: () => void\n active?: boolean\n disabled?: boolean\n danger?: boolean\n className?: string\n _index?: number // Internal prop passed by DropdownMenu\n}\n\nexport interface DropdownDividerProps {\n className?: string\n}\n\nfunction DropdownRoot({\n children,\n hover = false,\n position = 'bottom',\n align = 'start',\n open: controlledOpen,\n onOpenChange,\n disabled = false,\n arrow = false,\n className = '',\n ...rest\n}: DropdownProps) {\n const menuId = useId()\n const triggerId = useId()\n const [internalOpen, setInternalOpen] = useState(false)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [itemCount, setItemCount] = useState(0)\n const itemRefs = useRef<Map<number, { ref: HTMLElement | null; disabled: boolean }>>(new Map())\n const dropdownRef = useRef<HTMLDivElement>(null)\n\n // Use controlled or uncontrolled open state\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const setIsOpen = useCallback((open: boolean) => {\n if (disabled) return\n if (!isControlled) {\n setInternalOpen(open)\n }\n onOpenChange?.(open)\n }, [disabled, isControlled, onOpenChange])\n\n const registerItem = useCallback((index: number, ref: HTMLElement | null, disabled: boolean) => {\n if (ref) {\n itemRefs.current.set(index, { ref, disabled })\n } else {\n itemRefs.current.delete(index)\n }\n }, [])\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n setFocusedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const positionClasses: Record<string, string> = {\n top: 'dropdown-top',\n bottom: 'dropdown-bottom',\n left: 'dropdown-left',\n right: 'dropdown-right',\n }\n\n const alignClasses: Record<string, string> = {\n start: '',\n center: 'dropdown-center',\n end: 'dropdown-end',\n }\n\n const dropdownClasses = [\n 'dropdown',\n positionClasses[position],\n alignClasses[align],\n hover && 'dropdown-hover',\n isOpen && 'dropdown-open',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <DropdownContext.Provider\n value={{\n position,\n align,\n menuId,\n triggerId,\n isOpen,\n setIsOpen,\n focusedIndex,\n setFocusedIndex,\n registerItem,\n itemCount,\n setItemCount,\n disabled,\n arrow,\n }}\n >\n <div ref={dropdownRef} className={dropdownClasses} data-state={isOpen ? 'open' : 'closed'} aria-disabled={disabled || undefined} {...rest}>{children}</div>\n </DropdownContext.Provider>\n )\n}\n\nfunction DropdownTrigger({ children, className = '' }: DropdownTriggerProps) {\n const { menuId, triggerId, isOpen, setIsOpen, setFocusedIndex, itemCount, disabled } = useDropdownContext()\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault()\n setIsOpen(true)\n setFocusedIndex(0)\n break\n case 'ArrowUp':\n event.preventDefault()\n setIsOpen(true)\n setFocusedIndex(itemCount - 1)\n break\n case 'Escape':\n event.preventDefault()\n setIsOpen(false)\n setFocusedIndex(-1)\n break\n }\n }\n\n const handleClick = () => {\n setIsOpen(!isOpen)\n if (!isOpen) {\n setFocusedIndex(0)\n }\n }\n\n return (\n <button\n id={triggerId}\n type=\"button\"\n tabIndex={disabled ? -1 : 0}\n className={`btn ${className}`}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={menuId}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </button>\n )\n}\n\nfunction DropdownMenu({ children, className = '' }: DropdownMenuProps) {\n const { menuId, triggerId, isOpen, setIsOpen, focusedIndex, setFocusedIndex, setItemCount, arrow, position } = useDropdownContext()\n const menuRef = useRef<HTMLUListElement>(null)\n\n // Count children and set item count\n const childArray = React.Children.toArray(children).filter(\n (child) => React.isValidElement(child) && (child.type === DropdownItem)\n )\n\n useEffect(() => {\n setItemCount(childArray.length)\n }, [childArray.length, setItemCount])\n\n // Focus management\n useEffect(() => {\n if (isOpen && focusedIndex >= 0 && menuRef.current) {\n const items = menuRef.current.querySelectorAll('[role=\"menuitem\"]:not([aria-disabled=\"true\"])')\n const item = items[focusedIndex] as HTMLElement\n item?.focus()\n }\n }, [isOpen, focusedIndex])\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const enabledItems = childArray.filter(\n (child) => React.isValidElement(child) && !(child.props as DropdownItemProps).disabled\n )\n const enabledCount = enabledItems.length\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n setFocusedIndex((focusedIndex + 1) % enabledCount)\n break\n case 'ArrowUp':\n event.preventDefault()\n setFocusedIndex((focusedIndex - 1 + enabledCount) % enabledCount)\n break\n case 'Home':\n event.preventDefault()\n setFocusedIndex(0)\n break\n case 'End':\n event.preventDefault()\n setFocusedIndex(enabledCount - 1)\n break\n case 'Escape':\n event.preventDefault()\n setIsOpen(false)\n setFocusedIndex(-1)\n // Return focus to trigger\n document.getElementById(triggerId)?.focus()\n break\n case 'Tab':\n setIsOpen(false)\n setFocusedIndex(-1)\n break\n }\n }\n\n const menuClasses = [\n 'dropdown-content',\n 'menu',\n 'bg-base-100',\n 'rounded-box',\n 'z-50',\n 'shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Clone children to pass index\n const childrenWithIndex = React.Children.map(children, (child, index) => {\n if (React.isValidElement(child) && child.type === DropdownItem) {\n return React.cloneElement(child as React.ReactElement<any>, { _index: index })\n }\n return child\n })\n\n // Arrow position classes based on menu position\n const arrowPositionClasses: Record<string, string> = {\n top: 'bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-t-base-100 border-l-transparent border-r-transparent border-b-transparent',\n bottom: 'top-0 left-1/2 -translate-x-1/2 -translate-y-full border-b-base-100 border-l-transparent border-r-transparent border-t-transparent',\n left: 'right-0 top-1/2 -translate-y-1/2 translate-x-full border-l-base-100 border-t-transparent border-b-transparent border-r-transparent',\n right: 'left-0 top-1/2 -translate-y-1/2 -translate-x-full border-r-base-100 border-t-transparent border-b-transparent border-l-transparent',\n }\n\n const arrowElement = arrow ? (\n <span\n className={`absolute w-0 h-0 border-8 border-solid ${arrowPositionClasses[position || 'bottom']}`}\n aria-hidden=\"true\"\n />\n ) : null\n\n return (\n <ul\n ref={menuRef}\n id={menuId}\n role=\"menu\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={`${menuClasses} ${arrow ? 'relative' : ''}`}\n onKeyDown={handleKeyDown}\n >\n {arrowElement}\n {childrenWithIndex}\n </ul>\n )\n}\n\nfunction DropdownItem({\n children,\n onClick,\n active = false,\n disabled = false,\n danger = false,\n className = '',\n}: DropdownItemProps) {\n const { setIsOpen, setFocusedIndex, triggerId } = useDropdownContext()\n const itemClasses = [active && 'active', disabled && 'disabled', className].filter(Boolean).join(' ')\n\n const handleClick = () => {\n if (!disabled) {\n onClick?.()\n setIsOpen(false)\n setFocusedIndex(-1)\n document.getElementById(triggerId)?.focus()\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if ((event.key === 'Enter' || event.key === ' ') && !disabled) {\n event.preventDefault()\n handleClick()\n }\n }\n\n return (\n <li className={itemClasses} role=\"none\">\n <a\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n className={danger ? 'text-error' : ''}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </a>\n </li>\n )\n}\n\nfunction DropdownDivider({ className = '' }: DropdownDividerProps) {\n const classes = ['border-base-content/10', className].filter(Boolean).join(' ')\n return (\n <li role=\"separator\" className=\"my-1\">\n <hr className={classes} />\n </li>\n )\n}\n\nexport const Dropdown = Object.assign(DropdownRoot, {\n Trigger: DropdownTrigger,\n Menu: DropdownMenu,\n Item: DropdownItem,\n Divider: DropdownDivider,\n})\n"],"names":["DropdownContext","createContext","useDropdownContext","context","useContext","DropdownRoot","children","hover","position","align","controlledOpen","onOpenChange","disabled","arrow","className","rest","menuId","useId","triggerId","internalOpen","setInternalOpen","useState","focusedIndex","setFocusedIndex","itemCount","setItemCount","itemRefs","useRef","dropdownRef","isControlled","isOpen","setIsOpen","useCallback","open","registerItem","index","ref","useEffect","handleClickOutside","event","positionClasses","alignClasses","dropdownClasses","jsx","DropdownTrigger","handleKeyDown","handleClick","DropdownMenu","menuRef","childArray","React","child","DropdownItem","enabledCount","menuClasses","childrenWithIndex","arrowElement","jsxs","onClick","active","danger","itemClasses","DropdownDivider","classes","Dropdown"],"mappings":"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"}
1
+ {"version":3,"file":"index37.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;"}
package/dist/index38.js CHANGED
@@ -1,100 +1,217 @@
1
- import { jsxs as e, jsx as a } from "react/jsx-runtime";
2
- const r = () => /* @__PURE__ */ a(
3
- "svg",
4
- {
5
- width: "184",
6
- height: "152",
7
- viewBox: "0 0 184 152",
8
- xmlns: "http://www.w3.org/2000/svg",
9
- className: "mx-auto",
10
- children: /* @__PURE__ */ e("g", { fill: "none", fillRule: "evenodd", children: [
11
- /* @__PURE__ */ e("g", { transform: "translate(24 31.67)", children: [
12
- /* @__PURE__ */ a(
13
- "ellipse",
14
- {
15
- className: "fill-base-300",
16
- cx: "67.797",
17
- cy: "106.89",
18
- rx: "67.797",
19
- ry: "12.668"
20
- }
21
- ),
22
- /* @__PURE__ */ a(
23
- "path",
24
- {
25
- className: "fill-base-200",
26
- d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"
27
- }
28
- ),
29
- /* @__PURE__ */ a(
30
- "path",
31
- {
32
- className: "fill-base-100",
33
- d: "M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",
34
- transform: "translate(13.56)"
35
- }
36
- ),
37
- /* @__PURE__ */ a(
38
- "ellipse",
39
- {
40
- className: "fill-base-300",
41
- cx: "67.797",
42
- cy: "106.89",
43
- rx: "67.797",
44
- ry: "12.668"
45
- }
46
- ),
47
- /* @__PURE__ */ a(
48
- "path",
49
- {
50
- className: "fill-base-200",
51
- d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"
52
- }
53
- ),
54
- /* @__PURE__ */ a(
55
- "path",
56
- {
57
- className: "fill-base-content opacity-10",
58
- d: "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"
59
- }
60
- ),
61
- /* @__PURE__ */ a(
62
- "path",
63
- {
64
- className: "fill-base-100",
65
- d: "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"
66
- }
67
- )
68
- ] }),
69
- /* @__PURE__ */ a(
70
- "path",
71
- {
72
- className: "fill-base-content opacity-10",
73
- d: "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"
74
- }
75
- ),
76
- /* @__PURE__ */ e("g", { className: "fill-base-100", transform: "translate(149.65 15.383)", children: [
77
- /* @__PURE__ */ a("ellipse", { cx: "20.654", cy: "3.167", rx: "2.849", ry: "2.815" }),
78
- /* @__PURE__ */ a("path", { d: "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" })
79
- ] })
80
- ] })
81
- }
82
- ), o = ({
83
- children: l,
84
- className: t = "",
85
- description: s = "No Data",
86
- image: c,
87
- imageStyle: i,
88
- ...h
89
- }) => {
90
- const n = ["flex flex-col items-center justify-center py-8 px-4", t].filter(Boolean).join(" ");
91
- return /* @__PURE__ */ e("div", { className: n, ...h, children: [
92
- /* @__PURE__ */ a("div", { className: "mb-2", style: i, children: c === void 0 ? /* @__PURE__ */ a(r, {}) : c }),
93
- s && /* @__PURE__ */ a("div", { className: "text-base-content/60 text-sm mb-4", children: s }),
94
- l && /* @__PURE__ */ a("div", { className: "mt-2", children: l })
95
- ] });
96
- };
1
+ import { jsx as I, jsxs as L } from "react/jsx-runtime";
2
+ import h, { useId as B, useState as E, useRef as v, useCallback as R, useEffect as O, createContext as S, useContext as U } from "react";
3
+ const F = S(void 0);
4
+ function j() {
5
+ const n = U(F);
6
+ if (!n)
7
+ throw new Error("Dropdown compound components must be used within Dropdown");
8
+ return n;
9
+ }
10
+ function q({
11
+ children: n,
12
+ hover: d = !1,
13
+ position: u = "bottom",
14
+ align: r = "start",
15
+ open: a,
16
+ onOpenChange: o,
17
+ disabled: t = !1,
18
+ arrow: s = !1,
19
+ className: i = "",
20
+ ...p
21
+ }) {
22
+ const f = B(), l = B(), [c, g] = E(!1), [C, x] = E(-1), [A, k] = E(0), e = v(/* @__PURE__ */ new Map()), D = v(null), m = a !== void 0, b = m ? a : c, K = R((w) => {
23
+ t || (m || g(w), o?.(w));
24
+ }, [t, m, o]), $ = R((w, y, V) => {
25
+ y ? e.current.set(w, { ref: y, disabled: V }) : e.current.delete(w);
26
+ }, []);
27
+ O(() => {
28
+ const w = (y) => {
29
+ D.current && !D.current.contains(y.target) && (K(!1), x(-1));
30
+ };
31
+ if (b)
32
+ return document.addEventListener("mousedown", w), () => document.removeEventListener("mousedown", w);
33
+ }, [b]);
34
+ const M = {
35
+ top: "dropdown-top",
36
+ bottom: "dropdown-bottom",
37
+ left: "dropdown-left",
38
+ right: "dropdown-right"
39
+ }, P = {
40
+ start: "",
41
+ center: "dropdown-center",
42
+ end: "dropdown-end"
43
+ }, T = [
44
+ "dropdown",
45
+ M[u],
46
+ P[r],
47
+ d && "dropdown-hover",
48
+ b && "dropdown-open",
49
+ i
50
+ ].filter(Boolean).join(" ");
51
+ return /* @__PURE__ */ I(
52
+ F.Provider,
53
+ {
54
+ value: {
55
+ position: u,
56
+ align: r,
57
+ menuId: f,
58
+ triggerId: l,
59
+ isOpen: b,
60
+ setIsOpen: K,
61
+ focusedIndex: C,
62
+ setFocusedIndex: x,
63
+ registerItem: $,
64
+ itemCount: A,
65
+ setItemCount: k,
66
+ disabled: t,
67
+ arrow: s
68
+ },
69
+ children: /* @__PURE__ */ I("div", { ref: D, className: T, "data-state": b ? "open" : "closed", "aria-disabled": t || void 0, ...p, children: n })
70
+ }
71
+ );
72
+ }
73
+ function z({ children: n, className: d = "" }) {
74
+ const { menuId: u, triggerId: r, isOpen: a, setIsOpen: o, setFocusedIndex: t, itemCount: s, disabled: i } = j(), p = (l) => {
75
+ switch (l.key) {
76
+ case "Enter":
77
+ case " ":
78
+ case "ArrowDown":
79
+ l.preventDefault(), o(!0), t(0);
80
+ break;
81
+ case "ArrowUp":
82
+ l.preventDefault(), o(!0), t(s - 1);
83
+ break;
84
+ case "Escape":
85
+ l.preventDefault(), o(!1), t(-1);
86
+ break;
87
+ }
88
+ }, f = () => {
89
+ o(!a), a || t(0);
90
+ };
91
+ return /* @__PURE__ */ I(
92
+ "button",
93
+ {
94
+ id: r,
95
+ type: "button",
96
+ tabIndex: i ? -1 : 0,
97
+ className: `btn ${d}`,
98
+ "aria-haspopup": "menu",
99
+ "aria-expanded": a,
100
+ "aria-controls": u,
101
+ disabled: i,
102
+ onClick: f,
103
+ onKeyDown: p,
104
+ children: n
105
+ }
106
+ );
107
+ }
108
+ function H({ children: n, className: d = "" }) {
109
+ const { menuId: u, triggerId: r, isOpen: a, setIsOpen: o, focusedIndex: t, setFocusedIndex: s, setItemCount: i, arrow: p, position: f } = j(), l = v(null), c = h.Children.toArray(n).filter(
110
+ (e) => h.isValidElement(e) && e.type === N
111
+ );
112
+ O(() => {
113
+ i(c.length);
114
+ }, [c.length, i]), O(() => {
115
+ a && t >= 0 && l.current && l.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')[t]?.focus();
116
+ }, [a, t]);
117
+ const g = (e) => {
118
+ const m = c.filter(
119
+ (b) => h.isValidElement(b) && !b.props.disabled
120
+ ).length;
121
+ switch (e.key) {
122
+ case "ArrowDown":
123
+ e.preventDefault(), s((t + 1) % m);
124
+ break;
125
+ case "ArrowUp":
126
+ e.preventDefault(), s((t - 1 + m) % m);
127
+ break;
128
+ case "Home":
129
+ e.preventDefault(), s(0);
130
+ break;
131
+ case "End":
132
+ e.preventDefault(), s(m - 1);
133
+ break;
134
+ case "Escape":
135
+ e.preventDefault(), o(!1), s(-1), document.getElementById(r)?.focus();
136
+ break;
137
+ case "Tab":
138
+ o(!1), s(-1);
139
+ break;
140
+ }
141
+ }, C = [
142
+ "dropdown-content",
143
+ "menu",
144
+ "bg-base-100",
145
+ "rounded-box",
146
+ "z-50",
147
+ "shadow",
148
+ d
149
+ ].filter(Boolean).join(" "), x = h.Children.map(n, (e, D) => h.isValidElement(e) && e.type === N ? h.cloneElement(e, { _index: D }) : e), k = p ? /* @__PURE__ */ I(
150
+ "span",
151
+ {
152
+ className: `absolute w-0 h-0 border-8 border-solid ${{
153
+ top: "bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-t-base-100 border-l-transparent border-r-transparent border-b-transparent",
154
+ bottom: "top-0 left-1/2 -translate-x-1/2 -translate-y-full border-b-base-100 border-l-transparent border-r-transparent border-t-transparent",
155
+ left: "right-0 top-1/2 -translate-y-1/2 translate-x-full border-l-base-100 border-t-transparent border-b-transparent border-r-transparent",
156
+ right: "left-0 top-1/2 -translate-y-1/2 -translate-x-full border-r-base-100 border-t-transparent border-b-transparent border-l-transparent"
157
+ }[f || "bottom"]}`,
158
+ "aria-hidden": "true"
159
+ }
160
+ ) : null;
161
+ return /* @__PURE__ */ L(
162
+ "ul",
163
+ {
164
+ ref: l,
165
+ id: u,
166
+ role: "menu",
167
+ "aria-labelledby": r,
168
+ tabIndex: -1,
169
+ className: `${C} ${p ? "relative" : ""}`,
170
+ onKeyDown: g,
171
+ children: [
172
+ k,
173
+ x
174
+ ]
175
+ }
176
+ );
177
+ }
178
+ function N({
179
+ children: n,
180
+ onClick: d,
181
+ active: u = !1,
182
+ disabled: r = !1,
183
+ danger: a = !1,
184
+ className: o = ""
185
+ }) {
186
+ const { setIsOpen: t, setFocusedIndex: s, triggerId: i } = j(), p = [u && "active", r && "disabled", o].filter(Boolean).join(" "), f = () => {
187
+ r || (d?.(), t(!1), s(-1), document.getElementById(i)?.focus());
188
+ };
189
+ return /* @__PURE__ */ I("li", { className: p, role: "none", children: /* @__PURE__ */ I(
190
+ "a",
191
+ {
192
+ role: "menuitem",
193
+ tabIndex: r ? -1 : 0,
194
+ "aria-disabled": r || void 0,
195
+ className: a ? "text-error" : "",
196
+ onClick: f,
197
+ onKeyDown: (c) => {
198
+ (c.key === "Enter" || c.key === " ") && !r && (c.preventDefault(), f());
199
+ },
200
+ children: n
201
+ }
202
+ ) });
203
+ }
204
+ function W({ className: n = "" }) {
205
+ const d = ["border-base-content/10", n].filter(Boolean).join(" ");
206
+ return /* @__PURE__ */ I("li", { role: "separator", className: "my-1", children: /* @__PURE__ */ I("hr", { className: d }) });
207
+ }
208
+ const J = Object.assign(q, {
209
+ Trigger: z,
210
+ Menu: H,
211
+ Item: N,
212
+ Divider: W
213
+ });
97
214
  export {
98
- o as Empty
215
+ J as Dropdown
99
216
  };
100
217
  //# sourceMappingURL=index38.js.map