asterui 0.12.2 → 0.12.3

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 (298) hide show
  1. package/dist/index.d.ts +0 -3
  2. package/dist/index.js +196 -201
  3. package/dist/index.js.map +1 -1
  4. package/dist/index100.js +11 -44
  5. package/dist/index100.js.map +1 -1
  6. package/dist/index101.js +12 -10
  7. package/dist/index101.js.map +1 -1
  8. package/dist/index102.js +7 -14
  9. package/dist/index102.js.map +1 -1
  10. package/dist/index103.js +12 -7
  11. package/dist/index103.js.map +1 -1
  12. package/dist/index104.js +29 -11
  13. package/dist/index104.js.map +1 -1
  14. package/dist/index105.js +16 -29
  15. package/dist/index105.js.map +1 -1
  16. package/dist/index13.js +95 -35
  17. package/dist/index13.js.map +1 -1
  18. package/dist/index14.js +153 -90
  19. package/dist/index14.js.map +1 -1
  20. package/dist/index15.js +146 -154
  21. package/dist/index15.js.map +1 -1
  22. package/dist/index16.js +5 -150
  23. package/dist/index16.js.map +1 -1
  24. package/dist/index17.js +71 -5
  25. package/dist/index17.js.map +1 -1
  26. package/dist/index18.js +17 -71
  27. package/dist/index18.js.map +1 -1
  28. package/dist/index19.js +96 -15
  29. package/dist/index19.js.map +1 -1
  30. package/dist/index20.js +105 -89
  31. package/dist/index20.js.map +1 -1
  32. package/dist/index21.js +177 -107
  33. package/dist/index21.js.map +1 -1
  34. package/dist/index22.js +107 -181
  35. package/dist/index22.js.map +1 -1
  36. package/dist/index23.js +19 -110
  37. package/dist/index23.js.map +1 -1
  38. package/dist/index24.js +41 -17
  39. package/dist/index24.js.map +1 -1
  40. package/dist/index25.js +32 -43
  41. package/dist/index25.js.map +1 -1
  42. package/dist/index26.js +41 -32
  43. package/dist/index26.js.map +1 -1
  44. package/dist/index27.js +12 -41
  45. package/dist/index27.js.map +1 -1
  46. package/dist/index28.js +33 -12
  47. package/dist/index28.js.map +1 -1
  48. package/dist/index29.js +63 -33
  49. package/dist/index29.js.map +1 -1
  50. package/dist/index30.js +77 -60
  51. package/dist/index30.js.map +1 -1
  52. package/dist/index31.js +18 -80
  53. package/dist/index31.js.map +1 -1
  54. package/dist/index32.js +217 -15
  55. package/dist/index32.js.map +1 -1
  56. package/dist/index33.js +1078 -216
  57. package/dist/index33.js.map +1 -1
  58. package/dist/index34.js +17 -1081
  59. package/dist/index34.js.map +1 -1
  60. package/dist/index35.js +121 -17
  61. package/dist/index35.js.map +1 -1
  62. package/dist/index36.js +37 -119
  63. package/dist/index36.js.map +1 -1
  64. package/dist/index37.js +182 -31
  65. package/dist/index37.js.map +1 -1
  66. package/dist/index38.js +97 -191
  67. package/dist/index38.js.map +1 -1
  68. package/dist/index39.js +158 -93
  69. package/dist/index39.js.map +1 -1
  70. package/dist/index40.js +139 -155
  71. package/dist/index40.js.map +1 -1
  72. package/dist/index41.js +15 -146
  73. package/dist/index41.js.map +1 -1
  74. package/dist/index42.js +17 -14
  75. package/dist/index42.js.map +1 -1
  76. package/dist/index43.js +21 -18
  77. package/dist/index43.js.map +1 -1
  78. package/dist/index44.js +116 -18
  79. package/dist/index44.js.map +1 -1
  80. package/dist/index45.js +10 -116
  81. package/dist/index45.js.map +1 -1
  82. package/dist/index46.js +35 -13
  83. package/dist/index46.js.map +1 -1
  84. package/dist/index47.js +10 -35
  85. package/dist/index47.js.map +1 -1
  86. package/dist/index48.js +116 -10
  87. package/dist/index48.js.map +1 -1
  88. package/dist/index49.js +174 -114
  89. package/dist/index49.js.map +1 -1
  90. package/dist/index50.js +136 -165
  91. package/dist/index50.js.map +1 -1
  92. package/dist/index51.js +11 -146
  93. package/dist/index51.js.map +1 -1
  94. package/dist/index52.js +20 -10
  95. package/dist/index52.js.map +1 -1
  96. package/dist/index53.js +14 -22
  97. package/dist/index53.js.map +1 -1
  98. package/dist/index54.js +7 -14
  99. package/dist/index54.js.map +1 -1
  100. package/dist/index55.js +265 -6
  101. package/dist/index55.js.map +1 -1
  102. package/dist/index56.js +17 -266
  103. package/dist/index56.js.map +1 -1
  104. package/dist/index57.js +122 -17
  105. package/dist/index57.js.map +1 -1
  106. package/dist/index58.js +108 -120
  107. package/dist/index58.js.map +1 -1
  108. package/dist/index59.js +167 -107
  109. package/dist/index59.js.map +1 -1
  110. package/dist/index60.js +29 -167
  111. package/dist/index60.js.map +1 -1
  112. package/dist/index61.js +120 -30
  113. package/dist/index61.js.map +1 -1
  114. package/dist/index62.js +80 -116
  115. package/dist/index62.js.map +1 -1
  116. package/dist/index63.js +19 -85
  117. package/dist/index63.js.map +1 -1
  118. package/dist/index64.js +73 -19
  119. package/dist/index64.js.map +1 -1
  120. package/dist/index65.js +54 -71
  121. package/dist/index65.js.map +1 -1
  122. package/dist/index66.js +44 -56
  123. package/dist/index66.js.map +1 -1
  124. package/dist/index67.js +49 -42
  125. package/dist/index67.js.map +1 -1
  126. package/dist/index68.js +62 -52
  127. package/dist/index68.js.map +1 -1
  128. package/dist/index69.js +101 -56
  129. package/dist/index69.js.map +1 -1
  130. package/dist/index70.js +41 -107
  131. package/dist/index70.js.map +1 -1
  132. package/dist/index71.js +68 -41
  133. package/dist/index71.js.map +1 -1
  134. package/dist/index72.js +19 -66
  135. package/dist/index72.js.map +1 -1
  136. package/dist/index73.js +43 -18
  137. package/dist/index73.js.map +1 -1
  138. package/dist/index74.js +132 -44
  139. package/dist/index74.js.map +1 -1
  140. package/dist/index75.js +50 -132
  141. package/dist/index75.js.map +1 -1
  142. package/dist/index76.js +21 -51
  143. package/dist/index76.js.map +1 -1
  144. package/dist/index77.js +31 -22
  145. package/dist/index77.js.map +1 -1
  146. package/dist/index78.js +22 -31
  147. package/dist/index78.js.map +1 -1
  148. package/dist/index79.js +327 -20
  149. package/dist/index79.js.map +1 -1
  150. package/dist/index80.js +50 -323
  151. package/dist/index80.js.map +1 -1
  152. package/dist/index81.js +40 -56
  153. package/dist/index81.js.map +1 -1
  154. package/dist/index82.js +23 -40
  155. package/dist/index82.js.map +1 -1
  156. package/dist/index83.js +93 -21
  157. package/dist/index83.js.map +1 -1
  158. package/dist/index84.js +123 -88
  159. package/dist/index84.js.map +1 -1
  160. package/dist/index85.js +154 -123
  161. package/dist/index85.js.map +1 -1
  162. package/dist/index86.js +63 -159
  163. package/dist/index86.js.map +1 -1
  164. package/dist/index87.js +35 -65
  165. package/dist/index87.js.map +1 -1
  166. package/dist/index88.js +234 -35
  167. package/dist/index88.js.map +1 -1
  168. package/dist/index89.js +31 -231
  169. package/dist/index89.js.map +1 -1
  170. package/dist/index90.js +210 -34
  171. package/dist/index90.js.map +1 -1
  172. package/dist/index91.js +198 -195
  173. package/dist/index91.js.map +1 -1
  174. package/dist/index92.js +241 -159
  175. package/dist/index92.js.map +1 -1
  176. package/dist/index93.js +166 -283
  177. package/dist/index93.js.map +1 -1
  178. package/dist/index94.js +253 -173
  179. package/dist/index94.js.map +1 -1
  180. package/dist/index95.js +14 -258
  181. package/dist/index95.js.map +1 -1
  182. package/dist/index96.js +31 -12
  183. package/dist/index96.js.map +1 -1
  184. package/dist/index97.js +5 -32
  185. package/dist/index97.js.map +1 -1
  186. package/dist/index98.js +13 -5
  187. package/dist/index98.js.map +1 -1
  188. package/dist/index99.js +43 -11
  189. package/dist/index99.js.map +1 -1
  190. package/package.json +11 -5
  191. package/dist/components/Calendar.d.ts +0 -23
  192. package/dist/index.css +0 -1
  193. package/dist/index106.js +0 -21
  194. package/dist/index106.js.map +0 -1
  195. package/dist/index107.js +0 -177
  196. package/dist/index107.js.map +0 -1
  197. package/dist/index109.js +0 -10796
  198. package/dist/index109.js.map +0 -1
  199. package/dist/index110.js +0 -8
  200. package/dist/index110.js.map +0 -1
  201. package/dist/index111.js +0 -45
  202. package/dist/index111.js.map +0 -1
  203. package/dist/index112.js +0 -5
  204. package/dist/index112.js.map +0 -1
  205. package/dist/index113.js +0 -10
  206. package/dist/index113.js.map +0 -1
  207. package/dist/index114.js +0 -155
  208. package/dist/index114.js.map +0 -1
  209. package/dist/index115.js +0 -33
  210. package/dist/index115.js.map +0 -1
  211. package/dist/index116.js +0 -33
  212. package/dist/index116.js.map +0 -1
  213. package/dist/index117.js +0 -5
  214. package/dist/index117.js.map +0 -1
  215. package/dist/index118.js +0 -75
  216. package/dist/index118.js.map +0 -1
  217. package/dist/index119.js +0 -42
  218. package/dist/index119.js.map +0 -1
  219. package/dist/index120.js +0 -29
  220. package/dist/index120.js.map +0 -1
  221. package/dist/index121.js +0 -24
  222. package/dist/index121.js.map +0 -1
  223. package/dist/index122.js +0 -27
  224. package/dist/index122.js.map +0 -1
  225. package/dist/index123.js +0 -23
  226. package/dist/index123.js.map +0 -1
  227. package/dist/index124.js +0 -103
  228. package/dist/index124.js.map +0 -1
  229. package/dist/index125.js +0 -363
  230. package/dist/index125.js.map +0 -1
  231. package/dist/index126.js +0 -28
  232. package/dist/index126.js.map +0 -1
  233. package/dist/index127.js +0 -76
  234. package/dist/index127.js.map +0 -1
  235. package/dist/index128.js +0 -19
  236. package/dist/index128.js.map +0 -1
  237. package/dist/index129.js +0 -69
  238. package/dist/index129.js.map +0 -1
  239. package/dist/index130.js +0 -147
  240. package/dist/index130.js.map +0 -1
  241. package/dist/index131.js +0 -5
  242. package/dist/index131.js.map +0 -1
  243. package/dist/index132.js +0 -59
  244. package/dist/index132.js.map +0 -1
  245. package/dist/index133.js +0 -5
  246. package/dist/index133.js.map +0 -1
  247. package/dist/index134.js +0 -5
  248. package/dist/index134.js.map +0 -1
  249. package/dist/index135.js +0 -5
  250. package/dist/index135.js.map +0 -1
  251. package/dist/index136.js +0 -5
  252. package/dist/index136.js.map +0 -1
  253. package/dist/index137.js +0 -5
  254. package/dist/index137.js.map +0 -1
  255. package/dist/index138.js +0 -5
  256. package/dist/index138.js.map +0 -1
  257. package/dist/index139.js +0 -5
  258. package/dist/index139.js.map +0 -1
  259. package/dist/index140.js +0 -5
  260. package/dist/index140.js.map +0 -1
  261. package/dist/index141.js +0 -35
  262. package/dist/index141.js.map +0 -1
  263. package/dist/index142.js +0 -5
  264. package/dist/index142.js.map +0 -1
  265. package/dist/index143.js +0 -11
  266. package/dist/index143.js.map +0 -1
  267. package/dist/index144.js +0 -5
  268. package/dist/index144.js.map +0 -1
  269. package/dist/index145.js +0 -5
  270. package/dist/index145.js.map +0 -1
  271. package/dist/index146.js +0 -24
  272. package/dist/index146.js.map +0 -1
  273. package/dist/index147.js +0 -5
  274. package/dist/index147.js.map +0 -1
  275. package/dist/index148.js +0 -27
  276. package/dist/index148.js.map +0 -1
  277. package/dist/index149.js +0 -74
  278. package/dist/index149.js.map +0 -1
  279. package/dist/index150.js +0 -24
  280. package/dist/index150.js.map +0 -1
  281. package/dist/index151.js +0 -37
  282. package/dist/index151.js.map +0 -1
  283. package/dist/index152.js +0 -73
  284. package/dist/index152.js.map +0 -1
  285. package/dist/index153.js +0 -5
  286. package/dist/index153.js.map +0 -1
  287. package/dist/index154.js +0 -25
  288. package/dist/index154.js.map +0 -1
  289. package/dist/index155.js +0 -5
  290. package/dist/index155.js.map +0 -1
  291. package/dist/index156.js +0 -5
  292. package/dist/index156.js.map +0 -1
  293. package/dist/index157.js +0 -5
  294. package/dist/index157.js.map +0 -1
  295. package/dist/index158.js +0 -5
  296. package/dist/index158.js.map +0 -1
  297. package/dist/index159.js +0 -7
  298. package/dist/index159.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index103.js","sources":["../src/hooks/usePrevious.ts"],"sourcesContent":["import { useRef, useEffect } from 'react'\n\n/**\n * Hook that returns the previous value of a variable.\n * Useful for comparing current and previous values in effects.\n *\n * @param value - Current value\n * @returns Previous value (undefined on first render)\n *\n * @example\n * const [count, setCount] = useState(0)\n * const prevCount = usePrevious(count)\n *\n * // prevCount is the value from previous render\n * console.log(`Changed from ${prevCount} to ${count}`)\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>(undefined)\n\n useEffect(() => {\n ref.current = value\n }, [value])\n\n return ref.current\n}\n"],"names":["usePrevious","value","ref","useRef","useEffect"],"mappings":";AAgBO,SAASA,EAAeC,GAAyB;AACtD,QAAMC,IAAMC,EAAsB,MAAS;AAE3C,SAAAC,EAAU,MAAM;AACd,IAAAF,EAAI,UAAUD;AAAA,EAChB,GAAG,CAACA,CAAK,CAAC,GAEHC,EAAI;AACb;"}
1
+ {"version":3,"file":"index103.js","sources":["../src/hooks/useHover.ts"],"sourcesContent":["import { useState, useRef, useEffect, type RefObject } from 'react'\n\nexport interface UseHoverReturn<T extends HTMLElement> {\n ref: RefObject<T | null>\n isHovered: boolean\n}\n\n/**\n * Hook that tracks hover state of an element.\n *\n * @returns Object with ref and isHovered state\n *\n * @example\n * const { ref, isHovered } = useHover<HTMLDivElement>()\n *\n * <div ref={ref} className={isHovered ? 'bg-blue-500' : 'bg-gray-500'}>\n * Hover me!\n * </div>\n */\nexport function useHover<T extends HTMLElement = HTMLElement>(): UseHoverReturn<T> {\n const [isHovered, setIsHovered] = useState(false)\n const ref = useRef<T>(null)\n\n useEffect(() => {\n const node = ref.current\n if (!node) return\n\n const handleMouseEnter = () => setIsHovered(true)\n const handleMouseLeave = () => setIsHovered(false)\n\n node.addEventListener('mouseenter', handleMouseEnter)\n node.addEventListener('mouseleave', handleMouseLeave)\n\n return () => {\n node.removeEventListener('mouseenter', handleMouseEnter)\n node.removeEventListener('mouseleave', handleMouseLeave)\n }\n }, [])\n\n return { ref, isHovered }\n}\n"],"names":["useHover","isHovered","setIsHovered","useState","ref","useRef","useEffect","node","handleMouseEnter","handleMouseLeave"],"mappings":";AAmBO,SAASA,IAAmE;AACjF,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAMC,EAAU,IAAI;AAE1B,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAOH,EAAI;AACjB,QAAI,CAACG,EAAM;AAEX,UAAMC,IAAmB,MAAMN,EAAa,EAAI,GAC1CO,IAAmB,MAAMP,EAAa,EAAK;AAEjD,WAAAK,EAAK,iBAAiB,cAAcC,CAAgB,GACpDD,EAAK,iBAAiB,cAAcE,CAAgB,GAE7C,MAAM;AACX,MAAAF,EAAK,oBAAoB,cAAcC,CAAgB,GACvDD,EAAK,oBAAoB,cAAcE,CAAgB;AAAA,IACzD;AAAA,EACF,GAAG,CAAA,CAAE,GAEE,EAAE,KAAAL,GAAK,WAAAH,EAAA;AAChB;"}
package/dist/index104.js CHANGED
@@ -1,16 +1,34 @@
1
- import { useState as u, useRef as v, useEffect as a } from "react";
2
- function f() {
3
- const [o, t] = u(!1), n = v(null);
4
- return a(() => {
5
- const e = n.current;
6
- if (!e) return;
7
- const r = () => t(!0), s = () => t(!1);
8
- return e.addEventListener("mouseenter", r), e.addEventListener("mouseleave", s), () => {
9
- e.removeEventListener("mouseenter", r), e.removeEventListener("mouseleave", s);
1
+ import { useState as v, useCallback as i, useEffect as l } from "react";
2
+ function c(n, f = {}) {
3
+ const { target: u, event: o = "keydown", preventDefault: r = !1 } = f, [a, d] = v(!1), t = i(
4
+ (e) => {
5
+ e.key === n && (r && e.preventDefault(), d(!0));
6
+ },
7
+ [n, r]
8
+ ), s = i(
9
+ (e) => {
10
+ e.key === n && d(!1);
11
+ },
12
+ [n]
13
+ );
14
+ return l(() => {
15
+ const e = u ?? window;
16
+ return o === "keydown" ? (e.addEventListener("keydown", t), e.addEventListener("keyup", s)) : e.addEventListener("keyup", t), () => {
17
+ e.removeEventListener("keydown", t), e.removeEventListener("keyup", s);
10
18
  };
11
- }, []), { ref: n, isHovered: o };
19
+ }, [u, o, t, s]), a;
20
+ }
21
+ function y(n, f, u = {}) {
22
+ const { target: o, event: r = "keydown", preventDefault: a = !1 } = u;
23
+ l(() => {
24
+ const d = o ?? window, t = (s) => {
25
+ s.key === n && (a && s.preventDefault(), f(s));
26
+ };
27
+ return d.addEventListener(r, t), () => d.removeEventListener(r, t);
28
+ }, [o, n, f, r, a]);
12
29
  }
13
30
  export {
14
- f as useHover
31
+ c as useKeyPress,
32
+ y as useKeyPressCallback
15
33
  };
16
34
  //# sourceMappingURL=index104.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index104.js","sources":["../src/hooks/useHover.ts"],"sourcesContent":["import { useState, useRef, useEffect, type RefObject } from 'react'\n\nexport interface UseHoverReturn<T extends HTMLElement> {\n ref: RefObject<T | null>\n isHovered: boolean\n}\n\n/**\n * Hook that tracks hover state of an element.\n *\n * @returns Object with ref and isHovered state\n *\n * @example\n * const { ref, isHovered } = useHover<HTMLDivElement>()\n *\n * <div ref={ref} className={isHovered ? 'bg-blue-500' : 'bg-gray-500'}>\n * Hover me!\n * </div>\n */\nexport function useHover<T extends HTMLElement = HTMLElement>(): UseHoverReturn<T> {\n const [isHovered, setIsHovered] = useState(false)\n const ref = useRef<T>(null)\n\n useEffect(() => {\n const node = ref.current\n if (!node) return\n\n const handleMouseEnter = () => setIsHovered(true)\n const handleMouseLeave = () => setIsHovered(false)\n\n node.addEventListener('mouseenter', handleMouseEnter)\n node.addEventListener('mouseleave', handleMouseLeave)\n\n return () => {\n node.removeEventListener('mouseenter', handleMouseEnter)\n node.removeEventListener('mouseleave', handleMouseLeave)\n }\n }, [])\n\n return { ref, isHovered }\n}\n"],"names":["useHover","isHovered","setIsHovered","useState","ref","useRef","useEffect","node","handleMouseEnter","handleMouseLeave"],"mappings":";AAmBO,SAASA,IAAmE;AACjF,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAMC,EAAU,IAAI;AAE1B,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAOH,EAAI;AACjB,QAAI,CAACG,EAAM;AAEX,UAAMC,IAAmB,MAAMN,EAAa,EAAI,GAC1CO,IAAmB,MAAMP,EAAa,EAAK;AAEjD,WAAAK,EAAK,iBAAiB,cAAcC,CAAgB,GACpDD,EAAK,iBAAiB,cAAcE,CAAgB,GAE7C,MAAM;AACX,MAAAF,EAAK,oBAAoB,cAAcC,CAAgB,GACvDD,EAAK,oBAAoB,cAAcE,CAAgB;AAAA,IACzD;AAAA,EACF,GAAG,CAAA,CAAE,GAEE,EAAE,KAAAL,GAAK,WAAAH,EAAA;AAChB;"}
1
+ {"version":3,"file":"index104.js","sources":["../src/hooks/useKeyPress.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react'\n\nexport interface UseKeyPressOptions {\n /** Target element (default: window) */\n target?: HTMLElement | Window | null\n /** Event type: 'keydown' | 'keyup' (default: 'keydown') */\n event?: 'keydown' | 'keyup'\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\n/**\n * Hook that detects when a specific key is pressed.\n *\n * @param targetKey - Key to detect (e.g., 'Enter', 'Escape', 'a')\n * @param options - Configuration options\n * @returns Whether the key is currently pressed\n *\n * @example\n * const enterPressed = useKeyPress('Enter')\n * const escapePressed = useKeyPress('Escape')\n *\n * useEffect(() => {\n * if (escapePressed) closeModal()\n * }, [escapePressed])\n *\n * @example\n * // With callback for immediate action\n * useKeyPress('Escape', { preventDefault: true })\n */\nexport function useKeyPress(\n targetKey: string,\n options: UseKeyPressOptions = {}\n): boolean {\n const { target, event = 'keydown', preventDefault = false } = options\n const [keyPressed, setKeyPressed] = useState(false)\n\n const downHandler = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n if (preventDefault) e.preventDefault()\n setKeyPressed(true)\n }\n },\n [targetKey, preventDefault]\n )\n\n const upHandler = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n setKeyPressed(false)\n }\n },\n [targetKey]\n )\n\n useEffect(() => {\n const targetElement = target ?? window\n\n if (event === 'keydown') {\n targetElement.addEventListener('keydown', downHandler as EventListener)\n targetElement.addEventListener('keyup', upHandler as EventListener)\n } else {\n targetElement.addEventListener('keyup', downHandler as EventListener)\n }\n\n return () => {\n targetElement.removeEventListener('keydown', downHandler as EventListener)\n targetElement.removeEventListener('keyup', upHandler as EventListener)\n }\n }, [target, event, downHandler, upHandler])\n\n return keyPressed\n}\n\n/**\n * Hook that calls a callback when a specific key is pressed.\n *\n * @param targetKey - Key to detect\n * @param callback - Function to call when key is pressed\n * @param options - Configuration options\n *\n * @example\n * useKeyPressCallback('Escape', () => closeModal())\n * useKeyPressCallback('Enter', () => submitForm(), { preventDefault: true })\n */\nexport function useKeyPressCallback(\n targetKey: string,\n callback: (event: KeyboardEvent) => void,\n options: UseKeyPressOptions = {}\n): void {\n const { target, event = 'keydown', preventDefault = false } = options\n\n useEffect(() => {\n const targetElement = target ?? window\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n if (preventDefault) e.preventDefault()\n callback(e)\n }\n }\n\n targetElement.addEventListener(event, handler as EventListener)\n return () => targetElement.removeEventListener(event, handler as EventListener)\n }, [target, targetKey, callback, event, preventDefault])\n}\n"],"names":["useKeyPress","targetKey","options","target","event","preventDefault","keyPressed","setKeyPressed","useState","downHandler","useCallback","upHandler","useEffect","targetElement","useKeyPressCallback","callback","handler","e"],"mappings":";AA8BO,SAASA,EACdC,GACAC,IAA8B,IACrB;AACT,QAAM,EAAE,QAAAC,GAAQ,OAAAC,IAAQ,WAAW,gBAAAC,IAAiB,OAAUH,GACxD,CAACI,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAE5CC,IAAcC;AAAA,IAClB,CAAC,MAAqB;AACpB,MAAI,EAAE,QAAQT,MACRI,OAAkB,eAAA,GACtBE,EAAc,EAAI;AAAA,IAEtB;AAAA,IACA,CAACN,GAAWI,CAAc;AAAA,EAAA,GAGtBM,IAAYD;AAAA,IAChB,CAAC,MAAqB;AACpB,MAAI,EAAE,QAAQT,KACZM,EAAc,EAAK;AAAA,IAEvB;AAAA,IACA,CAACN,CAAS;AAAA,EAAA;AAGZ,SAAAW,EAAU,MAAM;AACd,UAAMC,IAAgBV,KAAU;AAEhC,WAAIC,MAAU,aACZS,EAAc,iBAAiB,WAAWJ,CAA4B,GACtEI,EAAc,iBAAiB,SAASF,CAA0B,KAElEE,EAAc,iBAAiB,SAASJ,CAA4B,GAG/D,MAAM;AACX,MAAAI,EAAc,oBAAoB,WAAWJ,CAA4B,GACzEI,EAAc,oBAAoB,SAASF,CAA0B;AAAA,IACvE;AAAA,EACF,GAAG,CAACR,GAAQC,GAAOK,GAAaE,CAAS,CAAC,GAEnCL;AACT;AAaO,SAASQ,EACdb,GACAc,GACAb,IAA8B,CAAA,GACxB;AACN,QAAM,EAAE,QAAAC,GAAQ,OAAAC,IAAQ,WAAW,gBAAAC,IAAiB,OAAUH;AAE9D,EAAAU,EAAU,MAAM;AACd,UAAMC,IAAgBV,KAAU,QAE1Ba,IAAU,CAACC,MAAqB;AACpC,MAAIA,EAAE,QAAQhB,MACRI,OAAkB,eAAA,GACtBU,EAASE,CAAC;AAAA,IAEd;AAEA,WAAAJ,EAAc,iBAAiBT,GAAOY,CAAwB,GACvD,MAAMH,EAAc,oBAAoBT,GAAOY,CAAwB;AAAA,EAChF,GAAG,CAACb,GAAQF,GAAWc,GAAUX,GAAOC,CAAc,CAAC;AACzD;"}
package/dist/index105.js CHANGED
@@ -1,34 +1,21 @@
1
- import { useState as v, useCallback as i, useEffect as l } from "react";
2
- function c(n, f = {}) {
3
- const { target: u, event: o = "keydown", preventDefault: r = !1 } = f, [a, d] = v(!1), t = i(
4
- (e) => {
5
- e.key === n && (r && e.preventDefault(), d(!0));
6
- },
7
- [n, r]
8
- ), s = i(
9
- (e) => {
10
- e.key === n && d(!1);
11
- },
12
- [n]
13
- );
14
- return l(() => {
15
- const e = u ?? window;
16
- return o === "keydown" ? (e.addEventListener("keydown", t), e.addEventListener("keyup", s)) : e.addEventListener("keyup", t), () => {
17
- e.removeEventListener("keydown", t), e.removeEventListener("keyup", s);
1
+ import { useState as t, useEffect as d } from "react";
2
+ function r() {
3
+ const [i, n] = t(() => typeof window > "u" ? { width: 0, height: 0 } : {
4
+ width: window.innerWidth,
5
+ height: window.innerHeight
6
+ });
7
+ return d(() => {
8
+ if (typeof window > "u") return;
9
+ const e = () => {
10
+ n({
11
+ width: window.innerWidth,
12
+ height: window.innerHeight
13
+ });
18
14
  };
19
- }, [u, o, t, s]), a;
20
- }
21
- function y(n, f, u = {}) {
22
- const { target: o, event: r = "keydown", preventDefault: a = !1 } = u;
23
- l(() => {
24
- const d = o ?? window, t = (s) => {
25
- s.key === n && (a && s.preventDefault(), f(s));
26
- };
27
- return d.addEventListener(r, t), () => d.removeEventListener(r, t);
28
- }, [o, n, f, r, a]);
15
+ return window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
16
+ }, []), i;
29
17
  }
30
18
  export {
31
- c as useKeyPress,
32
- y as useKeyPressCallback
19
+ r as useWindowSize
33
20
  };
34
21
  //# sourceMappingURL=index105.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index105.js","sources":["../src/hooks/useKeyPress.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react'\n\nexport interface UseKeyPressOptions {\n /** Target element (default: window) */\n target?: HTMLElement | Window | null\n /** Event type: 'keydown' | 'keyup' (default: 'keydown') */\n event?: 'keydown' | 'keyup'\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\n/**\n * Hook that detects when a specific key is pressed.\n *\n * @param targetKey - Key to detect (e.g., 'Enter', 'Escape', 'a')\n * @param options - Configuration options\n * @returns Whether the key is currently pressed\n *\n * @example\n * const enterPressed = useKeyPress('Enter')\n * const escapePressed = useKeyPress('Escape')\n *\n * useEffect(() => {\n * if (escapePressed) closeModal()\n * }, [escapePressed])\n *\n * @example\n * // With callback for immediate action\n * useKeyPress('Escape', { preventDefault: true })\n */\nexport function useKeyPress(\n targetKey: string,\n options: UseKeyPressOptions = {}\n): boolean {\n const { target, event = 'keydown', preventDefault = false } = options\n const [keyPressed, setKeyPressed] = useState(false)\n\n const downHandler = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n if (preventDefault) e.preventDefault()\n setKeyPressed(true)\n }\n },\n [targetKey, preventDefault]\n )\n\n const upHandler = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n setKeyPressed(false)\n }\n },\n [targetKey]\n )\n\n useEffect(() => {\n const targetElement = target ?? window\n\n if (event === 'keydown') {\n targetElement.addEventListener('keydown', downHandler as EventListener)\n targetElement.addEventListener('keyup', upHandler as EventListener)\n } else {\n targetElement.addEventListener('keyup', downHandler as EventListener)\n }\n\n return () => {\n targetElement.removeEventListener('keydown', downHandler as EventListener)\n targetElement.removeEventListener('keyup', upHandler as EventListener)\n }\n }, [target, event, downHandler, upHandler])\n\n return keyPressed\n}\n\n/**\n * Hook that calls a callback when a specific key is pressed.\n *\n * @param targetKey - Key to detect\n * @param callback - Function to call when key is pressed\n * @param options - Configuration options\n *\n * @example\n * useKeyPressCallback('Escape', () => closeModal())\n * useKeyPressCallback('Enter', () => submitForm(), { preventDefault: true })\n */\nexport function useKeyPressCallback(\n targetKey: string,\n callback: (event: KeyboardEvent) => void,\n options: UseKeyPressOptions = {}\n): void {\n const { target, event = 'keydown', preventDefault = false } = options\n\n useEffect(() => {\n const targetElement = target ?? window\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n if (preventDefault) e.preventDefault()\n callback(e)\n }\n }\n\n targetElement.addEventListener(event, handler as EventListener)\n return () => targetElement.removeEventListener(event, handler as EventListener)\n }, [target, targetKey, callback, event, preventDefault])\n}\n"],"names":["useKeyPress","targetKey","options","target","event","preventDefault","keyPressed","setKeyPressed","useState","downHandler","useCallback","upHandler","useEffect","targetElement","useKeyPressCallback","callback","handler","e"],"mappings":";AA8BO,SAASA,EACdC,GACAC,IAA8B,IACrB;AACT,QAAM,EAAE,QAAAC,GAAQ,OAAAC,IAAQ,WAAW,gBAAAC,IAAiB,OAAUH,GACxD,CAACI,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAE5CC,IAAcC;AAAA,IAClB,CAAC,MAAqB;AACpB,MAAI,EAAE,QAAQT,MACRI,OAAkB,eAAA,GACtBE,EAAc,EAAI;AAAA,IAEtB;AAAA,IACA,CAACN,GAAWI,CAAc;AAAA,EAAA,GAGtBM,IAAYD;AAAA,IAChB,CAAC,MAAqB;AACpB,MAAI,EAAE,QAAQT,KACZM,EAAc,EAAK;AAAA,IAEvB;AAAA,IACA,CAACN,CAAS;AAAA,EAAA;AAGZ,SAAAW,EAAU,MAAM;AACd,UAAMC,IAAgBV,KAAU;AAEhC,WAAIC,MAAU,aACZS,EAAc,iBAAiB,WAAWJ,CAA4B,GACtEI,EAAc,iBAAiB,SAASF,CAA0B,KAElEE,EAAc,iBAAiB,SAASJ,CAA4B,GAG/D,MAAM;AACX,MAAAI,EAAc,oBAAoB,WAAWJ,CAA4B,GACzEI,EAAc,oBAAoB,SAASF,CAA0B;AAAA,IACvE;AAAA,EACF,GAAG,CAACR,GAAQC,GAAOK,GAAaE,CAAS,CAAC,GAEnCL;AACT;AAaO,SAASQ,EACdb,GACAc,GACAb,IAA8B,CAAA,GACxB;AACN,QAAM,EAAE,QAAAC,GAAQ,OAAAC,IAAQ,WAAW,gBAAAC,IAAiB,OAAUH;AAE9D,EAAAU,EAAU,MAAM;AACd,UAAMC,IAAgBV,KAAU,QAE1Ba,IAAU,CAACC,MAAqB;AACpC,MAAIA,EAAE,QAAQhB,MACRI,OAAkB,eAAA,GACtBU,EAASE,CAAC;AAAA,IAEd;AAEA,WAAAJ,EAAc,iBAAiBT,GAAOY,CAAwB,GACvD,MAAMH,EAAc,oBAAoBT,GAAOY,CAAwB;AAAA,EAChF,GAAG,CAACb,GAAQF,GAAWc,GAAUX,GAAOC,CAAc,CAAC;AACzD;"}
1
+ {"version":3,"file":"index105.js","sources":["../src/hooks/useWindowSize.ts"],"sourcesContent":["import { useState, useEffect } from 'react'\n\nexport interface WindowSize {\n width: number\n height: number\n}\n\n/**\n * Hook that tracks window dimensions.\n * Updates on window resize.\n *\n * @returns Object with current width and height\n *\n * @example\n * const { width, height } = useWindowSize()\n *\n * return (\n * <div>\n * Window: {width} x {height}\n * {width < 768 && <MobileNav />}\n * </div>\n * )\n */\nexport function useWindowSize(): WindowSize {\n const [windowSize, setWindowSize] = useState<WindowSize>(() => {\n if (typeof window === 'undefined') {\n return { width: 0, height: 0 }\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n })\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleResize = () => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return windowSize\n}\n"],"names":["useWindowSize","windowSize","setWindowSize","useState","useEffect","handleResize"],"mappings":";AAuBO,SAASA,IAA4B;AAC1C,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAqB,MACnD,OAAO,SAAW,MACb,EAAE,OAAO,GAAG,QAAQ,EAAA,IAEtB;AAAA,IACL,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,EAAA,CAElB;AAED,SAAAC,EAAU,MAAM;AACd,QAAI,OAAO,SAAW,IAAa;AAEnC,UAAMC,IAAe,MAAM;AACzB,MAAAH,EAAc;AAAA,QACZ,OAAO,OAAO;AAAA,QACd,QAAQ,OAAO;AAAA,MAAA,CAChB;AAAA,IACH;AAEA,kBAAO,iBAAiB,UAAUG,CAAY,GACvC,MAAM,OAAO,oBAAoB,UAAUA,CAAY;AAAA,EAChE,GAAG,CAAA,CAAE,GAEEJ;AACT;"}
package/dist/index13.js CHANGED
@@ -1,38 +1,98 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as o } from "react";
3
- import { WeekCalendar as s, MonthCalendar as i } from "./index107.js";
4
- import { en as k, fr as u } from "./index107.js";
5
- /* empty css */
6
- const n = o(
7
- ({ children: a, className: e = "" }, l) => /* @__PURE__ */ r(
8
- "div",
9
- {
10
- ref: l,
11
- className: `calendar-daisyui ${e}`,
12
- "data-testid": "calendar",
13
- children: a
14
- }
15
- )
16
- );
17
- n.displayName = "CalendarWrapper";
18
- const d = ({
19
- className: a = "",
20
- ...e
21
- }) => /* @__PURE__ */ r(n, { className: a, children: /* @__PURE__ */ r(i, { ...e }) });
22
- d.displayName = "Calendar.Month";
23
- const t = ({
24
- className: a = "",
25
- ...e
26
- }) => /* @__PURE__ */ r(n, { className: a, children: /* @__PURE__ */ r(s, { ...e }) });
27
- t.displayName = "Calendar.Week";
28
- const f = {
29
- Month: d,
30
- Week: t
31
- };
1
+ import { jsxs as e, jsx as s, Fragment as h } from "react/jsx-runtime";
2
+ function g({ children: r, hoverable: a = !1, className: d = "", style: c, ...o }) {
3
+ const n = [
4
+ "p-6 border border-base-content/10",
5
+ a && "cursor-pointer hover:shadow-md transition-shadow",
6
+ d
7
+ ].filter(Boolean).join(" ");
8
+ return /* @__PURE__ */ s("div", { className: n, style: c, ...o, children: r });
9
+ }
10
+ function j({
11
+ children: r,
12
+ title: a,
13
+ cover: d,
14
+ actions: c,
15
+ className: o = "",
16
+ style: n,
17
+ size: m,
18
+ bordered: v = !0,
19
+ side: w = !1,
20
+ imageFull: x = !1,
21
+ actionsJustify: t = "end",
22
+ loading: b = !1,
23
+ hoverable: k = !1,
24
+ avatar: l,
25
+ description: i,
26
+ ...f
27
+ }) {
28
+ const N = [
29
+ "card",
30
+ "bg-base-100",
31
+ m && {
32
+ xs: "card-xs",
33
+ sm: "card-sm",
34
+ md: "card-md",
35
+ lg: "card-lg",
36
+ xl: "card-xl"
37
+ }[m],
38
+ v && "border border-base-content/10 shadow-sm",
39
+ w && "card-side",
40
+ x && "image-full",
41
+ k && "transition-shadow hover:shadow-lg cursor-pointer",
42
+ o
43
+ ].filter(Boolean).join(" "), u = {
44
+ start: "justify-start",
45
+ center: "justify-center",
46
+ end: "justify-end"
47
+ };
48
+ return b ? /* @__PURE__ */ e("div", { className: N, style: n, ...f, children: [
49
+ d && /* @__PURE__ */ s("figure", { children: /* @__PURE__ */ s("div", { className: "skeleton h-48 w-full rounded-none" }) }),
50
+ /* @__PURE__ */ e("div", { className: "card-body", children: [
51
+ (l || a) && /* @__PURE__ */ e("div", { className: "flex gap-4 mb-4", children: [
52
+ l && /* @__PURE__ */ s("div", { className: "skeleton w-12 h-12 rounded-full flex-shrink-0" }),
53
+ /* @__PURE__ */ e("div", { className: "flex-1 space-y-2", children: [
54
+ /* @__PURE__ */ s("div", { className: "skeleton h-6 w-2/3" }),
55
+ i && /* @__PURE__ */ s("div", { className: "skeleton h-4 w-full" })
56
+ ] })
57
+ ] }),
58
+ !l && !a && /* @__PURE__ */ e(h, { children: [
59
+ /* @__PURE__ */ s("div", { className: "skeleton h-6 w-2/3 mb-4" }),
60
+ /* @__PURE__ */ e("div", { className: "space-y-2", children: [
61
+ /* @__PURE__ */ s("div", { className: "skeleton h-4 w-full" }),
62
+ /* @__PURE__ */ s("div", { className: "skeleton h-4 w-5/6" }),
63
+ /* @__PURE__ */ s("div", { className: "skeleton h-4 w-4/6" })
64
+ ] })
65
+ ] }),
66
+ c && /* @__PURE__ */ e("div", { className: `card-actions ${u[t]} mt-4`, children: [
67
+ /* @__PURE__ */ s("div", { className: "skeleton h-10 w-20" }),
68
+ /* @__PURE__ */ s("div", { className: "skeleton h-10 w-20" })
69
+ ] })
70
+ ] })
71
+ ] }) : /* @__PURE__ */ e("div", { className: N, style: n, ...f, children: [
72
+ d && /* @__PURE__ */ s("figure", { children: d }),
73
+ /* @__PURE__ */ e("div", { className: "card-body", children: [
74
+ l || a && i ? /* @__PURE__ */ e(h, { children: [
75
+ /* @__PURE__ */ e("div", { className: "flex gap-4", children: [
76
+ l && /* @__PURE__ */ s("div", { className: "flex-shrink-0", children: l }),
77
+ /* @__PURE__ */ e("div", { className: "flex-1 min-w-0", children: [
78
+ a && /* @__PURE__ */ s("h2", { className: "card-title", children: a }),
79
+ i && /* @__PURE__ */ s("p", { className: "text-sm opacity-70 mt-1", children: i })
80
+ ] })
81
+ ] }),
82
+ r
83
+ ] }) : /* @__PURE__ */ e(h, { children: [
84
+ a && /* @__PURE__ */ s("h2", { className: "card-title", children: a }),
85
+ r
86
+ ] }),
87
+ c && /* @__PURE__ */ s("div", { className: `card-actions ${u[t]}`, children: c })
88
+ ] })
89
+ ] });
90
+ }
91
+ const B = Object.assign(j, {
92
+ Grid: g
93
+ });
32
94
  export {
33
- f as Calendar,
34
- f as default,
35
- k as en,
36
- u as fr
95
+ B as Card,
96
+ B as default
37
97
  };
38
98
  //# sourceMappingURL=index13.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index13.js","sources":["../src/components/Calendar.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport {\n MonthCalendar as BaseMonthCalendar,\n WeekCalendar as BaseWeekCalendar,\n en,\n fr,\n} from '@vinctus/calendar'\nimport type {\n MonthCalendarProps as BaseMonthCalendarProps,\n WeekCalendarProps as BaseWeekCalendarProps,\n CalendarEvent,\n CalendarLocale,\n} from '@vinctus/calendar'\nimport '@vinctus/calendar/dist/index.css'\n\n// Re-export types and locales\nexport type { CalendarEvent, CalendarLocale }\nexport { en, fr }\n\nexport interface MonthCalendarProps<T extends CalendarEvent = CalendarEvent>\n extends Omit<BaseMonthCalendarProps<T>, 'theme'> {\n className?: string\n}\n\nexport interface WeekCalendarProps<T extends CalendarEvent = CalendarEvent>\n extends Omit<BaseWeekCalendarProps<T>, 'theme'> {\n className?: string\n}\n\ninterface CalendarWrapperProps {\n children: React.ReactNode\n className?: string\n}\n\nconst CalendarWrapper = forwardRef<HTMLDivElement, CalendarWrapperProps>(\n ({ children, className = '' }, ref) => {\n return (\n <div\n ref={ref}\n className={`calendar-daisyui ${className}`}\n data-testid=\"calendar\"\n >\n {children}\n </div>\n )\n }\n)\nCalendarWrapper.displayName = 'CalendarWrapper'\n\nconst MonthCalendar = <T extends CalendarEvent = CalendarEvent>({\n className = '',\n ...props\n}: MonthCalendarProps<T>) => {\n return (\n <CalendarWrapper className={className}>\n <BaseMonthCalendar {...props} />\n </CalendarWrapper>\n )\n}\nMonthCalendar.displayName = 'Calendar.Month'\n\nconst WeekCalendar = <T extends CalendarEvent = CalendarEvent>({\n className = '',\n ...props\n}: WeekCalendarProps<T>) => {\n return (\n <CalendarWrapper className={className}>\n <BaseWeekCalendar {...props} />\n </CalendarWrapper>\n )\n}\nWeekCalendar.displayName = 'Calendar.Week'\n\ninterface CalendarComponent {\n Month: typeof MonthCalendar\n Week: typeof WeekCalendar\n}\n\nexport const Calendar: CalendarComponent = {\n Month: MonthCalendar,\n Week: WeekCalendar,\n}\n\nexport default Calendar\n"],"names":["CalendarWrapper","forwardRef","children","className","ref","jsx","MonthCalendar","props","BaseMonthCalendar","WeekCalendar","BaseWeekCalendar","Calendar"],"mappings":";;;;;AAkCA,MAAMA,IAAkBC;AAAA,EACtB,CAAC,EAAE,UAAAC,GAAU,WAAAC,IAAY,GAAA,GAAMC,MAE3B,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAW,oBAAoBD,CAAS;AAAA,MACxC,eAAY;AAAA,MAEX,UAAAD;AAAA,IAAA;AAAA,EAAA;AAIT;AACAF,EAAgB,cAAc;AAE9B,MAAMM,IAAgB,CAA0C;AAAA,EAC9D,WAAAH,IAAY;AAAA,EACZ,GAAGI;AACL,wBAEKP,GAAA,EAAgB,WAAAG,GACf,4BAACK,GAAA,EAAmB,GAAGD,GAAO,GAChC;AAGJD,EAAc,cAAc;AAE5B,MAAMG,IAAe,CAA0C;AAAA,EAC7D,WAAAN,IAAY;AAAA,EACZ,GAAGI;AACL,wBAEKP,GAAA,EAAgB,WAAAG,GACf,4BAACO,GAAA,EAAkB,GAAGH,GAAO,GAC/B;AAGJE,EAAa,cAAc;AAOpB,MAAME,IAA8B;AAAA,EACzC,OAAOL;AAAA,EACP,MAAMG;AACR;"}
1
+ {"version":3,"file":"index13.js","sources":["../src/components/Card.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n children: React.ReactNode\n title?: React.ReactNode\n cover?: React.ReactNode\n actions?: React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n bordered?: boolean\n side?: boolean\n imageFull?: boolean\n actionsJustify?: 'start' | 'center' | 'end'\n loading?: boolean\n hoverable?: boolean\n // Meta props for avatar + description layout\n avatar?: React.ReactNode\n description?: React.ReactNode\n}\n\nexport interface CardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hoverable?: boolean\n}\n\nfunction CardGrid({ children, hoverable = false, className = '', style, ...rest }: CardGridProps) {\n const classes = [\n 'p-6 border border-base-content/10',\n hoverable && 'cursor-pointer hover:shadow-md transition-shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes} style={style} {...rest}>\n {children}\n </div>\n )\n}\n\nfunction CardRoot({\n children,\n title,\n cover,\n actions,\n className = '',\n style,\n size,\n bordered = true,\n side = false,\n imageFull = false,\n actionsJustify = 'end',\n loading = false,\n hoverable = false,\n avatar,\n description,\n ...rest\n}: CardProps) {\n const sizeClasses: Record<string, string> = {\n xs: 'card-xs',\n sm: 'card-sm',\n md: 'card-md',\n lg: 'card-lg',\n xl: 'card-xl',\n }\n\n const classes = [\n 'card',\n 'bg-base-100',\n size && sizeClasses[size],\n bordered && 'border border-base-content/10 shadow-sm',\n side && 'card-side',\n imageFull && 'image-full',\n hoverable && 'transition-shadow hover:shadow-lg cursor-pointer',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const justifyClasses: Record<string, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n }\n\n if (loading) {\n return (\n <div className={classes} style={style} {...rest}>\n {cover && (\n <figure>\n <div className=\"skeleton h-48 w-full rounded-none\" />\n </figure>\n )}\n <div className=\"card-body\">\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className=\"skeleton w-12 h-12 rounded-full flex-shrink-0\" />}\n <div className=\"flex-1 space-y-2\">\n <div className=\"skeleton h-6 w-2/3\" />\n {description && <div className=\"skeleton h-4 w-full\" />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className=\"skeleton h-6 w-2/3 mb-4\" />\n <div className=\"space-y-2\">\n <div className=\"skeleton h-4 w-full\" />\n <div className=\"skeleton h-4 w-5/6\" />\n <div className=\"skeleton h-4 w-4/6\" />\n </div>\n </>\n )}\n {actions && (\n <div className={`card-actions ${justifyClasses[actionsJustify]} mt-4`}>\n <div className=\"skeleton h-10 w-20\" />\n <div className=\"skeleton h-10 w-20\" />\n </div>\n )}\n </div>\n </div>\n )\n }\n\n // Render with avatar + title + description layout (meta style)\n const hasMetaLayout = avatar || (title && description)\n\n return (\n <div className={classes} style={style} {...rest}>\n {cover && <figure>{cover}</figure>}\n <div className=\"card-body\">\n {hasMetaLayout ? (\n <>\n <div className=\"flex gap-4\">\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && <h2 className=\"card-title\">{title}</h2>}\n {description && <p className=\"text-sm opacity-70 mt-1\">{description}</p>}\n </div>\n </div>\n {children}\n </>\n ) : (\n <>\n {title && <h2 className=\"card-title\">{title}</h2>}\n {children}\n </>\n )}\n {actions && <div className={`card-actions ${justifyClasses[actionsJustify]}`}>{actions}</div>}\n </div>\n </div>\n )\n}\n\nexport const Card = Object.assign(CardRoot, {\n Grid: CardGrid,\n})\n\nexport default Card\n"],"names":["CardGrid","children","hoverable","className","style","rest","classes","CardRoot","title","cover","actions","size","bordered","side","imageFull","actionsJustify","loading","avatar","description","justifyClasses","jsx","jsxs","Fragment","Card"],"mappings":"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"}
package/dist/index14.js CHANGED
@@ -1,98 +1,161 @@
1
- import { jsxs as e, jsx as s, Fragment as h } from "react/jsx-runtime";
2
- function g({ children: r, hoverable: a = !1, className: d = "", style: c, ...o }) {
3
- const n = [
4
- "p-6 border border-base-content/10",
5
- a && "cursor-pointer hover:shadow-md transition-shadow",
6
- d
7
- ].filter(Boolean).join(" ");
8
- return /* @__PURE__ */ s("div", { className: n, style: c, ...o, children: r });
9
- }
10
- function j({
11
- children: r,
12
- title: a,
13
- cover: d,
14
- actions: c,
15
- className: o = "",
16
- style: n,
17
- size: m,
18
- bordered: v = !0,
19
- side: w = !1,
20
- imageFull: x = !1,
21
- actionsJustify: t = "end",
22
- loading: b = !1,
23
- hoverable: k = !1,
24
- avatar: l,
25
- description: i,
26
- ...f
1
+ import { jsxs as m, jsx as n } from "react/jsx-runtime";
2
+ import { useState as g, useRef as I, useId as j, useEffect as $, useCallback as E } from "react";
3
+ function T({
4
+ options: c,
5
+ value: b,
6
+ onChange: k,
7
+ placeholder: M = "Please select",
8
+ disabled: i = !1,
9
+ allowClear: S = !0,
10
+ expandTrigger: D = "click",
11
+ displayRender: w,
12
+ size: C = "md",
13
+ className: B = "",
14
+ ...H
27
15
  }) {
28
- const N = [
29
- "card",
30
- "bg-base-100",
31
- m && {
32
- xs: "card-xs",
33
- sm: "card-sm",
34
- md: "card-md",
35
- lg: "card-lg",
36
- xl: "card-xl"
37
- }[m],
38
- v && "border border-base-content/10 shadow-sm",
39
- w && "card-side",
40
- x && "image-full",
41
- k && "transition-shadow hover:shadow-lg cursor-pointer",
42
- o
43
- ].filter(Boolean).join(" "), u = {
44
- start: "justify-start",
45
- center: "justify-center",
46
- end: "justify-end"
16
+ const [r, d] = g(!1), [o, p] = g(b || []), [y, u] = g([]), x = I(null), W = j(), N = j();
17
+ $(() => {
18
+ b !== void 0 && p(b);
19
+ }, [b]), $(() => {
20
+ const e = (s) => {
21
+ x.current && !x.current.contains(s.target) && (d(!1), u([]));
22
+ };
23
+ if (r)
24
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
25
+ }, [r]);
26
+ const z = E((e, s) => {
27
+ if (e === 0) return c;
28
+ let t = c;
29
+ for (let l = 0; l < e; l++) {
30
+ const a = t.find((f) => f.value === s[l]);
31
+ if (!a?.children) return [];
32
+ t = a.children;
33
+ }
34
+ return t;
35
+ }, [c]), O = E((e) => {
36
+ const s = [];
37
+ let t = c;
38
+ for (const l of e) {
39
+ const a = t.find((f) => f.value === l);
40
+ if (!a) break;
41
+ s.push(a), t = a.children || [];
42
+ }
43
+ return s;
44
+ }, [c]), h = r && y.length > 0 ? y : o, v = [];
45
+ v.push(c);
46
+ for (let e = 0; e < h.length; e++) {
47
+ const s = z(e + 1, h);
48
+ s.length > 0 && v.push(s);
49
+ }
50
+ const K = (e, s) => {
51
+ if (e.disabled) return;
52
+ const t = [...h.slice(0, s), e.value];
53
+ e.children && e.children.length > 0 ? u(t) : (p(t), d(!1), u([]), k?.(t, O(t)));
54
+ }, A = (e, s) => {
55
+ if (D !== "hover" || e.disabled) return;
56
+ const t = [...h.slice(0, s), e.value];
57
+ u(t);
58
+ }, R = (e) => {
59
+ e.stopPropagation(), p([]), k?.([], []);
60
+ }, V = (e) => {
61
+ if (!i)
62
+ switch (e.key) {
63
+ case "Enter":
64
+ case " ":
65
+ e.preventDefault(), d(!r);
66
+ break;
67
+ case "Escape":
68
+ e.preventDefault(), d(!1), u([]);
69
+ break;
70
+ }
71
+ }, L = O(o), P = L.map((e) => e.label), q = w ? w(P, L) : P.join(" / "), F = {
72
+ xs: "input-xs text-xs",
73
+ sm: "input-sm text-sm",
74
+ md: "input-md",
75
+ lg: "input-lg text-lg"
76
+ }, G = {
77
+ xs: "text-xs",
78
+ sm: "text-sm",
79
+ md: "text-base",
80
+ lg: "text-lg"
47
81
  };
48
- return b ? /* @__PURE__ */ e("div", { className: N, style: n, ...f, children: [
49
- d && /* @__PURE__ */ s("figure", { children: /* @__PURE__ */ s("div", { className: "skeleton h-48 w-full rounded-none" }) }),
50
- /* @__PURE__ */ e("div", { className: "card-body", children: [
51
- (l || a) && /* @__PURE__ */ e("div", { className: "flex gap-4 mb-4", children: [
52
- l && /* @__PURE__ */ s("div", { className: "skeleton w-12 h-12 rounded-full flex-shrink-0" }),
53
- /* @__PURE__ */ e("div", { className: "flex-1 space-y-2", children: [
54
- /* @__PURE__ */ s("div", { className: "skeleton h-6 w-2/3" }),
55
- i && /* @__PURE__ */ s("div", { className: "skeleton h-4 w-full" })
56
- ] })
57
- ] }),
58
- !l && !a && /* @__PURE__ */ e(h, { children: [
59
- /* @__PURE__ */ s("div", { className: "skeleton h-6 w-2/3 mb-4" }),
60
- /* @__PURE__ */ e("div", { className: "space-y-2", children: [
61
- /* @__PURE__ */ s("div", { className: "skeleton h-4 w-full" }),
62
- /* @__PURE__ */ s("div", { className: "skeleton h-4 w-5/6" }),
63
- /* @__PURE__ */ s("div", { className: "skeleton h-4 w-4/6" })
64
- ] })
65
- ] }),
66
- c && /* @__PURE__ */ e("div", { className: `card-actions ${u[t]} mt-4`, children: [
67
- /* @__PURE__ */ s("div", { className: "skeleton h-10 w-20" }),
68
- /* @__PURE__ */ s("div", { className: "skeleton h-10 w-20" })
69
- ] })
70
- ] })
71
- ] }) : /* @__PURE__ */ e("div", { className: N, style: n, ...f, children: [
72
- d && /* @__PURE__ */ s("figure", { children: d }),
73
- /* @__PURE__ */ e("div", { className: "card-body", children: [
74
- l || a && i ? /* @__PURE__ */ e(h, { children: [
75
- /* @__PURE__ */ e("div", { className: "flex gap-4", children: [
76
- l && /* @__PURE__ */ s("div", { className: "flex-shrink-0", children: l }),
77
- /* @__PURE__ */ e("div", { className: "flex-1 min-w-0", children: [
78
- a && /* @__PURE__ */ s("h2", { className: "card-title", children: a }),
79
- i && /* @__PURE__ */ s("p", { className: "text-sm opacity-70 mt-1", children: i })
82
+ return /* @__PURE__ */ m("div", { ref: x, className: `relative inline-block w-full ${B}`, "data-state": r ? "open" : "closed", ...H, children: [
83
+ /* @__PURE__ */ m(
84
+ "div",
85
+ {
86
+ id: W,
87
+ role: "combobox",
88
+ "aria-expanded": r,
89
+ "aria-haspopup": "listbox",
90
+ "aria-controls": N,
91
+ tabIndex: i ? -1 : 0,
92
+ className: `input input-bordered w-full flex items-center justify-between cursor-pointer ${F[C]} ${i ? "input-disabled cursor-not-allowed" : ""} ${r ? "border-primary" : ""}`,
93
+ onClick: () => !i && d(!r),
94
+ onKeyDown: V,
95
+ children: [
96
+ /* @__PURE__ */ n("span", { className: o.length === 0 ? "text-base-content/50" : "", children: o.length > 0 ? q : M }),
97
+ /* @__PURE__ */ m("div", { className: "flex items-center gap-1", children: [
98
+ S && o.length > 0 && !i && /* @__PURE__ */ n(
99
+ "button",
100
+ {
101
+ type: "button",
102
+ className: "btn btn-ghost btn-xs btn-circle",
103
+ onClick: R,
104
+ "aria-label": "Clear selection",
105
+ children: /* @__PURE__ */ n("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
106
+ }
107
+ ),
108
+ /* @__PURE__ */ n(
109
+ "svg",
110
+ {
111
+ className: `w-4 h-4 transition-transform ${r ? "rotate-180" : ""}`,
112
+ fill: "none",
113
+ viewBox: "0 0 24 24",
114
+ stroke: "currentColor",
115
+ children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
116
+ }
117
+ )
80
118
  ] })
81
- ] }),
82
- r
83
- ] }) : /* @__PURE__ */ e(h, { children: [
84
- a && /* @__PURE__ */ s("h2", { className: "card-title", children: a }),
85
- r
86
- ] }),
87
- c && /* @__PURE__ */ s("div", { className: `card-actions ${u[t]}`, children: c })
88
- ] })
119
+ ]
120
+ }
121
+ ),
122
+ r && /* @__PURE__ */ n(
123
+ "div",
124
+ {
125
+ id: N,
126
+ className: `absolute z-50 mt-1 bg-base-100 border border-base-300 rounded-lg shadow-lg flex ${G[C]}`,
127
+ children: v.map((e, s) => /* @__PURE__ */ n(
128
+ "ul",
129
+ {
130
+ role: "listbox",
131
+ className: `min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${s > 0 ? "border-l border-base-300" : ""}`,
132
+ children: e.map((t) => {
133
+ const l = o[s] === t.value, a = h[s] === t.value, f = t.children && t.children.length > 0;
134
+ return /* @__PURE__ */ m(
135
+ "li",
136
+ {
137
+ role: "option",
138
+ "aria-selected": l,
139
+ "aria-disabled": t.disabled,
140
+ className: `px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${t.disabled ? "text-base-content/30 cursor-not-allowed" : l ? "bg-primary text-primary-content" : a ? "bg-base-200" : "hover:bg-base-200"}`,
141
+ onClick: () => K(t, s),
142
+ onMouseEnter: () => A(t, s),
143
+ children: [
144
+ /* @__PURE__ */ n("span", { children: t.label }),
145
+ f && /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
146
+ ]
147
+ },
148
+ t.value
149
+ );
150
+ })
151
+ },
152
+ s
153
+ ))
154
+ }
155
+ )
89
156
  ] });
90
157
  }
91
- const B = Object.assign(j, {
92
- Grid: g
93
- });
94
158
  export {
95
- B as Card,
96
- B as default
159
+ T as Cascader
97
160
  };
98
161
  //# sourceMappingURL=index14.js.map