@codefast/ui 0.3.9 → 0.3.11-canary.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 (210) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +277 -167
  3. package/dist/components/accordion.cjs +97 -1
  4. package/dist/components/accordion.js +51 -1
  5. package/dist/components/alert-dialog.cjs +155 -1
  6. package/dist/components/alert-dialog.d.ts +2 -2
  7. package/dist/components/alert-dialog.js +94 -1
  8. package/dist/components/alert.cjs +84 -1
  9. package/dist/components/alert.d.ts +1 -1
  10. package/dist/components/alert.js +41 -1
  11. package/dist/components/aspect-ratio.cjs +43 -1
  12. package/dist/components/aspect-ratio.js +9 -1
  13. package/dist/components/avatar.cjs +65 -1
  14. package/dist/components/avatar.js +25 -1
  15. package/dist/components/badge.cjs +66 -1
  16. package/dist/components/badge.d.ts +1 -1
  17. package/dist/components/badge.js +29 -1
  18. package/dist/components/breadcrumb.cjs +124 -1
  19. package/dist/components/breadcrumb.js +72 -1
  20. package/dist/components/button-group.cjs +86 -1
  21. package/dist/components/button-group.d.ts +1 -1
  22. package/dist/components/button-group.js +43 -1
  23. package/dist/components/button.cjs +92 -1
  24. package/dist/components/button.d.ts +1 -1
  25. package/dist/components/button.js +55 -1
  26. package/dist/components/calendar.cjs +150 -1
  27. package/dist/components/calendar.d.ts +11 -18
  28. package/dist/components/calendar.js +113 -1
  29. package/dist/components/card.cjs +105 -1
  30. package/dist/components/card.js +53 -1
  31. package/dist/components/carousel.cjs +210 -1
  32. package/dist/components/carousel.d.ts +1 -1
  33. package/dist/components/carousel.js +151 -1
  34. package/dist/components/chart.cjs +250 -3
  35. package/dist/components/chart.d.ts +5 -4
  36. package/dist/components/chart.js +198 -3
  37. package/dist/components/checkbox-cards.cjs +69 -1
  38. package/dist/components/checkbox-cards.js +32 -1
  39. package/dist/components/checkbox-group.cjs +63 -1
  40. package/dist/components/checkbox-group.js +26 -1
  41. package/dist/components/checkbox.cjs +53 -1
  42. package/dist/components/checkbox.js +19 -1
  43. package/dist/components/collapsible.cjs +61 -1
  44. package/dist/components/collapsible.js +21 -1
  45. package/dist/components/command.cjs +167 -1
  46. package/dist/components/command.js +106 -1
  47. package/dist/components/context-menu.cjs +218 -1
  48. package/dist/components/context-menu.js +142 -1
  49. package/dist/components/dialog.cjs +164 -1
  50. package/dist/components/dialog.d.ts +2 -2
  51. package/dist/components/dialog.js +106 -1
  52. package/dist/components/drawer.cjs +143 -1
  53. package/dist/components/drawer.d.ts +1 -1
  54. package/dist/components/drawer.js +85 -1
  55. package/dist/components/dropdown-menu.cjs +221 -1
  56. package/dist/components/dropdown-menu.js +145 -1
  57. package/dist/components/empty.cjs +113 -1
  58. package/dist/components/empty.d.ts +1 -1
  59. package/dist/components/empty.js +61 -1
  60. package/dist/components/field.cjs +193 -1
  61. package/dist/components/field.d.ts +1 -1
  62. package/dist/components/field.js +129 -1
  63. package/dist/components/form.cjs +151 -1
  64. package/dist/components/form.d.ts +3 -3
  65. package/dist/components/form.js +96 -1
  66. package/dist/components/hover-card.cjs +77 -1
  67. package/dist/components/hover-card.js +34 -1
  68. package/dist/components/input-group.cjs +155 -1
  69. package/dist/components/input-group.d.ts +1 -1
  70. package/dist/components/input-group.js +97 -1
  71. package/dist/components/input-number.cjs +98 -1
  72. package/dist/components/input-number.js +64 -1
  73. package/dist/components/input-otp.cjs +101 -1
  74. package/dist/components/input-otp.js +49 -1
  75. package/dist/components/input-password.cjs +71 -1
  76. package/dist/components/input-password.js +37 -1
  77. package/dist/components/input-search.cjs +80 -1
  78. package/dist/components/input-search.js +46 -1
  79. package/dist/components/input.cjs +45 -1
  80. package/dist/components/input.js +11 -1
  81. package/dist/components/item.cjs +186 -1
  82. package/dist/components/item.d.ts +1 -1
  83. package/dist/components/item.js +119 -1
  84. package/dist/components/kbd.cjs +54 -1
  85. package/dist/components/kbd.js +17 -1
  86. package/dist/components/label.cjs +45 -1
  87. package/dist/components/label.js +11 -1
  88. package/dist/components/menubar.cjs +232 -1
  89. package/dist/components/menubar.js +153 -1
  90. package/dist/components/native-select.cjs +75 -1
  91. package/dist/components/native-select.js +35 -1
  92. package/dist/components/navigation-menu.cjs +146 -2
  93. package/dist/components/navigation-menu.js +94 -2
  94. package/dist/components/pagination.cjs +138 -1
  95. package/dist/components/pagination.d.ts +1 -1
  96. package/dist/components/pagination.js +86 -1
  97. package/dist/components/popover.cjs +86 -1
  98. package/dist/components/popover.js +40 -1
  99. package/dist/components/progress-circle.cjs +184 -1
  100. package/dist/components/progress-circle.d.ts +1 -1
  101. package/dist/components/progress-circle.js +147 -1
  102. package/dist/components/progress.cjs +52 -1
  103. package/dist/components/progress.js +18 -1
  104. package/dist/components/radio-cards.cjs +66 -1
  105. package/dist/components/radio-cards.js +29 -1
  106. package/dist/components/radio-group.cjs +59 -1
  107. package/dist/components/radio-group.js +22 -1
  108. package/dist/components/radio.cjs +47 -1
  109. package/dist/components/radio.js +13 -1
  110. package/dist/components/resizable.cjs +71 -1
  111. package/dist/components/resizable.d.ts +6 -6
  112. package/dist/components/resizable.js +31 -1
  113. package/dist/components/scroll-area.cjs +140 -1
  114. package/dist/components/scroll-area.d.ts +1 -1
  115. package/dist/components/scroll-area.js +100 -1
  116. package/dist/components/select.cjs +180 -1
  117. package/dist/components/select.d.ts +2 -2
  118. package/dist/components/select.js +119 -1
  119. package/dist/components/separator.cjs +82 -1
  120. package/dist/components/separator.d.ts +1 -1
  121. package/dist/components/separator.js +42 -1
  122. package/dist/components/sheet.cjs +184 -1
  123. package/dist/components/sheet.d.ts +2 -2
  124. package/dist/components/sheet.js +123 -1
  125. package/dist/components/sidebar.cjs +506 -1
  126. package/dist/components/sidebar.d.ts +1 -1
  127. package/dist/components/sidebar.js +400 -1
  128. package/dist/components/skeleton.cjs +44 -1
  129. package/dist/components/skeleton.js +10 -1
  130. package/dist/components/slider.cjs +79 -1
  131. package/dist/components/slider.js +45 -1
  132. package/dist/components/sonner.cjs +57 -1
  133. package/dist/components/sonner.js +17 -1
  134. package/dist/components/spinner.cjs +75 -1
  135. package/dist/components/spinner.js +41 -1
  136. package/dist/components/switch.cjs +49 -1
  137. package/dist/components/switch.js +15 -1
  138. package/dist/components/table.cjs +118 -1
  139. package/dist/components/table.js +63 -1
  140. package/dist/components/tabs.cjs +75 -1
  141. package/dist/components/tabs.d.ts +1 -1
  142. package/dist/components/tabs.js +32 -1
  143. package/dist/components/textarea.cjs +44 -1
  144. package/dist/components/textarea.js +10 -1
  145. package/dist/components/toggle-group.cjs +90 -1
  146. package/dist/components/toggle-group.d.ts +8 -10
  147. package/dist/components/toggle-group.js +53 -1
  148. package/dist/components/toggle.cjs +71 -1
  149. package/dist/components/toggle.d.ts +8 -10
  150. package/dist/components/toggle.js +34 -1
  151. package/dist/components/tooltip.cjs +90 -1
  152. package/dist/components/tooltip.js +44 -1
  153. package/dist/css/amber.css +95 -1
  154. package/dist/css/blue.css +95 -1
  155. package/dist/css/cyan.css +95 -1
  156. package/dist/css/emerald.css +95 -1
  157. package/dist/css/fuchsia.css +95 -1
  158. package/dist/css/gray.css +95 -1
  159. package/dist/css/green.css +95 -1
  160. package/dist/css/indigo.css +95 -1
  161. package/dist/css/lime.css +95 -1
  162. package/dist/css/neutral.css +95 -1
  163. package/dist/css/orange.css +95 -1
  164. package/dist/css/pink.css +95 -1
  165. package/dist/css/preset.css +118 -1
  166. package/dist/css/purple.css +95 -1
  167. package/dist/css/red.css +95 -1
  168. package/dist/css/rose.css +95 -1
  169. package/dist/css/sky.css +95 -1
  170. package/dist/css/slate.css +95 -1
  171. package/dist/css/stone.css +95 -1
  172. package/dist/css/style.css +3 -1
  173. package/dist/css/teal.css +95 -1
  174. package/dist/css/violet.css +95 -1
  175. package/dist/css/yellow.css +95 -1
  176. package/dist/css/zinc.css +95 -1
  177. package/dist/hooks/use-animated-value.cjs +74 -1
  178. package/dist/hooks/use-animated-value.d.ts +9 -10
  179. package/dist/hooks/use-animated-value.js +40 -1
  180. package/dist/hooks/use-copy-to-clipboard.cjs +57 -1
  181. package/dist/hooks/use-copy-to-clipboard.d.ts +17 -0
  182. package/dist/hooks/use-copy-to-clipboard.js +23 -1
  183. package/dist/hooks/use-is-mobile.cjs +39 -1
  184. package/dist/hooks/use-is-mobile.d.ts +15 -6
  185. package/dist/hooks/use-is-mobile.js +5 -1
  186. package/dist/hooks/use-media-query.cjs +56 -1
  187. package/dist/hooks/use-media-query.d.ts +11 -3
  188. package/dist/hooks/use-media-query.js +22 -1
  189. package/dist/hooks/use-mutation-observer.cjs +56 -1
  190. package/dist/hooks/use-mutation-observer.d.ts +7 -11
  191. package/dist/hooks/use-mutation-observer.js +22 -1
  192. package/dist/hooks/use-pagination.cjs +92 -1
  193. package/dist/hooks/use-pagination.d.ts +12 -10
  194. package/dist/hooks/use-pagination.js +55 -1
  195. package/dist/index.cjs +1081 -1
  196. package/dist/index.d.ts +4 -5
  197. package/dist/index.js +69 -1
  198. package/dist/primitives/checkbox-group.cjs +151 -1
  199. package/dist/primitives/checkbox-group.d.ts +1 -1
  200. package/dist/primitives/checkbox-group.js +99 -1
  201. package/dist/primitives/input-number.cjs +439 -1
  202. package/dist/primitives/input-number.d.ts +1 -1
  203. package/dist/primitives/input-number.js +381 -1
  204. package/dist/primitives/input.cjs +99 -1
  205. package/dist/primitives/input.d.ts +1 -1
  206. package/dist/primitives/input.js +53 -1
  207. package/dist/primitives/progress-circle.cjs +198 -1
  208. package/dist/primitives/progress-circle.d.ts +1 -1
  209. package/dist/primitives/progress-circle.js +128 -1
  210. package/package.json +405 -62
@@ -1,2 +1,24 @@
1
1
  "use client";
2
- import{useState as o}from"react";function r({onCopy:e,timeout:t=2e3}={}){let[i,a]=o(!1);return{copyToClipboard:async o=>{if("undefined"!=typeof globalThis&&navigator.clipboard.writeText&&o)try{await navigator.clipboard.writeText(o),a(!0),e&&e(),setTimeout(()=>{a(!1)},t)}catch(o){console.error(o)}},isCopied:i}}export{r as useCopyToClipboard};
2
+ import { useState } from "react";
3
+ function useCopyToClipboard({ onCopy, timeout = 2000 } = {}) {
4
+ const [isCopied, setIsCopied] = useState(false);
5
+ const copyToClipboard = async (value)=>{
6
+ if ("u" < typeof window || !("clipboard" in navigator) || "function" != typeof navigator.clipboard.writeText) return;
7
+ if (!value) return;
8
+ try {
9
+ await navigator.clipboard.writeText(value);
10
+ setIsCopied(true);
11
+ if (onCopy) onCopy();
12
+ setTimeout(()=>{
13
+ setIsCopied(false);
14
+ }, timeout);
15
+ } catch (error) {
16
+ console.error(error);
17
+ }
18
+ };
19
+ return {
20
+ copyToClipboard,
21
+ isCopied
22
+ };
23
+ }
24
+ export { useCopyToClipboard };
@@ -1,2 +1,40 @@
1
+ "use strict";
1
2
  "use client";
2
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useIsMobile:()=>useIsMobile});const external_use_media_query_cjs_namespaceObject=require("./use-media-query.cjs"),MOBILE_BREAKPOINT=768;function useIsMobile(){return(0,external_use_media_query_cjs_namespaceObject.useMediaQuery)("(max-width: 767px)")}for(var __webpack_i__ in exports.useIsMobile=__webpack_exports__.useIsMobile,__webpack_exports__)-1===["useIsMobile"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ useIsMobile: ()=>useIsMobile
29
+ });
30
+ const external_use_media_query_cjs_namespaceObject = require("./use-media-query.cjs");
31
+ function useIsMobile(mobileBreakpoint = 768) {
32
+ return (0, external_use_media_query_cjs_namespaceObject.useMediaQuery)(`(max-width: ${(mobileBreakpoint - 1).toString()}px)`);
33
+ }
34
+ exports.useIsMobile = __webpack_exports__.useIsMobile;
35
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
36
+ "useIsMobile"
37
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
38
+ Object.defineProperty(exports, '__esModule', {
39
+ value: true
40
+ });
@@ -1,10 +1,19 @@
1
1
  /**
2
- * Custom hook that determines if the current viewport is mobile-sized.
2
+ * Determine whether the current viewport should be treated as mobile.
3
3
  *
4
- * This hook uses the useMediaQuery hook to check if the screen width is less than
5
- * the defined mobile breakpoint (768px).
4
+ * Uses {@link useMediaQuery} to evaluate a max-width media query derived from the
5
+ * provided breakpoint. By default, widths below 768px are considered mobile.
6
6
  *
7
- * @returns A boolean indicating whether the current viewport is mobile-sized.
8
- * True if the screen width is less than 768px, false otherwise.
7
+ * @param mobileBreakpoint - Pixel width used as the mobile breakpoint. Values strictly
8
+ * less than this breakpoint are treated as mobile. Defaults to 768.
9
+ * @returns true when the viewport width is less than the given breakpoint; otherwise false.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const isMobile = useIsMobile();
14
+ * if (isMobile) {
15
+ * // Render compact layout
16
+ * }
17
+ * ```
9
18
  */
10
- export declare function useIsMobile(): boolean;
19
+ export declare function useIsMobile(mobileBreakpoint?: number): boolean;
@@ -1,2 +1,6 @@
1
1
  "use client";
2
- import{useMediaQuery as e}from"./use-media-query.js";function r(){return e("(max-width: 767px)")}export{r as useIsMobile};
2
+ import { useMediaQuery } from "./use-media-query.js";
3
+ function useIsMobile(mobileBreakpoint = 768) {
4
+ return useMediaQuery(`(max-width: ${(mobileBreakpoint - 1).toString()}px)`);
5
+ }
6
+ export { useIsMobile };
@@ -1,2 +1,57 @@
1
+ "use strict";
1
2
  "use client";
2
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useMediaQuery:()=>useMediaQuery});const external_react_namespaceObject=require("react");function useMediaQuery(e){let[_,r]=(0,external_react_namespaceObject.useState)(()=>"undefined"!=typeof globalThis&&"function"==typeof globalThis.matchMedia&&globalThis.matchMedia(e).matches);return(0,external_react_namespaceObject.useEffect)(()=>{if("undefined"==typeof globalThis)return;let _=globalThis.matchMedia(e),t=e=>{r(e.matches)};return _.addEventListener("change",t),()=>{_.removeEventListener("change",t)}},[e]),_}for(var __webpack_i__ in exports.useMediaQuery=__webpack_exports__.useMediaQuery,__webpack_exports__)-1===["useMediaQuery"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ useMediaQuery: ()=>useMediaQuery
29
+ });
30
+ const external_react_namespaceObject = require("react");
31
+ function useMediaQuery(query) {
32
+ const [matches, setMatches] = (0, external_react_namespaceObject.useState)(()=>{
33
+ if ("u" > typeof window && "function" == typeof window.matchMedia) return window.matchMedia(query).matches;
34
+ return false;
35
+ });
36
+ (0, external_react_namespaceObject.useEffect)(()=>{
37
+ if ("u" < typeof window) return;
38
+ const mediaQueryList = window.matchMedia(query);
39
+ const onChange = (event)=>{
40
+ setMatches(event.matches);
41
+ };
42
+ mediaQueryList.addEventListener("change", onChange);
43
+ return ()=>{
44
+ mediaQueryList.removeEventListener("change", onChange);
45
+ };
46
+ }, [
47
+ query
48
+ ]);
49
+ return matches;
50
+ }
51
+ exports.useMediaQuery = __webpack_exports__.useMediaQuery;
52
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
53
+ "useMediaQuery"
54
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
55
+ Object.defineProperty(exports, '__esModule', {
56
+ value: true
57
+ });
@@ -1,7 +1,15 @@
1
1
  /**
2
- * Custom hook to listen to CSS media query.
2
+ * Subscribe to a CSS media query and receive its match state.
3
3
  *
4
- * @param query - Media query string.
5
- * @returns Whether the media query matches or not.
4
+ * Evaluates the query immediately (when supported) and updates on changes
5
+ * via an event listener.
6
+ *
7
+ * @param query - A valid media query string (e.g., "(max-width: 768px)").
8
+ * @returns true when the media query currently matches; otherwise false.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * const isNarrow = useMediaQuery("(max-width: 768px)");
13
+ * ```
6
14
  */
7
15
  export declare function useMediaQuery(query: string): boolean;
@@ -1,2 +1,23 @@
1
1
  "use client";
2
- import{useEffect as e,useState as t}from"react";function a(a){let[i,n]=t(()=>"undefined"!=typeof globalThis&&"function"==typeof globalThis.matchMedia&&globalThis.matchMedia(a).matches);return e(()=>{if("undefined"==typeof globalThis)return;let e=globalThis.matchMedia(a),t=e=>{n(e.matches)};return e.addEventListener("change",t),()=>{e.removeEventListener("change",t)}},[a]),i}export{a as useMediaQuery};
2
+ import { useEffect, useState } from "react";
3
+ function useMediaQuery(query) {
4
+ const [matches, setMatches] = useState(()=>{
5
+ if ("u" > typeof window && "function" == typeof window.matchMedia) return window.matchMedia(query).matches;
6
+ return false;
7
+ });
8
+ useEffect(()=>{
9
+ if ("u" < typeof window) return;
10
+ const mediaQueryList = window.matchMedia(query);
11
+ const onChange = (event)=>{
12
+ setMatches(event.matches);
13
+ };
14
+ mediaQueryList.addEventListener("change", onChange);
15
+ return ()=>{
16
+ mediaQueryList.removeEventListener("change", onChange);
17
+ };
18
+ }, [
19
+ query
20
+ ]);
21
+ return matches;
22
+ }
23
+ export { useMediaQuery };
@@ -1,2 +1,57 @@
1
+ "use strict";
1
2
  "use client";
2
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useMutationObserver:()=>useMutationObserver});const external_react_namespaceObject=require("react"),defaultOptions={attributes:!0,characterData:!0,childList:!0,subtree:!0};function useMutationObserver(e,_,r=defaultOptions){(0,external_react_namespaceObject.useEffect)(()=>{if(!e.current)return;let t=new MutationObserver(_);return t.observe(e.current,r),()=>{t.disconnect()}},[e,_,r])}for(var __webpack_i__ in exports.useMutationObserver=__webpack_exports__.useMutationObserver,__webpack_exports__)-1===["useMutationObserver"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ useMutationObserver: ()=>useMutationObserver
29
+ });
30
+ const external_react_namespaceObject = require("react");
31
+ const defaultOptions = {
32
+ attributes: true,
33
+ characterData: true,
34
+ childList: true,
35
+ subtree: true
36
+ };
37
+ function useMutationObserver(ref, callback, options = defaultOptions) {
38
+ (0, external_react_namespaceObject.useEffect)(()=>{
39
+ if (!ref.current) return;
40
+ const observer = new MutationObserver(callback);
41
+ observer.observe(ref.current, options);
42
+ return ()=>{
43
+ observer.disconnect();
44
+ };
45
+ }, [
46
+ ref,
47
+ callback,
48
+ options
49
+ ]);
50
+ }
51
+ exports.useMutationObserver = __webpack_exports__.useMutationObserver;
52
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
53
+ "useMutationObserver"
54
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
55
+ Object.defineProperty(exports, '__esModule', {
56
+ value: true
57
+ });
@@ -1,18 +1,14 @@
1
1
  import type { RefObject } from "react";
2
2
  /**
3
- * Attaches a MutationObserver to a given HTMLElement and invokes a callback
4
- * function when mutations occur in the observed elements.
3
+ * Observe DOM mutations on a referenced element and invoke a callback.
5
4
  *
6
- * @param ref - The mutable reference to the HTMLElement to be observed for mutations
7
- * @param callback - The function to be called when mutations are detected
8
- * @param options - Configuration options for the MutationObserver, defaults to watching all changes
9
- * @returns void
5
+ * Attaches a MutationObserver to the provided element reference with the given
6
+ * options and calls the callback whenever mutations occur.
10
7
  *
11
- * @remarks
12
- * This function is a React hook that attaches a MutationObserver to a given
13
- * HTMLElement. The MutationObserver listens for mutations in the observed
14
- * element and its descendants and invokes the provided callback function
15
- * when mutations occur.
8
+ * @param ref - Ref to the target HTMLElement to observe.
9
+ * @param callback - Mutation callback invoked with observed records.
10
+ * @param options - Observer configuration. Defaults watch attributes, characterData, childList, subtree.
11
+ * @returns void
16
12
  *
17
13
  * @see [MutationObserver](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)
18
14
  */
@@ -1,2 +1,23 @@
1
1
  "use client";
2
- import{useEffect as t}from"react";let e={attributes:!0,characterData:!0,childList:!0,subtree:!0};function r(n,u,c=e){t(()=>{if(!n.current)return;let t=new MutationObserver(u);return t.observe(n.current,c),()=>{t.disconnect()}},[n,u,c])}export{r as useMutationObserver};
2
+ import { useEffect } from "react";
3
+ const defaultOptions = {
4
+ attributes: true,
5
+ characterData: true,
6
+ childList: true,
7
+ subtree: true
8
+ };
9
+ function useMutationObserver(ref, callback, options = defaultOptions) {
10
+ useEffect(()=>{
11
+ if (!ref.current) return;
12
+ const observer = new MutationObserver(callback);
13
+ observer.observe(ref.current, options);
14
+ return ()=>{
15
+ observer.disconnect();
16
+ };
17
+ }, [
18
+ ref,
19
+ callback,
20
+ options
21
+ ]);
22
+ }
23
+ export { useMutationObserver };
@@ -1,2 +1,93 @@
1
+ "use strict";
1
2
  "use client";
2
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ELLIPSIS:()=>ELLIPSIS,usePagination:()=>usePagination});const external_react_namespaceObject=require("react"),ELLIPSIS="•••",createRange=(e,_)=>Array.from({length:_-e+1},(_,r)=>e+r);function usePagination({currentPage:e,resultsPerPage:_,siblingPagesCount:r=1,totalResults:t}){return(0,external_react_namespaceObject.useMemo)(()=>{let a=Math.ceil(t/Math.floor(_));if(a<=0)return[];if(r+5>=a)return createRange(1,a);let n=Math.max(e-r,1),c=Math.min(e+r,a),o=n>2,i=c<a-2;return!o&&i?[...createRange(1,3+2*r),ELLIPSIS,a]:o&&!i?[1,ELLIPSIS,...createRange(a-(3+2*r)+1,a)]:o&&i?[1,ELLIPSIS,...createRange(n,c),ELLIPSIS,a]:[]},[t,_,r,e])}for(var __webpack_i__ in exports.ELLIPSIS=__webpack_exports__.ELLIPSIS,exports.usePagination=__webpack_exports__.usePagination,__webpack_exports__)-1===["ELLIPSIS","usePagination"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ ELLIPSIS: ()=>ELLIPSIS,
29
+ usePagination: ()=>usePagination
30
+ });
31
+ const external_react_namespaceObject = require("react");
32
+ const ELLIPSIS = "•••";
33
+ const createRange = (start, end)=>{
34
+ const length = end - start + 1;
35
+ return Array.from({
36
+ length
37
+ }, (_, index)=>start + index);
38
+ };
39
+ function usePagination({ currentPage, resultsPerPage, siblingPagesCount = 1, totalResults }) {
40
+ return (0, external_react_namespaceObject.useMemo)(()=>{
41
+ const totalPages = Math.ceil(totalResults / Math.floor(resultsPerPage));
42
+ if (totalPages <= 0) return [];
43
+ const visiblePageNumbers = siblingPagesCount + 5;
44
+ if (visiblePageNumbers >= totalPages) return createRange(1, totalPages);
45
+ const leftSiblingIndex = Math.max(currentPage - siblingPagesCount, 1);
46
+ const rightSiblingIndex = Math.min(currentPage + siblingPagesCount, totalPages);
47
+ const shouldShowLeftEllipsis = leftSiblingIndex > 2;
48
+ const shouldShowRightEllipsis = rightSiblingIndex < totalPages - 2;
49
+ const firstPage = 1;
50
+ const lastPage = totalPages;
51
+ if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {
52
+ const leftRange = createRange(1, 3 + 2 * siblingPagesCount);
53
+ return [
54
+ ...leftRange,
55
+ ELLIPSIS,
56
+ lastPage
57
+ ];
58
+ }
59
+ if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {
60
+ const rightRange = createRange(totalPages - (3 + 2 * siblingPagesCount) + 1, totalPages);
61
+ return [
62
+ firstPage,
63
+ ELLIPSIS,
64
+ ...rightRange
65
+ ];
66
+ }
67
+ if (shouldShowLeftEllipsis && shouldShowRightEllipsis) {
68
+ const middleRange = createRange(leftSiblingIndex, rightSiblingIndex);
69
+ return [
70
+ firstPage,
71
+ ELLIPSIS,
72
+ ...middleRange,
73
+ ELLIPSIS,
74
+ lastPage
75
+ ];
76
+ }
77
+ return [];
78
+ }, [
79
+ totalResults,
80
+ resultsPerPage,
81
+ siblingPagesCount,
82
+ currentPage
83
+ ]);
84
+ }
85
+ exports.ELLIPSIS = __webpack_exports__.ELLIPSIS;
86
+ exports.usePagination = __webpack_exports__.usePagination;
87
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
88
+ "ELLIPSIS",
89
+ "usePagination"
90
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
91
+ Object.defineProperty(exports, '__esModule', {
92
+ value: true
93
+ });
@@ -1,25 +1,27 @@
1
1
  export interface UsePaginationProps {
2
- /** The current active page number */
2
+ /** Current active page number. */
3
3
  currentPage: number;
4
- /** The number of results to display per page */
4
+ /** Number of results displayed per page. */
5
5
  resultsPerPage: number;
6
6
  /**
7
- * The number of sibling pages to display on either side of the current page.
7
+ * Number of sibling pages to show on each side of the current page.
8
8
  * Defaults to 1.
9
9
  */
10
10
  siblingPagesCount?: number;
11
- /** The total number of results across all pages */
11
+ /** Total number of results across all pages. */
12
12
  totalResults: number;
13
13
  }
14
- /** Constant representing the ellipsis ("...") used in pagination */
14
+ /** Ellipsis marker used to collapse ranges in pagination output. */
15
15
  export declare const ELLIPSIS = "\u2022\u2022\u2022";
16
16
  /**
17
- * A custom hook that calculates the pagination logic for a given set of
18
- * results.
17
+ * Compute a pagination structure for result sets.
19
18
  *
20
- * @param props - An object containing the pagination properties
21
- * @returns An array representing the pagination structure, which includes page
22
- * numbers and ellipsis indicators
19
+ * Returns a mixed array of page numbers and the `ELLIPSIS` marker representing
20
+ * collapsed ranges. The shape adapts to the total pages and the requested
21
+ * sibling window around the current page.
22
+ *
23
+ * @param props - Pagination options. See {@link UsePaginationProps}.
24
+ * @returns Array of page numbers and `ELLIPSIS` representing the pagination model.
23
25
  *
24
26
  * @example
25
27
  * ```tsx
@@ -1,2 +1,56 @@
1
1
  "use client";
2
- import{useMemo as t}from"react";let r="•••",e=(t,r)=>Array.from({length:r-t+1},(r,e)=>t+e);function n({currentPage:n,resultsPerPage:a,siblingPagesCount:i=1,totalResults:o}){return t(()=>{let t=Math.ceil(o/Math.floor(a));if(t<=0)return[];if(i+5>=t)return e(1,t);let f=Math.max(n-i,1),l=Math.min(n+i,t),u=f>2,h=l<t-2;return!u&&h?[...e(1,3+2*i),r,t]:u&&!h?[1,r,...e(t-(3+2*i)+1,t)]:u&&h?[1,r,...e(f,l),r,t]:[]},[o,a,i,n])}export{r as ELLIPSIS,n as usePagination};
2
+ import { useMemo } from "react";
3
+ const ELLIPSIS = "•••";
4
+ const createRange = (start, end)=>{
5
+ const length = end - start + 1;
6
+ return Array.from({
7
+ length
8
+ }, (_, index)=>start + index);
9
+ };
10
+ function usePagination({ currentPage, resultsPerPage, siblingPagesCount = 1, totalResults }) {
11
+ return useMemo(()=>{
12
+ const totalPages = Math.ceil(totalResults / Math.floor(resultsPerPage));
13
+ if (totalPages <= 0) return [];
14
+ const visiblePageNumbers = siblingPagesCount + 5;
15
+ if (visiblePageNumbers >= totalPages) return createRange(1, totalPages);
16
+ const leftSiblingIndex = Math.max(currentPage - siblingPagesCount, 1);
17
+ const rightSiblingIndex = Math.min(currentPage + siblingPagesCount, totalPages);
18
+ const shouldShowLeftEllipsis = leftSiblingIndex > 2;
19
+ const shouldShowRightEllipsis = rightSiblingIndex < totalPages - 2;
20
+ const firstPage = 1;
21
+ const lastPage = totalPages;
22
+ if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {
23
+ const leftRange = createRange(1, 3 + 2 * siblingPagesCount);
24
+ return [
25
+ ...leftRange,
26
+ ELLIPSIS,
27
+ lastPage
28
+ ];
29
+ }
30
+ if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {
31
+ const rightRange = createRange(totalPages - (3 + 2 * siblingPagesCount) + 1, totalPages);
32
+ return [
33
+ firstPage,
34
+ ELLIPSIS,
35
+ ...rightRange
36
+ ];
37
+ }
38
+ if (shouldShowLeftEllipsis && shouldShowRightEllipsis) {
39
+ const middleRange = createRange(leftSiblingIndex, rightSiblingIndex);
40
+ return [
41
+ firstPage,
42
+ ELLIPSIS,
43
+ ...middleRange,
44
+ ELLIPSIS,
45
+ lastPage
46
+ ];
47
+ }
48
+ return [];
49
+ }, [
50
+ totalResults,
51
+ resultsPerPage,
52
+ siblingPagesCount,
53
+ currentPage
54
+ ]);
55
+ }
56
+ export { ELLIPSIS, usePagination };