@waveso/ui 0.0.10 → 0.1.0

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 (288) hide show
  1. package/dist/accordion.d.ts +24 -8
  2. package/dist/accordion.d.ts.map +1 -0
  3. package/dist/accordion.js +50 -73
  4. package/dist/accordion.js.map +1 -1
  5. package/dist/action-bar.d.ts +83 -0
  6. package/dist/action-bar.d.ts.map +1 -0
  7. package/dist/action-bar.js +264 -0
  8. package/dist/action-bar.js.map +1 -0
  9. package/dist/alert-dialog.d.ts +56 -21
  10. package/dist/alert-dialog.d.ts.map +1 -0
  11. package/dist/alert-dialog.js +75 -127
  12. package/dist/alert-dialog.js.map +1 -1
  13. package/dist/alert.d.ts +26 -11
  14. package/dist/alert.d.ts.map +1 -0
  15. package/dist/alert.js +37 -68
  16. package/dist/alert.js.map +1 -1
  17. package/dist/animate.d.ts +117 -75
  18. package/dist/animate.d.ts.map +1 -0
  19. package/dist/animate.js +259 -223
  20. package/dist/animate.js.map +1 -1
  21. package/dist/aspect-ratio.d.ts +11 -6
  22. package/dist/aspect-ratio.d.ts.map +1 -0
  23. package/dist/aspect-ratio.js +12 -14
  24. package/dist/aspect-ratio.js.map +1 -1
  25. package/dist/autocomplete.d.ts +91 -25
  26. package/dist/autocomplete.d.ts.map +1 -0
  27. package/dist/autocomplete.js +119 -181
  28. package/dist/autocomplete.js.map +1 -1
  29. package/dist/avatar.d.ts +32 -11
  30. package/dist/avatar.d.ts.map +1 -0
  31. package/dist/avatar.js +42 -89
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.d.ts +15 -8
  34. package/dist/badge.d.ts.map +1 -0
  35. package/dist/badge.js +34 -48
  36. package/dist/badge.js.map +1 -1
  37. package/dist/breadcrumb.d.ts +35 -11
  38. package/dist/breadcrumb.d.ts.map +1 -0
  39. package/dist/breadcrumb.js +60 -110
  40. package/dist/breadcrumb.js.map +1 -1
  41. package/dist/button-group.d.ts +26 -13
  42. package/dist/button-group.d.ts.map +1 -0
  43. package/dist/button-group.js +38 -76
  44. package/dist/button-group.js.map +1 -1
  45. package/dist/button.d.ts +17 -10
  46. package/dist/button.d.ts.map +1 -0
  47. package/dist/button.js +50 -3
  48. package/dist/button.js.map +1 -1
  49. package/dist/card.d.ts +35 -11
  50. package/dist/card.d.ts.map +1 -0
  51. package/dist/card.js +43 -82
  52. package/dist/card.js.map +1 -1
  53. package/dist/checkbox.d.ts +6 -4
  54. package/dist/checkbox.d.ts.map +1 -0
  55. package/dist/checkbox.js +21 -29
  56. package/dist/checkbox.js.map +1 -1
  57. package/dist/collapsible.d.ts +15 -7
  58. package/dist/collapsible.d.ts.map +1 -0
  59. package/dist/collapsible.js +19 -8
  60. package/dist/collapsible.js.map +1 -1
  61. package/dist/combobox.d.ts +83 -23
  62. package/dist/combobox.d.ts.map +1 -0
  63. package/dist/combobox.js +149 -247
  64. package/dist/combobox.js.map +1 -1
  65. package/dist/context-menu.d.ts +80 -26
  66. package/dist/context-menu.d.ts.map +1 -0
  67. package/dist/context-menu.js +108 -164
  68. package/dist/context-menu.js.map +1 -1
  69. package/dist/count.d.ts +45 -31
  70. package/dist/count.d.ts.map +1 -0
  71. package/dist/count.js +170 -165
  72. package/dist/count.js.map +1 -1
  73. package/dist/dialog.d.ts +61 -28
  74. package/dist/dialog.d.ts.map +1 -0
  75. package/dist/dialog.js +77 -120
  76. package/dist/dialog.js.map +1 -1
  77. package/dist/direction.d.ts +2 -1
  78. package/dist/direction.js +3 -3
  79. package/dist/drawer.d.ts +45 -15
  80. package/dist/drawer.d.ts.map +1 -0
  81. package/dist/drawer.js +93 -5
  82. package/dist/drawer.js.map +1 -1
  83. package/dist/encrypted-text.d.ts +25 -12
  84. package/dist/encrypted-text.d.ts.map +1 -0
  85. package/dist/encrypted-text.js +102 -134
  86. package/dist/encrypted-text.js.map +1 -1
  87. package/dist/field.d.ts +37 -21
  88. package/dist/field.d.ts.map +1 -0
  89. package/dist/field.js +52 -3
  90. package/dist/field.js.map +1 -1
  91. package/dist/film-grain-shader.d.ts +6 -0
  92. package/dist/film-grain-shader.d.ts.map +1 -0
  93. package/dist/film-grain-shader.js +88 -0
  94. package/dist/film-grain-shader.js.map +1 -0
  95. package/dist/film-grain-webgl.d.ts +20 -0
  96. package/dist/film-grain-webgl.d.ts.map +1 -0
  97. package/dist/film-grain-webgl.js +306 -0
  98. package/dist/film-grain-webgl.js.map +1 -0
  99. package/dist/film-grain.d.ts +21 -11
  100. package/dist/film-grain.d.ts.map +1 -0
  101. package/dist/film-grain.js +28 -420
  102. package/dist/film-grain.js.map +1 -1
  103. package/dist/form.d.ts +64 -49
  104. package/dist/form.d.ts.map +1 -0
  105. package/dist/form.js +112 -91
  106. package/dist/form.js.map +1 -1
  107. package/dist/gradient-reveal-text.d.ts +35 -22
  108. package/dist/gradient-reveal-text.d.ts.map +1 -0
  109. package/dist/gradient-reveal-text.js +238 -205
  110. package/dist/gradient-reveal-text.js.map +1 -1
  111. package/dist/hooks/use-mobile.d.ts +3 -1
  112. package/dist/hooks/use-mobile.d.ts.map +1 -0
  113. package/dist/hooks/use-mobile.js +28 -2
  114. package/dist/hooks/use-mobile.js.map +1 -1
  115. package/dist/infinite-scroll.d.ts +29 -15
  116. package/dist/infinite-scroll.d.ts.map +1 -0
  117. package/dist/infinite-scroll.js +69 -99
  118. package/dist/infinite-scroll.js.map +1 -1
  119. package/dist/input-group.d.ts +41 -18
  120. package/dist/input-group.d.ts.map +1 -0
  121. package/dist/input-group.js +80 -6
  122. package/dist/input-group.js.map +1 -1
  123. package/dist/input-otp.d.ts +26 -10
  124. package/dist/input-otp.d.ts.map +1 -0
  125. package/dist/input-otp.js +40 -70
  126. package/dist/input-otp.js.map +1 -1
  127. package/dist/input.d.ts +10 -4
  128. package/dist/input.d.ts.map +1 -0
  129. package/dist/input.js +16 -3
  130. package/dist/input.js.map +1 -1
  131. package/dist/item.d.ts +58 -23
  132. package/dist/item.d.ts.map +1 -0
  133. package/dist/item.js +102 -160
  134. package/dist/item.js.map +1 -1
  135. package/dist/kbd.d.ts +12 -4
  136. package/dist/kbd.d.ts.map +1 -0
  137. package/dist/kbd.js +15 -24
  138. package/dist/kbd.js.map +1 -1
  139. package/dist/label.d.ts +9 -4
  140. package/dist/label.d.ts.map +1 -0
  141. package/dist/label.js +12 -16
  142. package/dist/label.js.map +1 -1
  143. package/dist/lib/focus.d.ts +42 -0
  144. package/dist/lib/focus.d.ts.map +1 -0
  145. package/dist/lib/focus.js +21 -0
  146. package/dist/lib/focus.js.map +1 -0
  147. package/dist/lib/internal-icons.d.ts +32 -0
  148. package/dist/lib/internal-icons.d.ts.map +1 -0
  149. package/dist/lib/internal-icons.js +222 -0
  150. package/dist/lib/internal-icons.js.map +1 -0
  151. package/dist/lib/utils.d.ts +4 -2
  152. package/dist/lib/utils.d.ts.map +1 -0
  153. package/dist/lib/utils.js +12 -2
  154. package/dist/lib/utils.js.map +1 -1
  155. package/dist/masonry.d.ts +25 -11
  156. package/dist/masonry.d.ts.map +1 -0
  157. package/dist/masonry.js +188 -229
  158. package/dist/masonry.js.map +1 -1
  159. package/dist/menu.d.ts +84 -26
  160. package/dist/menu.d.ts.map +1 -0
  161. package/dist/menu.js +141 -4
  162. package/dist/menu.js.map +1 -1
  163. package/dist/menubar.d.ts +60 -22
  164. package/dist/menubar.d.ts.map +1 -0
  165. package/dist/menubar.js +80 -52
  166. package/dist/menubar.js.map +1 -1
  167. package/dist/pagination.d.ts +38 -17
  168. package/dist/pagination.d.ts.map +1 -0
  169. package/dist/pagination.js +68 -107
  170. package/dist/pagination.js.map +1 -1
  171. package/dist/popover.d.ts +56 -14
  172. package/dist/popover.d.ts.map +1 -0
  173. package/dist/popover.js +62 -87
  174. package/dist/popover.js.map +1 -1
  175. package/dist/preview-card.d.ts +28 -9
  176. package/dist/preview-card.d.ts.map +1 -0
  177. package/dist/preview-card.js +40 -60
  178. package/dist/preview-card.js.map +1 -1
  179. package/dist/progress.d.ts +28 -9
  180. package/dist/progress.d.ts.map +1 -0
  181. package/dist/progress.js +35 -60
  182. package/dist/progress.js.map +1 -1
  183. package/dist/radio-group.d.ts +14 -8
  184. package/dist/radio-group.d.ts.map +1 -0
  185. package/dist/radio-group.js +18 -22
  186. package/dist/radio-group.js.map +1 -1
  187. package/dist/radio.d.ts +14 -6
  188. package/dist/radio.d.ts.map +1 -0
  189. package/dist/radio.js +24 -3
  190. package/dist/radio.js.map +1 -1
  191. package/dist/scroll-area.d.ts +16 -6
  192. package/dist/scroll-area.d.ts.map +1 -0
  193. package/dist/scroll-area.js +34 -55
  194. package/dist/scroll-area.js.map +1 -1
  195. package/dist/select.d.ts +66 -18
  196. package/dist/select.d.ts.map +1 -0
  197. package/dist/select.js +105 -185
  198. package/dist/select.js.map +1 -1
  199. package/dist/separator.d.ts +11 -5
  200. package/dist/separator.d.ts.map +1 -0
  201. package/dist/separator.js +17 -3
  202. package/dist/separator.js.map +1 -1
  203. package/dist/sidebar.d.ts +172 -79
  204. package/dist/sidebar.d.ts.map +1 -0
  205. package/dist/sidebar.js +363 -585
  206. package/dist/sidebar.js.map +1 -1
  207. package/dist/skeleton.d.ts +8 -3
  208. package/dist/skeleton.d.ts.map +1 -0
  209. package/dist/skeleton.js +13 -3
  210. package/dist/skeleton.js.map +1 -1
  211. package/dist/slider.d.ts +16 -6
  212. package/dist/slider.d.ts.map +1 -0
  213. package/dist/slider.js +40 -67
  214. package/dist/slider.js.map +1 -1
  215. package/dist/spinner.d.ts +8 -3
  216. package/dist/spinner.d.ts.map +1 -0
  217. package/dist/spinner.js +15 -4
  218. package/dist/spinner.js.map +1 -1
  219. package/dist/switch.d.ts +12 -6
  220. package/dist/switch.d.ts.map +1 -0
  221. package/dist/switch.js +18 -25
  222. package/dist/switch.js.map +1 -1
  223. package/dist/table.d.ts +37 -11
  224. package/dist/table.d.ts.map +1 -0
  225. package/dist/table.js +51 -88
  226. package/dist/table.js.map +1 -1
  227. package/dist/tabs.d.ts +28 -12
  228. package/dist/tabs.d.ts.map +1 -0
  229. package/dist/tabs.js +40 -74
  230. package/dist/tabs.js.map +1 -1
  231. package/dist/textarea.d.ts +13 -6
  232. package/dist/textarea.d.ts.map +1 -0
  233. package/dist/textarea.js +19 -3
  234. package/dist/textarea.js.map +1 -1
  235. package/dist/toast.d.ts +63 -39
  236. package/dist/toast.d.ts.map +1 -0
  237. package/dist/toast.js +177 -215
  238. package/dist/toast.js.map +1 -1
  239. package/dist/toggle-group.d.ts +26 -12
  240. package/dist/toggle-group.d.ts.map +1 -0
  241. package/dist/toggle-group.js +49 -73
  242. package/dist/toggle-group.js.map +1 -1
  243. package/dist/toggle.d.ts +17 -10
  244. package/dist/toggle.d.ts.map +1 -0
  245. package/dist/toggle.js +38 -3
  246. package/dist/toggle.js.map +1 -1
  247. package/dist/tooltip.d.ts +35 -14
  248. package/dist/tooltip.d.ts.map +1 -0
  249. package/dist/tooltip.js +52 -3
  250. package/dist/tooltip.js.map +1 -1
  251. package/dist/typewriter.d.ts +44 -31
  252. package/dist/typewriter.d.ts.map +1 -0
  253. package/dist/typewriter.js +185 -185
  254. package/dist/typewriter.js.map +1 -1
  255. package/package.json +6 -6
  256. package/dist/chunk-45VQAWIM.js +0 -228
  257. package/dist/chunk-45VQAWIM.js.map +0 -1
  258. package/dist/chunk-6Y7LPQMO.js +0 -11
  259. package/dist/chunk-6Y7LPQMO.js.map +0 -1
  260. package/dist/chunk-76UQO56T.js +0 -19
  261. package/dist/chunk-76UQO56T.js.map +0 -1
  262. package/dist/chunk-7F4MPMLJ.js +0 -17
  263. package/dist/chunk-7F4MPMLJ.js.map +0 -1
  264. package/dist/chunk-BKTJYX4M.js +0 -143
  265. package/dist/chunk-BKTJYX4M.js.map +0 -1
  266. package/dist/chunk-D5XPEJ6T.js +0 -36
  267. package/dist/chunk-D5XPEJ6T.js.map +0 -1
  268. package/dist/chunk-DIGOLJIR.js +0 -105
  269. package/dist/chunk-DIGOLJIR.js.map +0 -1
  270. package/dist/chunk-IQ7YQ5XA.js +0 -141
  271. package/dist/chunk-IQ7YQ5XA.js.map +0 -1
  272. package/dist/chunk-NCHHHWTB.js +0 -85
  273. package/dist/chunk-NCHHHWTB.js.map +0 -1
  274. package/dist/chunk-OUFYQLVN.js +0 -56
  275. package/dist/chunk-OUFYQLVN.js.map +0 -1
  276. package/dist/chunk-QFSEK4M6.js +0 -22
  277. package/dist/chunk-QFSEK4M6.js.map +0 -1
  278. package/dist/chunk-QRW37LRP.js +0 -25
  279. package/dist/chunk-QRW37LRP.js.map +0 -1
  280. package/dist/chunk-RPQHL6C5.js +0 -26
  281. package/dist/chunk-RPQHL6C5.js.map +0 -1
  282. package/dist/chunk-V4ZX4YCP.js +0 -66
  283. package/dist/chunk-V4ZX4YCP.js.map +0 -1
  284. package/dist/chunk-YTSQQTSF.js +0 -44
  285. package/dist/chunk-YTSQQTSF.js.map +0 -1
  286. package/dist/chunk-ZZZH3JGW.js +0 -23
  287. package/dist/chunk-ZZZH3JGW.js.map +0 -1
  288. package/dist/direction.js.map +0 -1
package/dist/count.d.ts CHANGED
@@ -1,34 +1,35 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { ReactElement } from 'react';
1
+ import { ReactElement } from "react";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
+ //#region src/count.d.ts
4
5
  interface CountProps {
5
- /** Target number or Date to count to */
6
- to: number | Date;
7
- /** Starting number. Default: 0. Ignored when `to` is a Date. */
8
- from?: number;
9
- /** Animation duration in milliseconds. Default: 900. Ignored when `to` is a Date. */
10
- duration?: number;
11
- /** Delay before starting in seconds. Default: 0 */
12
- delay?: number;
13
- /**
14
- * Format the value for display.
15
- * - For numbers: receives the current interpolated number.
16
- * - For dates: receives remaining milliseconds.
17
- * Default: toLocaleString() for numbers, dd:hh:mm:ss for dates.
18
- */
19
- format?: (value: number) => string;
20
- /** Prefix string (e.g., "$"). Default: '' */
21
- prefix?: string;
22
- /** Suffix string (e.g., "%", "+"). Default: '' */
23
- suffix?: string;
24
- /** Element to render into. Receives the formatted value as children. */
25
- children: ReactElement;
26
- /** Trigger once. Default: true */
27
- once?: boolean;
28
- /** Easing function. Default: easeOut. Ignored when `to` is a Date. */
29
- easing?: (t: number) => number;
30
- /** Called when the count finishes (reaches target or date passes). */
31
- onComplete?: () => void;
6
+ /** Target number or Date to count to */
7
+ to: number | Date;
8
+ /** Starting number. Default: 0. Ignored when `to` is a Date. */
9
+ from?: number;
10
+ /** Animation duration in milliseconds. Default: 900. Ignored when `to` is a Date. */
11
+ duration?: number;
12
+ /** Delay before starting in seconds. Default: 0 */
13
+ delay?: number;
14
+ /**
15
+ * Format the value for display.
16
+ * - For numbers: receives the current interpolated number.
17
+ * - For dates: receives remaining milliseconds.
18
+ * Default: toLocaleString() for numbers, dd:hh:mm:ss for dates.
19
+ */
20
+ format?: (value: number) => string;
21
+ /** Prefix string (e.g., "$"). Default: '' */
22
+ prefix?: string;
23
+ /** Suffix string (e.g., "%", "+"). Default: '' */
24
+ suffix?: string;
25
+ /** Element to render into. Receives the formatted value as children. */
26
+ children: ReactElement;
27
+ /** Trigger once. Default: true */
28
+ once?: boolean;
29
+ /** Easing function. Default: easeOut. Ignored when `to` is a Date. */
30
+ easing?: (t: number) => number;
31
+ /** Called when the count finishes (reaches target or date passes). */
32
+ onComplete?: () => void;
32
33
  }
33
34
  /** @deprecated Use `Count` instead. `CountUp` is an alias kept for backwards compatibility. */
34
35
  type CountUpProps = CountProps;
@@ -66,8 +67,21 @@ declare function easeOut(t: number): number;
66
67
  * </Count>
67
68
  * ```
68
69
  */
69
- declare function Count({ to, from: start, duration, delay, format, prefix, suffix, children, once, easing, onComplete, }: CountProps): react_jsx_runtime.JSX.Element;
70
+ declare function Count({
71
+ to,
72
+ from: start,
73
+ duration,
74
+ delay,
75
+ format,
76
+ prefix,
77
+ suffix,
78
+ children,
79
+ once,
80
+ easing,
81
+ onComplete
82
+ }: CountProps): _$react_jsx_runtime0.JSX.Element;
70
83
  /** @deprecated Use `Count` instead */
71
84
  declare const CountUp: typeof Count;
72
-
85
+ //#endregion
73
86
  export { Count, type CountProps, CountUp, type CountUpProps, easeOut };
87
+ //# sourceMappingURL=count.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count.d.ts","names":[],"sources":["../src/count.tsx"],"mappings":";;;;UAeU,UAAA;;EAER,EAAA,WAAa,IAAA;EAFL;EAIR,IAAA;;EAEA,QAAA;EAJA;EAMA,KAAA;EAJA;;;;;;EAWA,MAAA,IAAU,KAAA;EAMV;EAJA,MAAA;EAMA;EAJA,MAAA;EAMU;EAJV,QAAA,EAAU,YAAA;EAMA;EAJV,IAAA;EAQG;EANH,MAAA,IAAU,CAAA;;EAEV,UAAA;AAAA;AAI4B;AAAA,KAAzB,YAAA,GAAe,UAAA;;iBAKX,OAAA,CAAQ,CAAA;;AAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwEjB,KAAA,CAAA;EACP,EAAA;EACA,IAAA,EAAM,KAAA;EACN,QAAA;EACA,KAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,QAAA;EACA,IAAA;EACA,MAAA;EACA;AAAA,GACC,UAAA,GAAU,oBAAA,CAAA,GAAA,CAAA,OAAA;;cAyLP,OAAA,SAAO,KAAA"}
package/dist/count.js CHANGED
@@ -1,176 +1,181 @@
1
- import { useRef, useState, useEffect, isValidElement, cloneElement } from 'react';
2
- import { useInView } from 'motion/react';
3
- import { jsx } from 'react/jsx-runtime';
4
-
1
+ "use client";
2
+ import { cloneElement, isValidElement, useEffect, useRef, useState } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { useInView } from "motion/react";
5
+ //#region src/count.tsx
6
+ /** Cubic ease-out: fast start, smooth deceleration */
5
7
  function easeOut(t) {
6
- return 1 - Math.pow(1 - t, 3);
8
+ return 1 - Math.pow(1 - t, 3);
7
9
  }
8
10
  function formatCountdown(ms) {
9
- if (ms <= 0) return "00:00:00";
10
- const totalSeconds = Math.floor(ms / 1e3);
11
- const days = Math.floor(totalSeconds / 86400);
12
- const hours = Math.floor(totalSeconds % 86400 / 3600);
13
- const minutes = Math.floor(totalSeconds % 3600 / 60);
14
- const seconds = totalSeconds % 60;
15
- const pad = (n) => String(n).padStart(2, "0");
16
- if (days > 0) {
17
- return `${days}d ${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
18
- }
19
- return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
11
+ if (ms <= 0) return "00:00:00";
12
+ const totalSeconds = Math.floor(ms / 1e3);
13
+ const days = Math.floor(totalSeconds / 86400);
14
+ const hours = Math.floor(totalSeconds % 86400 / 3600);
15
+ const minutes = Math.floor(totalSeconds % 3600 / 60);
16
+ const seconds = totalSeconds % 60;
17
+ const pad = (n) => String(n).padStart(2, "0");
18
+ if (days > 0) return `${days}d ${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
19
+ return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
20
20
  }
21
21
  function mergeRef(internalRef, externalRef) {
22
- return (el) => {
23
- internalRef.current = el;
24
- if (typeof externalRef === "function") externalRef(el);
25
- else if (externalRef && typeof externalRef === "object") {
26
- externalRef.current = el;
27
- }
28
- };
22
+ return (el) => {
23
+ internalRef.current = el;
24
+ if (typeof externalRef === "function") externalRef(el);
25
+ else if (externalRef && typeof externalRef === "object") externalRef.current = el;
26
+ };
29
27
  }
30
- function Count({
31
- to,
32
- from: start = 0,
33
- duration = 900,
34
- delay = 0,
35
- format,
36
- prefix = "",
37
- suffix = "",
38
- children,
39
- once = true,
40
- easing = easeOut,
41
- onComplete
42
- }) {
43
- const isDate = to instanceof Date;
44
- if (isDate) {
45
- return /* @__PURE__ */ jsx(
46
- DateCount,
47
- {
48
- to,
49
- delay,
50
- format,
51
- prefix,
52
- suffix,
53
- once,
54
- onComplete,
55
- children
56
- }
57
- );
58
- }
59
- return /* @__PURE__ */ jsx(
60
- NumberCount,
61
- {
62
- to,
63
- from: start,
64
- duration,
65
- delay,
66
- format,
67
- prefix,
68
- suffix,
69
- once,
70
- easing,
71
- onComplete,
72
- children
73
- }
74
- );
28
+ /**
29
+ * Animated number counter. Counts up, counts down, or live-counts to a date.
30
+ *
31
+ * Direction is automatic — if `from < to` it counts up, if `from > to` it
32
+ * counts down. When `to` is a Date, it becomes a live countdown that ticks
33
+ * every second.
34
+ *
35
+ * Zero wrapper — injects the formatted value as children via cloneElement.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * // Count up
40
+ * <Count to={1234}>
41
+ * <span className="text-4xl font-bold tabular-nums" />
42
+ * </Count>
43
+ *
44
+ * // Count down
45
+ * <Count from={100} to={0} onComplete={() => alert("Done!")}>
46
+ * <span className="text-4xl font-bold tabular-nums" />
47
+ * </Count>
48
+ *
49
+ * // Live countdown to a date
50
+ * <Count to={new Date("2026-04-01T00:00:00")}>
51
+ * <span className="text-2xl font-mono tabular-nums" />
52
+ * </Count>
53
+ *
54
+ * // Custom date format
55
+ * <Count to={launchDate} format={(ms) => `${Math.ceil(ms / 86400000)} days left`}>
56
+ * <span className="text-xl" />
57
+ * </Count>
58
+ * ```
59
+ */
60
+ function Count({ to, from: start = 0, duration = 900, delay = 0, format, prefix = "", suffix = "", children, once = true, easing = easeOut, onComplete }) {
61
+ if (to instanceof Date) return /* @__PURE__ */ jsx(DateCount, {
62
+ to,
63
+ delay,
64
+ format,
65
+ prefix,
66
+ suffix,
67
+ once,
68
+ onComplete,
69
+ children
70
+ });
71
+ return /* @__PURE__ */ jsx(NumberCount, {
72
+ to,
73
+ from: start,
74
+ duration,
75
+ delay,
76
+ format,
77
+ prefix,
78
+ suffix,
79
+ once,
80
+ easing,
81
+ onComplete,
82
+ children
83
+ });
75
84
  }
76
- function NumberCount({
77
- to,
78
- from: start,
79
- duration,
80
- delay,
81
- format,
82
- prefix,
83
- suffix,
84
- children,
85
- once,
86
- easing,
87
- onComplete
88
- }) {
89
- const ref = useRef(null);
90
- const isInView = useInView(ref, { once, margin: "-50px" });
91
- const [display, setDisplay] = useState(start);
92
- const hasAnimated = useRef(false);
93
- const formatFn = format ?? ((n) => Number.isInteger(to) ? Math.round(n).toLocaleString() : n.toLocaleString());
94
- useEffect(() => {
95
- if (!isInView || hasAnimated.current) return;
96
- hasAnimated.current = true;
97
- const delayMs = delay * 1e3;
98
- let raf;
99
- let startTime;
100
- const timer = setTimeout(() => {
101
- const animate = (timestamp) => {
102
- if (!startTime) startTime = timestamp;
103
- const elapsed = timestamp - startTime;
104
- const progress = Math.min(elapsed / duration, 1);
105
- const easedProgress = easing(progress);
106
- const current = start + (to - start) * easedProgress;
107
- setDisplay(current);
108
- if (progress < 1) {
109
- raf = requestAnimationFrame(animate);
110
- } else {
111
- onComplete?.();
112
- }
113
- };
114
- raf = requestAnimationFrame(animate);
115
- }, delayMs);
116
- return () => {
117
- clearTimeout(timer);
118
- cancelAnimationFrame(raf);
119
- };
120
- }, [isInView, to, start, duration, delay, easing, onComplete]);
121
- if (!isValidElement(children)) return children;
122
- const childProps = children.props;
123
- const existingRef = childProps.ref;
124
- return cloneElement(children, {
125
- ref: mergeRef(ref, existingRef),
126
- children: `${prefix}${formatFn(display)}${suffix}`
127
- });
85
+ function NumberCount({ to, from: start, duration, delay, format, prefix, suffix, children, once, easing, onComplete }) {
86
+ const ref = useRef(null);
87
+ const isInView = useInView(ref, {
88
+ once,
89
+ margin: "-50px"
90
+ });
91
+ const [display, setDisplay] = useState(start);
92
+ const hasAnimated = useRef(false);
93
+ const formatFn = format ?? ((n) => Number.isInteger(to) ? Math.round(n).toLocaleString() : n.toLocaleString());
94
+ useEffect(() => {
95
+ if (!isInView || hasAnimated.current) return;
96
+ hasAnimated.current = true;
97
+ const delayMs = delay * 1e3;
98
+ let raf;
99
+ let startTime;
100
+ const timer = setTimeout(() => {
101
+ const animate = (timestamp) => {
102
+ if (!startTime) startTime = timestamp;
103
+ const elapsed = timestamp - startTime;
104
+ const progress = Math.min(elapsed / duration, 1);
105
+ const easedProgress = easing(progress);
106
+ setDisplay(start + (to - start) * easedProgress);
107
+ if (progress < 1) raf = requestAnimationFrame(animate);
108
+ else onComplete?.();
109
+ };
110
+ raf = requestAnimationFrame(animate);
111
+ }, delayMs);
112
+ return () => {
113
+ clearTimeout(timer);
114
+ cancelAnimationFrame(raf);
115
+ };
116
+ }, [
117
+ isInView,
118
+ to,
119
+ start,
120
+ duration,
121
+ delay,
122
+ easing,
123
+ onComplete
124
+ ]);
125
+ if (!isValidElement(children)) return children;
126
+ const existingRef = children.props.ref;
127
+ return cloneElement(children, {
128
+ ref: mergeRef(ref, existingRef),
129
+ children: `${prefix}${formatFn(display)}${suffix}`
130
+ });
128
131
  }
129
- function DateCount({
130
- to,
131
- delay,
132
- format,
133
- prefix,
134
- suffix,
135
- children,
136
- once,
137
- onComplete
138
- }) {
139
- const ref = useRef(null);
140
- const isInView = useInView(ref, { once, margin: "-50px" });
141
- const [remaining, setRemaining] = useState(() => Math.max(0, to.getTime() - Date.now()));
142
- const [started, setStarted] = useState(false);
143
- const completedRef = useRef(false);
144
- const formatFn = format ?? formatCountdown;
145
- useEffect(() => {
146
- if (!isInView || started) return;
147
- const timer = setTimeout(() => setStarted(true), delay * 1e3);
148
- return () => clearTimeout(timer);
149
- }, [isInView, delay, started]);
150
- useEffect(() => {
151
- if (!started) return;
152
- const tick = () => {
153
- const ms = Math.max(0, to.getTime() - Date.now());
154
- setRemaining(ms);
155
- if (ms <= 0 && !completedRef.current) {
156
- completedRef.current = true;
157
- onComplete?.();
158
- }
159
- };
160
- tick();
161
- const interval = setInterval(tick, 1e3);
162
- return () => clearInterval(interval);
163
- }, [started, to, onComplete]);
164
- if (!isValidElement(children)) return children;
165
- const childProps = children.props;
166
- const existingRef = childProps.ref;
167
- return cloneElement(children, {
168
- ref: mergeRef(ref, existingRef),
169
- children: `${prefix}${formatFn(remaining)}${suffix}`
170
- });
132
+ function DateCount({ to, delay, format, prefix, suffix, children, once, onComplete }) {
133
+ const ref = useRef(null);
134
+ const isInView = useInView(ref, {
135
+ once,
136
+ margin: "-50px"
137
+ });
138
+ const [remaining, setRemaining] = useState(() => Math.max(0, to.getTime() - Date.now()));
139
+ const [started, setStarted] = useState(false);
140
+ const completedRef = useRef(false);
141
+ const formatFn = format ?? formatCountdown;
142
+ useEffect(() => {
143
+ if (!isInView || started) return;
144
+ const timer = setTimeout(() => setStarted(true), delay * 1e3);
145
+ return () => clearTimeout(timer);
146
+ }, [
147
+ isInView,
148
+ delay,
149
+ started
150
+ ]);
151
+ useEffect(() => {
152
+ if (!started) return;
153
+ const tick = () => {
154
+ const ms = Math.max(0, to.getTime() - Date.now());
155
+ setRemaining(ms);
156
+ if (ms <= 0 && !completedRef.current) {
157
+ completedRef.current = true;
158
+ onComplete?.();
159
+ }
160
+ };
161
+ tick();
162
+ const interval = setInterval(tick, 1e3);
163
+ return () => clearInterval(interval);
164
+ }, [
165
+ started,
166
+ to,
167
+ onComplete
168
+ ]);
169
+ if (!isValidElement(children)) return children;
170
+ const existingRef = children.props.ref;
171
+ return cloneElement(children, {
172
+ ref: mergeRef(ref, existingRef),
173
+ children: `${prefix}${formatFn(remaining)}${suffix}`
174
+ });
171
175
  }
172
- var CountUp = Count;
173
-
176
+ /** @deprecated Use `Count` instead */
177
+ const CountUp = Count;
178
+ //#endregion
174
179
  export { Count, CountUp, easeOut };
175
- //# sourceMappingURL=count.js.map
180
+
176
181
  //# sourceMappingURL=count.js.map
package/dist/count.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/count.tsx"],"names":[],"mappings":"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","file":"count.js","sourcesContent":["\"use client\"\n\nimport {\n type ReactElement,\n type Ref,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n} from \"react\"\nimport { useInView } from \"motion/react\"\n\n// ── Types ────────────────────────────────────────────────────────────\n\ninterface CountProps {\n /** Target number or Date to count to */\n to: number | Date\n /** Starting number. Default: 0. Ignored when `to` is a Date. */\n from?: number\n /** Animation duration in milliseconds. Default: 900. Ignored when `to` is a Date. */\n duration?: number\n /** Delay before starting in seconds. Default: 0 */\n delay?: number\n /**\n * Format the value for display.\n * - For numbers: receives the current interpolated number.\n * - For dates: receives remaining milliseconds.\n * Default: toLocaleString() for numbers, dd:hh:mm:ss for dates.\n */\n format?: (value: number) => string\n /** Prefix string (e.g., \"$\"). Default: '' */\n prefix?: string\n /** Suffix string (e.g., \"%\", \"+\"). Default: '' */\n suffix?: string\n /** Element to render into. Receives the formatted value as children. */\n children: ReactElement\n /** Trigger once. Default: true */\n once?: boolean\n /** Easing function. Default: easeOut. Ignored when `to` is a Date. */\n easing?: (t: number) => number\n /** Called when the count finishes (reaches target or date passes). */\n onComplete?: () => void\n}\n\n/** @deprecated Use `Count` instead. `CountUp` is an alias kept for backwards compatibility. */\ntype CountUpProps = CountProps\n\n// ── Easing ───────────────────────────────────────────────────────────\n\n/** Cubic ease-out: fast start, smooth deceleration */\nfunction easeOut(t: number): number {\n return 1 - Math.pow(1 - t, 3)\n}\n\n// ── Date Formatting ──────────────────────────────────────────────────\n\nfunction formatCountdown(ms: number): string {\n if (ms <= 0) return \"00:00:00\"\n\n const totalSeconds = Math.floor(ms / 1000)\n const days = Math.floor(totalSeconds / 86400)\n const hours = Math.floor((totalSeconds % 86400) / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n\n const pad = (n: number) => String(n).padStart(2, \"0\")\n\n if (days > 0) {\n return `${days}d ${pad(hours)}:${pad(minutes)}:${pad(seconds)}`\n }\n return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`\n}\n\n// ── Ref Merge ────────────────────────────────────────────────────────\n\nfunction mergeRef(\n internalRef: React.RefObject<HTMLElement | null>,\n externalRef?: Ref<HTMLElement>,\n) {\n return (el: HTMLElement | null) => {\n ;(internalRef as { current: HTMLElement | null }).current = el\n if (typeof externalRef === \"function\") externalRef(el)\n else if (externalRef && typeof externalRef === \"object\") {\n ;(externalRef as { current: HTMLElement | null }).current = el\n }\n }\n}\n\n// ── Count ────────────────────────────────────────────────────────────\n\n/**\n * Animated number counter. Counts up, counts down, or live-counts to a date.\n *\n * Direction is automatic — if `from < to` it counts up, if `from > to` it\n * counts down. When `to` is a Date, it becomes a live countdown that ticks\n * every second.\n *\n * Zero wrapper — injects the formatted value as children via cloneElement.\n *\n * @example\n * ```tsx\n * // Count up\n * <Count to={1234}>\n * <span className=\"text-4xl font-bold tabular-nums\" />\n * </Count>\n *\n * // Count down\n * <Count from={100} to={0} onComplete={() => alert(\"Done!\")}>\n * <span className=\"text-4xl font-bold tabular-nums\" />\n * </Count>\n *\n * // Live countdown to a date\n * <Count to={new Date(\"2026-04-01T00:00:00\")}>\n * <span className=\"text-2xl font-mono tabular-nums\" />\n * </Count>\n *\n * // Custom date format\n * <Count to={launchDate} format={(ms) => `${Math.ceil(ms / 86400000)} days left`}>\n * <span className=\"text-xl\" />\n * </Count>\n * ```\n */\nfunction Count({\n to,\n from: start = 0,\n duration = 900,\n delay = 0,\n format,\n prefix = \"\",\n suffix = \"\",\n children,\n once = true,\n easing = easeOut,\n onComplete,\n}: CountProps) {\n const isDate = to instanceof Date\n\n if (isDate) {\n return (\n <DateCount\n to={to}\n delay={delay}\n format={format}\n prefix={prefix}\n suffix={suffix}\n once={once}\n onComplete={onComplete}\n >\n {children}\n </DateCount>\n )\n }\n\n return (\n <NumberCount\n to={to}\n from={start}\n duration={duration}\n delay={delay}\n format={format}\n prefix={prefix}\n suffix={suffix}\n once={once}\n easing={easing}\n onComplete={onComplete}\n >\n {children}\n </NumberCount>\n )\n}\n\n// ── Number Count (up or down) ────────────────────────────────────────\n\nfunction NumberCount({\n to,\n from: start,\n duration,\n delay,\n format,\n prefix,\n suffix,\n children,\n once,\n easing,\n onComplete,\n}: {\n to: number\n from: number\n duration: number\n delay: number\n format?: (value: number) => string\n prefix: string\n suffix: string\n children: ReactElement\n once: boolean\n easing: (t: number) => number\n onComplete?: () => void\n}) {\n const ref = useRef<HTMLElement>(null)\n const isInView = useInView(ref, { once, margin: \"-50px\" })\n const [display, setDisplay] = useState(start)\n const hasAnimated = useRef(false)\n\n const formatFn = format ?? ((n: number) =>\n Number.isInteger(to) ? Math.round(n).toLocaleString() : n.toLocaleString()\n )\n\n useEffect(() => {\n if (!isInView || hasAnimated.current) return\n hasAnimated.current = true\n\n const delayMs = delay * 1000\n let raf: number\n let startTime: number\n\n const timer = setTimeout(() => {\n const animate = (timestamp: number) => {\n if (!startTime) startTime = timestamp\n const elapsed = timestamp - startTime\n const progress = Math.min(elapsed / duration, 1)\n const easedProgress = easing(progress)\n const current = start + (to - start) * easedProgress\n\n setDisplay(current)\n\n if (progress < 1) {\n raf = requestAnimationFrame(animate)\n } else {\n onComplete?.()\n }\n }\n\n raf = requestAnimationFrame(animate)\n }, delayMs)\n\n return () => {\n clearTimeout(timer)\n cancelAnimationFrame(raf)\n }\n }, [isInView, to, start, duration, delay, easing, onComplete])\n\n if (!isValidElement(children)) return children\n\n const childProps = children.props as Record<string, unknown>\n const existingRef = (childProps as { ref?: Ref<HTMLElement> }).ref\n\n return cloneElement(children, {\n ref: mergeRef(ref, existingRef),\n children: `${prefix}${formatFn(display)}${suffix}`,\n } as Record<string, unknown>)\n}\n\n// ── Date Count (live countdown) ──────────────────────────────────────\n\nfunction DateCount({\n to,\n delay,\n format,\n prefix,\n suffix,\n children,\n once,\n onComplete,\n}: {\n to: Date\n delay: number\n format?: (value: number) => string\n prefix: string\n suffix: string\n children: ReactElement\n once: boolean\n onComplete?: () => void\n}) {\n const ref = useRef<HTMLElement>(null)\n const isInView = useInView(ref, { once, margin: \"-50px\" })\n const [remaining, setRemaining] = useState(() => Math.max(0, to.getTime() - Date.now()))\n const [started, setStarted] = useState(false)\n const completedRef = useRef(false)\n\n const formatFn = format ?? formatCountdown\n\n useEffect(() => {\n if (!isInView || started) return\n const timer = setTimeout(() => setStarted(true), delay * 1000)\n return () => clearTimeout(timer)\n }, [isInView, delay, started])\n\n useEffect(() => {\n if (!started) return\n\n const tick = () => {\n const ms = Math.max(0, to.getTime() - Date.now())\n setRemaining(ms)\n\n if (ms <= 0 && !completedRef.current) {\n completedRef.current = true\n onComplete?.()\n }\n }\n\n tick()\n const interval = setInterval(tick, 1000)\n return () => clearInterval(interval)\n }, [started, to, onComplete])\n\n if (!isValidElement(children)) return children\n\n const childProps = children.props as Record<string, unknown>\n const existingRef = (childProps as { ref?: Ref<HTMLElement> }).ref\n\n return cloneElement(children, {\n ref: mergeRef(ref, existingRef),\n children: `${prefix}${formatFn(remaining)}${suffix}`,\n } as Record<string, unknown>)\n}\n\n// ── Exports ──────────────────────────────────────────────────────────\n\n/** @deprecated Use `Count` instead */\nconst CountUp = Count\n\nexport { Count, CountUp, easeOut }\nexport type { CountProps, CountUpProps }\n"]}
1
+ {"version":3,"file":"count.js","names":[],"sources":["../src/count.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n type ReactElement,\n type Ref,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n} from \"react\"\nimport { useInView } from \"motion/react\"\n\n// ── Types ────────────────────────────────────────────────────────────\n\ninterface CountProps {\n /** Target number or Date to count to */\n to: number | Date\n /** Starting number. Default: 0. Ignored when `to` is a Date. */\n from?: number\n /** Animation duration in milliseconds. Default: 900. Ignored when `to` is a Date. */\n duration?: number\n /** Delay before starting in seconds. Default: 0 */\n delay?: number\n /**\n * Format the value for display.\n * - For numbers: receives the current interpolated number.\n * - For dates: receives remaining milliseconds.\n * Default: toLocaleString() for numbers, dd:hh:mm:ss for dates.\n */\n format?: (value: number) => string\n /** Prefix string (e.g., \"$\"). Default: '' */\n prefix?: string\n /** Suffix string (e.g., \"%\", \"+\"). Default: '' */\n suffix?: string\n /** Element to render into. Receives the formatted value as children. */\n children: ReactElement\n /** Trigger once. Default: true */\n once?: boolean\n /** Easing function. Default: easeOut. Ignored when `to` is a Date. */\n easing?: (t: number) => number\n /** Called when the count finishes (reaches target or date passes). */\n onComplete?: () => void\n}\n\n/** @deprecated Use `Count` instead. `CountUp` is an alias kept for backwards compatibility. */\ntype CountUpProps = CountProps\n\n// ── Easing ───────────────────────────────────────────────────────────\n\n/** Cubic ease-out: fast start, smooth deceleration */\nfunction easeOut(t: number): number {\n return 1 - Math.pow(1 - t, 3)\n}\n\n// ── Date Formatting ──────────────────────────────────────────────────\n\nfunction formatCountdown(ms: number): string {\n if (ms <= 0) return \"00:00:00\"\n\n const totalSeconds = Math.floor(ms / 1000)\n const days = Math.floor(totalSeconds / 86400)\n const hours = Math.floor((totalSeconds % 86400) / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n\n const pad = (n: number) => String(n).padStart(2, \"0\")\n\n if (days > 0) {\n return `${days}d ${pad(hours)}:${pad(minutes)}:${pad(seconds)}`\n }\n return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`\n}\n\n// ── Ref Merge ────────────────────────────────────────────────────────\n\nfunction mergeRef(\n internalRef: React.RefObject<HTMLElement | null>,\n externalRef?: Ref<HTMLElement>,\n) {\n return (el: HTMLElement | null) => {\n ;(internalRef as { current: HTMLElement | null }).current = el\n if (typeof externalRef === \"function\") externalRef(el)\n else if (externalRef && typeof externalRef === \"object\") {\n ;(externalRef as { current: HTMLElement | null }).current = el\n }\n }\n}\n\n// ── Count ────────────────────────────────────────────────────────────\n\n/**\n * Animated number counter. Counts up, counts down, or live-counts to a date.\n *\n * Direction is automatic — if `from < to` it counts up, if `from > to` it\n * counts down. When `to` is a Date, it becomes a live countdown that ticks\n * every second.\n *\n * Zero wrapper — injects the formatted value as children via cloneElement.\n *\n * @example\n * ```tsx\n * // Count up\n * <Count to={1234}>\n * <span className=\"text-4xl font-bold tabular-nums\" />\n * </Count>\n *\n * // Count down\n * <Count from={100} to={0} onComplete={() => alert(\"Done!\")}>\n * <span className=\"text-4xl font-bold tabular-nums\" />\n * </Count>\n *\n * // Live countdown to a date\n * <Count to={new Date(\"2026-04-01T00:00:00\")}>\n * <span className=\"text-2xl font-mono tabular-nums\" />\n * </Count>\n *\n * // Custom date format\n * <Count to={launchDate} format={(ms) => `${Math.ceil(ms / 86400000)} days left`}>\n * <span className=\"text-xl\" />\n * </Count>\n * ```\n */\nfunction Count({\n to,\n from: start = 0,\n duration = 900,\n delay = 0,\n format,\n prefix = \"\",\n suffix = \"\",\n children,\n once = true,\n easing = easeOut,\n onComplete,\n}: CountProps) {\n const isDate = to instanceof Date\n\n if (isDate) {\n return (\n <DateCount\n to={to}\n delay={delay}\n format={format}\n prefix={prefix}\n suffix={suffix}\n once={once}\n onComplete={onComplete}\n >\n {children}\n </DateCount>\n )\n }\n\n return (\n <NumberCount\n to={to}\n from={start}\n duration={duration}\n delay={delay}\n format={format}\n prefix={prefix}\n suffix={suffix}\n once={once}\n easing={easing}\n onComplete={onComplete}\n >\n {children}\n </NumberCount>\n )\n}\n\n// ── Number Count (up or down) ────────────────────────────────────────\n\nfunction NumberCount({\n to,\n from: start,\n duration,\n delay,\n format,\n prefix,\n suffix,\n children,\n once,\n easing,\n onComplete,\n}: {\n to: number\n from: number\n duration: number\n delay: number\n format?: (value: number) => string\n prefix: string\n suffix: string\n children: ReactElement\n once: boolean\n easing: (t: number) => number\n onComplete?: () => void\n}) {\n const ref = useRef<HTMLElement>(null)\n const isInView = useInView(ref, { once, margin: \"-50px\" })\n const [display, setDisplay] = useState(start)\n const hasAnimated = useRef(false)\n\n const formatFn = format ?? ((n: number) =>\n Number.isInteger(to) ? Math.round(n).toLocaleString() : n.toLocaleString()\n )\n\n useEffect(() => {\n if (!isInView || hasAnimated.current) return\n hasAnimated.current = true\n\n const delayMs = delay * 1000\n let raf: number\n let startTime: number\n\n const timer = setTimeout(() => {\n const animate = (timestamp: number) => {\n if (!startTime) startTime = timestamp\n const elapsed = timestamp - startTime\n const progress = Math.min(elapsed / duration, 1)\n const easedProgress = easing(progress)\n const current = start + (to - start) * easedProgress\n\n setDisplay(current)\n\n if (progress < 1) {\n raf = requestAnimationFrame(animate)\n } else {\n onComplete?.()\n }\n }\n\n raf = requestAnimationFrame(animate)\n }, delayMs)\n\n return () => {\n clearTimeout(timer)\n cancelAnimationFrame(raf)\n }\n }, [isInView, to, start, duration, delay, easing, onComplete])\n\n if (!isValidElement(children)) return children\n\n const childProps = children.props as Record<string, unknown>\n const existingRef = (childProps as { ref?: Ref<HTMLElement> }).ref\n\n return cloneElement(children, {\n ref: mergeRef(ref, existingRef),\n children: `${prefix}${formatFn(display)}${suffix}`,\n } as Record<string, unknown>)\n}\n\n// ── Date Count (live countdown) ──────────────────────────────────────\n\nfunction DateCount({\n to,\n delay,\n format,\n prefix,\n suffix,\n children,\n once,\n onComplete,\n}: {\n to: Date\n delay: number\n format?: (value: number) => string\n prefix: string\n suffix: string\n children: ReactElement\n once: boolean\n onComplete?: () => void\n}) {\n const ref = useRef<HTMLElement>(null)\n const isInView = useInView(ref, { once, margin: \"-50px\" })\n const [remaining, setRemaining] = useState(() => Math.max(0, to.getTime() - Date.now()))\n const [started, setStarted] = useState(false)\n const completedRef = useRef(false)\n\n const formatFn = format ?? formatCountdown\n\n useEffect(() => {\n if (!isInView || started) return\n const timer = setTimeout(() => setStarted(true), delay * 1000)\n return () => clearTimeout(timer)\n }, [isInView, delay, started])\n\n useEffect(() => {\n if (!started) return\n\n const tick = () => {\n const ms = Math.max(0, to.getTime() - Date.now())\n setRemaining(ms)\n\n if (ms <= 0 && !completedRef.current) {\n completedRef.current = true\n onComplete?.()\n }\n }\n\n tick()\n const interval = setInterval(tick, 1000)\n return () => clearInterval(interval)\n }, [started, to, onComplete])\n\n if (!isValidElement(children)) return children\n\n const childProps = children.props as Record<string, unknown>\n const existingRef = (childProps as { ref?: Ref<HTMLElement> }).ref\n\n return cloneElement(children, {\n ref: mergeRef(ref, existingRef),\n children: `${prefix}${formatFn(remaining)}${suffix}`,\n } as Record<string, unknown>)\n}\n\n// ── Exports ──────────────────────────────────────────────────────────\n\n/** @deprecated Use `Count` instead */\nconst CountUp = Count\n\nexport { Count, CountUp, easeOut }\nexport type { CountProps, CountUpProps }\n"],"mappings":"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"}
package/dist/dialog.d.ts CHANGED
@@ -1,20 +1,21 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
1
+ import * as React from "react";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
+ import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
4
4
 
5
+ //#region src/dialog.d.ts
5
6
  type DialogProps = React.ComponentProps<typeof Dialog$1.Root> & {
6
- /**
7
- * When `true`, clicking outside the dialog does not close it and
8
- * `FloatingFocusManager` sets `closeOnFocusOut: false`.
9
- * This prevents the focus-manager from swallowing click events on
10
- * interactive elements inside the popup (buttons, switches, etc.).
11
- *
12
- * Use this for dialogs that contain forms, wizards, or other complex
13
- * interactive content.
14
- *
15
- * @default false
16
- */
17
- disablePointerDismissal?: boolean;
7
+ /**
8
+ * When `true`, clicking outside the dialog does not close it and
9
+ * `FloatingFocusManager` sets `closeOnFocusOut: false`.
10
+ * This prevents the focus-manager from swallowing click events on
11
+ * interactive elements inside the popup (buttons, switches, etc.).
12
+ *
13
+ * Use this for dialogs that contain forms, wizards, or other complex
14
+ * interactive content.
15
+ *
16
+ * @default false
17
+ */
18
+ disablePointerDismissal?: boolean;
18
19
  };
19
20
  type DialogTriggerProps = React.ComponentProps<typeof Dialog$1.Trigger>;
20
21
  type DialogPortalProps = React.ComponentProps<typeof Dialog$1.Portal>;
@@ -24,20 +25,52 @@ type DialogPopupProps = React.ComponentProps<typeof Dialog$1.Popup>;
24
25
  type DialogTitleProps = React.ComponentProps<typeof Dialog$1.Title>;
25
26
  type DialogDescriptionProps = React.ComponentProps<typeof Dialog$1.Description>;
26
27
  type DialogContentProps = DialogPopupProps & {
27
- showCloseButton?: boolean;
28
+ showCloseButton?: boolean;
28
29
  };
29
30
  type DialogFooterProps = React.ComponentProps<"div"> & {
30
- showCloseButton?: boolean;
31
+ showCloseButton?: boolean;
31
32
  };
32
- declare function Dialog({ disablePointerDismissal, ...props }: DialogProps): react_jsx_runtime.JSX.Element;
33
- declare function DialogTrigger({ ...props }: DialogTriggerProps): react_jsx_runtime.JSX.Element;
34
- declare function DialogPortal({ ...props }: DialogPortalProps): react_jsx_runtime.JSX.Element;
35
- declare function DialogClose({ ...props }: DialogCloseProps): react_jsx_runtime.JSX.Element;
36
- declare function DialogOverlay({ className, ...props }: DialogOverlayProps): react_jsx_runtime.JSX.Element;
37
- declare function DialogContent({ className, children, showCloseButton, ...props }: DialogContentProps): react_jsx_runtime.JSX.Element;
38
- declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
39
- declare function DialogFooter({ className, showCloseButton, children, ...props }: DialogFooterProps): react_jsx_runtime.JSX.Element;
40
- declare function DialogTitle({ className, ...props }: DialogTitleProps): react_jsx_runtime.JSX.Element;
41
- declare function DialogDescription({ className, ...props }: DialogDescriptionProps): react_jsx_runtime.JSX.Element;
42
-
33
+ declare function Dialog({
34
+ disablePointerDismissal,
35
+ ...props
36
+ }: DialogProps): _$react_jsx_runtime0.JSX.Element;
37
+ declare function DialogTrigger({
38
+ ...props
39
+ }: DialogTriggerProps): _$react_jsx_runtime0.JSX.Element;
40
+ declare function DialogPortal({
41
+ ...props
42
+ }: DialogPortalProps): _$react_jsx_runtime0.JSX.Element;
43
+ declare function DialogClose({
44
+ ...props
45
+ }: DialogCloseProps): _$react_jsx_runtime0.JSX.Element;
46
+ declare function DialogOverlay({
47
+ className,
48
+ ...props
49
+ }: DialogOverlayProps): _$react_jsx_runtime0.JSX.Element;
50
+ declare function DialogContent({
51
+ className,
52
+ children,
53
+ showCloseButton,
54
+ ...props
55
+ }: DialogContentProps): _$react_jsx_runtime0.JSX.Element;
56
+ declare function DialogHeader({
57
+ className,
58
+ ...props
59
+ }: React.ComponentProps<"div">): _$react_jsx_runtime0.JSX.Element;
60
+ declare function DialogFooter({
61
+ className,
62
+ showCloseButton,
63
+ children,
64
+ ...props
65
+ }: DialogFooterProps): _$react_jsx_runtime0.JSX.Element;
66
+ declare function DialogTitle({
67
+ className,
68
+ ...props
69
+ }: DialogTitleProps): _$react_jsx_runtime0.JSX.Element;
70
+ declare function DialogDescription({
71
+ className,
72
+ ...props
73
+ }: DialogDescriptionProps): _$react_jsx_runtime0.JSX.Element;
74
+ //#endregion
43
75
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
76
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","names":[],"sources":["../src/dialog.tsx"],"mappings":";;;;;KASK,WAAA,GAAc,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,IAAA;;;AANE;;;;;;;;;EAkB/D,uBAAA;AAAA;AAAA,KAEG,kBAAA,GAAqB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,OAAA;AAAA,KACjE,iBAAA,GAAoB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,MAAA;AAAA,KAChE,gBAAA,GAAmB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,KAAA;AAAA,KAC/D,kBAAA,GAAqB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,QAAA;AAAA,KACjE,gBAAA,GAAmB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,KAAA;AAAA,KAC/D,gBAAA,GAAmB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,KAAA;AAAA,KAC/D,sBAAA,GAAyB,KAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,WAAA;AAAA,KAErE,kBAAA,GAAqB,gBAAA;EACxB,eAAA;AAAA;AAAA,KAGG,iBAAA,GAAoB,KAAA,CAAM,cAAA;EAC7B,eAAA;AAAA;AAAA,iBAGO,MAAA,CAAA;EAAS,uBAAA;EAAA,GAA4B;AAAA,GAAS,WAAA,GAAW,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIzD,aAAA,CAAA;EAAA,GAAmB;AAAA,GAAS,kBAAA,GAAkB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI9C,YAAA,CAAA;EAAA,GAAkB;AAAA,GAAS,iBAAA,GAAiB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI5C,WAAA,CAAA;EAAA,GAAiB;AAAA,GAAS,gBAAA,GAAgB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI1C,aAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,kBAAA,GAAkB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAaZ,aAAA,CAAA;EACP,SAAA;EACA,QAAA;EACA,eAAA;EAAA,GACG;AAAA,GACF,kBAAA,GAAkB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiCZ,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,KAAA,CAAM,cAAA,UAAqB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAUjE,YAAA,CAAA;EACP,SAAA;EACA,eAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,iBAAA,GAAiB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAoBX,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,gBAAA,GAAgB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAUrD,iBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,sBAAA,GAAsB,oBAAA,CAAA,GAAA,CAAA,OAAA"}