next-data-kit 0.0.1 → 1.0.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 (113) hide show
  1. package/README.md +52 -0
  2. package/dist/client/components/data-kit-table.d.ts.map +1 -0
  3. package/dist/client/components/data-kit-table.js +134 -0
  4. package/dist/client/components/data-kit-table.js.map +1 -0
  5. package/dist/client/components/data-kit.d.ts +3 -2
  6. package/dist/client/components/data-kit.d.ts.map +1 -0
  7. package/dist/client/components/data-kit.js +74 -0
  8. package/dist/client/components/data-kit.js.map +1 -0
  9. package/dist/client/components/index.d.ts.map +1 -0
  10. package/dist/client/components/index.js +3 -0
  11. package/dist/client/components/index.js.map +1 -0
  12. package/dist/client/components/ui/button.d.ts.map +1 -0
  13. package/dist/client/components/ui/button.js +36 -0
  14. package/dist/client/components/ui/button.js.map +1 -0
  15. package/dist/client/components/ui/checkbox.d.ts.map +1 -0
  16. package/dist/client/components/ui/checkbox.js +10 -0
  17. package/dist/client/components/ui/checkbox.js.map +1 -0
  18. package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -0
  19. package/dist/client/components/ui/dropdown-menu.js +52 -0
  20. package/dist/client/components/ui/dropdown-menu.js.map +1 -0
  21. package/dist/client/components/ui/index.d.ts.map +1 -0
  22. package/dist/client/components/ui/index.js +9 -0
  23. package/dist/client/components/ui/index.js.map +1 -0
  24. package/dist/client/components/ui/pagination.d.ts.map +1 -0
  25. package/dist/client/components/ui/pagination.js +31 -0
  26. package/dist/client/components/ui/pagination.js.map +1 -0
  27. package/dist/client/components/ui/popover.d.ts.map +1 -0
  28. package/dist/client/components/ui/popover.js +18 -0
  29. package/dist/client/components/ui/popover.js.map +1 -0
  30. package/dist/client/components/ui/select.d.ts.map +1 -0
  31. package/dist/client/components/ui/select.js +39 -0
  32. package/dist/client/components/ui/select.js.map +1 -0
  33. package/dist/client/components/ui/switch.d.ts.map +1 -0
  34. package/dist/client/components/ui/switch.js +9 -0
  35. package/dist/client/components/ui/switch.js.map +1 -0
  36. package/dist/client/components/ui/table.d.ts.map +1 -0
  37. package/dist/client/components/ui/table.js +29 -0
  38. package/dist/client/components/ui/table.js.map +1 -0
  39. package/dist/client/context/index.d.ts +2 -2
  40. package/dist/client/context/index.d.ts.map +1 -0
  41. package/dist/client/context/index.js +34 -0
  42. package/dist/client/context/index.js.map +1 -0
  43. package/dist/client/hooks/index.d.ts +1 -1
  44. package/dist/client/hooks/index.d.ts.map +1 -0
  45. package/dist/client/hooks/index.js +7 -0
  46. package/dist/client/hooks/index.js.map +1 -0
  47. package/dist/client/hooks/useDataKit.d.ts +2 -2
  48. package/dist/client/hooks/useDataKit.d.ts.map +1 -0
  49. package/dist/client/hooks/useDataKit.js +252 -0
  50. package/dist/client/hooks/useDataKit.js.map +1 -0
  51. package/dist/client/hooks/usePagination.d.ts +1 -1
  52. package/dist/client/hooks/usePagination.d.ts.map +1 -0
  53. package/dist/client/hooks/usePagination.js +57 -0
  54. package/dist/client/hooks/usePagination.js.map +1 -0
  55. package/dist/client/hooks/useSelection.d.ts +1 -1
  56. package/dist/client/hooks/useSelection.d.ts.map +1 -0
  57. package/dist/client/hooks/useSelection.js +99 -0
  58. package/dist/client/hooks/useSelection.js.map +1 -0
  59. package/dist/client/index.d.ts +2 -2
  60. package/dist/client/index.d.ts.map +1 -0
  61. package/dist/client/index.js +15 -0
  62. package/dist/client/index.js.map +1 -0
  63. package/dist/client/utils/cn.d.ts.map +1 -0
  64. package/dist/client/utils/cn.js +22 -0
  65. package/dist/client/utils/cn.js.map +1 -0
  66. package/dist/client/utils/index.d.ts +1 -1
  67. package/dist/client/utils/index.d.ts.map +1 -0
  68. package/dist/client/utils/index.js +148 -0
  69. package/dist/client/utils/index.js.map +1 -0
  70. package/dist/client.d.ts +2 -2
  71. package/dist/client.d.ts.map +1 -0
  72. package/dist/client.js +8 -0
  73. package/dist/client.js.map +1 -0
  74. package/dist/index.cjs +1571 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.d.cts +27 -21
  77. package/dist/index.d.ts +27 -21
  78. package/dist/index.js +1523 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/{react-data-kit-DmTzxNTc.d.cts → next-data-kit-DmZ7pNHV.d.cts} +4 -4
  81. package/dist/{react-data-kit-DmTzxNTc.d.ts → next-data-kit-DmZ7pNHV.d.ts} +4 -4
  82. package/dist/server.cjs +19 -0
  83. package/dist/server.cjs.map +1 -1
  84. package/dist/server.d.cts +62 -7
  85. package/dist/server.d.ts +62 -7
  86. package/dist/server.js +19 -1
  87. package/dist/server.js.map +1 -1
  88. package/dist/types/component.d.ts +8 -2
  89. package/dist/types/component.d.ts.map +1 -0
  90. package/dist/types/component.js +7 -0
  91. package/dist/types/component.js.map +1 -0
  92. package/dist/types/database/mongo.d.ts +1 -1
  93. package/dist/types/database/mongo.d.ts.map +1 -0
  94. package/dist/types/database/mongo.js +8 -0
  95. package/dist/types/database/mongo.js.map +1 -0
  96. package/dist/types/hook.d.ts +5 -5
  97. package/dist/types/hook.d.ts.map +1 -0
  98. package/dist/types/hook.js +7 -0
  99. package/dist/types/hook.js.map +1 -0
  100. package/dist/types/index.d.cts +14 -9
  101. package/dist/types/index.d.ts +3 -3
  102. package/dist/types/index.d.ts.map +1 -0
  103. package/dist/types/index.js +6 -12
  104. package/dist/types/index.js.map +1 -1
  105. package/dist/types/{react-data-kit.d.ts → next-data-kit.d.ts} +4 -4
  106. package/dist/types/next-data-kit.d.ts.map +1 -0
  107. package/dist/types/next-data-kit.js +17 -0
  108. package/dist/types/next-data-kit.js.map +1 -0
  109. package/dist/types/selectable.d.ts +1 -1
  110. package/dist/types/selectable.d.ts.map +1 -0
  111. package/dist/types/selectable.js +7 -0
  112. package/dist/types/selectable.js.map +1 -0
  113. package/package.json +2 -2
@@ -0,0 +1,99 @@
1
+ /**
2
+ * next-data-kit - useSelection Hook
3
+ *
4
+ * React hook for managing table row selection.
5
+ */
6
+ 'use client';
7
+ import { useState, useCallback, useMemo } from 'react';
8
+ // ** ============================================================================
9
+ // ** Hook
10
+ // ** ============================================================================
11
+ export const useSelection = (initialSelected = []) => {
12
+ // ** State
13
+ const [selectedIds, setSelectedIds] = useState(new Set(initialSelected));
14
+ // ** Select a single item
15
+ const select = useCallback((id) => {
16
+ setSelectedIds((prev) => new Set(prev).add(id));
17
+ }, []);
18
+ // ** Deselect a single item
19
+ const deselect = useCallback((id) => {
20
+ setSelectedIds((prev) => {
21
+ const next = new Set(prev);
22
+ next.delete(id);
23
+ return next;
24
+ });
25
+ }, []);
26
+ // ** Toggle selection of a single item
27
+ const toggle = useCallback((id) => {
28
+ setSelectedIds((prev) => {
29
+ const next = new Set(prev);
30
+ if (next.has(id))
31
+ next.delete(id);
32
+ else
33
+ next.add(id);
34
+ return next;
35
+ });
36
+ }, []);
37
+ // ** Select all items
38
+ const selectAll = useCallback((ids) => {
39
+ setSelectedIds(new Set(ids));
40
+ }, []);
41
+ // ** Deselect all items
42
+ const deselectAll = useCallback(() => {
43
+ setSelectedIds(new Set());
44
+ }, []);
45
+ // ** Toggle all items selection
46
+ const toggleAll = useCallback((ids) => {
47
+ setSelectedIds((prev) => {
48
+ // ** If all are selected, deselect all
49
+ if (ids.every((id) => prev.has(id)))
50
+ return new Set();
51
+ // ** Otherwise, select all
52
+ return new Set(ids);
53
+ });
54
+ }, []);
55
+ // ** Check if an item is selected
56
+ const isSelected = useCallback((id) => selectedIds.has(id), [selectedIds]);
57
+ // ** Get array of selected IDs
58
+ const getSelectedArray = useCallback(() => Array.from(selectedIds), [selectedIds]);
59
+ // ** Calculate derived state
60
+ const isAllSelected = useMemo(() => selectedIds.size > 0, [selectedIds.size]);
61
+ const isIndeterminate = useMemo(() => false, []);
62
+ return {
63
+ selectedIds,
64
+ isAllSelected,
65
+ isIndeterminate,
66
+ select,
67
+ deselect,
68
+ toggle,
69
+ selectAll,
70
+ deselectAll,
71
+ toggleAll,
72
+ isSelected,
73
+ getSelectedArray,
74
+ };
75
+ };
76
+ // ** ============================================================================
77
+ // ** Hook with Total
78
+ // ** ============================================================================
79
+ export const useSelectionWithTotal = (totalItems, initialSelected = []) => {
80
+ // ** Base selection hook
81
+ const selection = useSelection(initialSelected);
82
+ // ** Calculate derived state
83
+ const isAllSelected = useMemo(() => totalItems.length > 0 && totalItems.every((id) => selection.selectedIds.has(id)), [totalItems, selection.selectedIds]);
84
+ const isIndeterminate = useMemo(() => selection.selectedIds.size > 0 && selection.selectedIds.size < totalItems.length, [totalItems.length, selection.selectedIds.size]);
85
+ // ** Override toggleAll to use totalItems
86
+ const toggleAll = useCallback(() => {
87
+ if (isAllSelected)
88
+ selection.deselectAll();
89
+ else
90
+ selection.selectAll(totalItems);
91
+ }, [isAllSelected, selection, totalItems]);
92
+ return {
93
+ ...selection,
94
+ isAllSelected,
95
+ isIndeterminate,
96
+ toggleAll,
97
+ };
98
+ };
99
+ //# sourceMappingURL=useSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSelection.js","sourceRoot":"","sources":["../../../src/client/hooks/useSelection.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * react-data-kit - Client Exports
2
+ * next-data-kit - Client Exports
3
3
  *
4
- * Client-side utilities, hooks, and components for react-data-kit.
4
+ * Client-side utilities, hooks, and components for next-data-kit.
5
5
  */
6
6
  export { useDataKit, useSelection, useSelectionWithTotal, usePagination, type TDataKitControllerOptions, type TUsePaginationReturn, } from './hooks';
7
7
  export { createDataKitContext, DataKitProvider, useDataKitContext, DataKitContext, type TDataKitContextValue, } from './context';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACF,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GAC7B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACF,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,KAAK,oBAAoB,GAC7B,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EACF,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,GACpB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,WAAW,EAEX,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,GACrB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * next-data-kit - Client Exports
3
+ *
4
+ * Client-side utilities, hooks, and components for next-data-kit.
5
+ */
6
+ 'use client';
7
+ // ** Hooks
8
+ export { useDataKit, useSelection, useSelectionWithTotal, usePagination, } from './hooks';
9
+ // ** Context
10
+ export { createDataKitContext, DataKitProvider, useDataKitContext, DataKitContext, } from './context';
11
+ // ** Components
12
+ export { DataKitTable, DataKit } from './components';
13
+ // ** Utilities
14
+ export { getColumnValue, getSortValue, getNextSortValue, formatNumber, debounce, throttle, sortEntriesToKey, keyToSortEntries, } from './utils';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;AAEb,WAAW;AACX,OAAO,EACF,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,GAGjB,MAAM,SAAS,CAAC;AAEjB,aAAa;AACb,OAAO,EACF,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,cAAc,GAElB,MAAM,WAAW,CAAC;AAEnB,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAErD,eAAe;AACf,OAAO,EACF,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../src/client/utils/cn.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AACnE,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAClE,KAAK,UAAU,GAAG,UAAU,EAAE,CAAC;AAC/B,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,UAAU,CAAC;AAqBvE;;GAEG;AACH,eAAO,MAAM,EAAE,GAAI,GAAG,QAAQ,UAAU,EAAE,KAAG,MAA6D,CAAC"}
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ const toClassString = (input) => {
3
+ if (!input)
4
+ return '';
5
+ if (typeof input === 'string' || typeof input === 'number')
6
+ return String(input);
7
+ if (Array.isArray(input)) {
8
+ return input.map(toClassString).filter(Boolean).join(' ');
9
+ }
10
+ if (typeof input === 'object') {
11
+ return Object.entries(input)
12
+ .filter(([, value]) => Boolean(value))
13
+ .map(([key]) => key)
14
+ .join(' ');
15
+ }
16
+ return '';
17
+ };
18
+ /**
19
+ * Minimal `cn` helper (shadcn-style) without external deps.
20
+ */
21
+ export const cn = (...inputs) => inputs.map(toClassString).filter(Boolean).join(' ');
22
+ //# sourceMappingURL=cn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.js","sourceRoot":"","sources":["../../../src/client/utils/cn.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAOb,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAU,EAAE;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aACnB,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAoB,EAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-data-kit - Utility Functions
2
+ * next-data-kit - Utility Functions
3
3
  *
4
4
  * Helper utilities for client-side operations.
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAM3C;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,cAAc,CAAC,CAAC,CAAC,KAAG,OAGtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,EAAE,EAAE,MAAM,MAAM,KAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAGzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAIlE,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAA8B,CAAC;AAM1E;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAC7D,IAAI,CAAC,EACL,OAAO,MAAM,KACf,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAC7D,IAAI,CAAC,EACL,OAAO,MAAM,KACf,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CASnC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,UAAU,EAAE,KAAG,MACA,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,UAAU,EAMxD,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA8BpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,KAAG,eAwBH,CAAC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * next-data-kit - Utility Functions
3
+ *
4
+ * Helper utilities for client-side operations.
5
+ */
6
+ export { cn } from './cn';
7
+ // ** ============================================================================
8
+ // ** Column Utilities
9
+ // ** ============================================================================
10
+ /**
11
+ * Get the value from an item using a column accessor
12
+ */
13
+ export const getColumnValue = (item, column) => {
14
+ const { accessor } = column;
15
+ return typeof accessor === 'function' ? accessor(item) : item[accessor];
16
+ };
17
+ /**
18
+ * Get the sort value for a column
19
+ */
20
+ export const getSortValue = (sorts, path) => {
21
+ const sort = sorts.find((s) => s.path === path);
22
+ return sort?.value ?? null;
23
+ };
24
+ /**
25
+ * Get the next sort value in the cycle: null -> 1 -> -1 -> null
26
+ */
27
+ export const getNextSortValue = (current) => {
28
+ if (current === null)
29
+ return 1;
30
+ if (current === 1)
31
+ return -1;
32
+ return null;
33
+ };
34
+ // ** ============================================================================
35
+ // ** Formatting Utilities
36
+ // ** ============================================================================
37
+ /**
38
+ * Format a number with commas
39
+ */
40
+ export const formatNumber = (num) => num.toLocaleString();
41
+ // ** ============================================================================
42
+ // ** Function Utilities
43
+ // ** ============================================================================
44
+ /**
45
+ * Debounce a function
46
+ */
47
+ export const debounce = (fn, delay) => {
48
+ let timeoutId;
49
+ return (...args) => {
50
+ clearTimeout(timeoutId);
51
+ timeoutId = setTimeout(() => fn(...args), delay);
52
+ };
53
+ };
54
+ /**
55
+ * Throttle a function
56
+ */
57
+ export const throttle = (fn, limit) => {
58
+ let inThrottle = false;
59
+ return (...args) => {
60
+ if (!inThrottle) {
61
+ fn(...args);
62
+ inThrottle = true;
63
+ setTimeout(() => { inThrottle = false; }, limit);
64
+ }
65
+ };
66
+ };
67
+ // ** ============================================================================
68
+ // ** Sort Entry Utilities
69
+ // ** ============================================================================
70
+ /**
71
+ * Create a stable object key from sort entries
72
+ */
73
+ export const sortEntriesToKey = (sorts) => sorts.map((s) => `${s.path}:${s.value}`).join(',');
74
+ /**
75
+ * Parse a sort key back to sort entries
76
+ */
77
+ export const keyToSortEntries = (key) => {
78
+ if (!key)
79
+ return [];
80
+ return key.split(',').map((part) => {
81
+ const [path, value] = part.split(':');
82
+ return { path: path ?? '', value: parseInt(value ?? '1', 10) };
83
+ });
84
+ };
85
+ // ** ============================================================================
86
+ // ** URL State Utilities
87
+ // ** ============================================================================
88
+ /**
89
+ * Parse URL search params into tabler state
90
+ */
91
+ export const parseUrlParams = (search) => {
92
+ const params = new URLSearchParams(search);
93
+ const state = {};
94
+ // ** Page
95
+ const page = params.get('page');
96
+ if (page)
97
+ state.page = parseInt(page, 10);
98
+ // ** Limit
99
+ const limit = params.get('limit');
100
+ if (limit)
101
+ state.limit = parseInt(limit, 10);
102
+ // ** Sorts
103
+ const sort = params.get('sort');
104
+ if (sort)
105
+ state.sorts = keyToSortEntries(sort);
106
+ // ** Filter (f_key) and Query (q_key)
107
+ const filter = {};
108
+ const query = {};
109
+ params.forEach((value, key) => {
110
+ if (key.startsWith('f_'))
111
+ filter[key.slice(2)] = value;
112
+ else if (key.startsWith('q_'))
113
+ query[key.slice(2)] = value;
114
+ });
115
+ if (Object.keys(filter).length > 0)
116
+ state.filter = filter;
117
+ if (Object.keys(query).length > 0)
118
+ state.query = query;
119
+ return state;
120
+ };
121
+ /**
122
+ * Convert tabler state to URL search params
123
+ */
124
+ export const stateToUrlParams = (state) => {
125
+ const params = new URLSearchParams();
126
+ if (state.page && state.page > 1)
127
+ params.set('page', state.page.toString());
128
+ if (state.limit)
129
+ params.set('limit', state.limit.toString());
130
+ if (state.sorts && state.sorts.length > 0)
131
+ params.set('sort', sortEntriesToKey(state.sorts));
132
+ if (state.filter) {
133
+ Object.entries(state.filter).forEach(([key, value]) => {
134
+ if (value !== undefined && value !== null && value !== '') {
135
+ params.set(`f_${key}`, String(value));
136
+ }
137
+ });
138
+ }
139
+ if (state.query) {
140
+ Object.entries(state.query).forEach(([key, value]) => {
141
+ if (value !== undefined && value !== null && value !== '') {
142
+ params.set(`q_${key}`, String(value));
143
+ }
144
+ });
145
+ }
146
+ return params;
147
+ };
148
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/utils/index.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * react-data-kit/client
2
+ * next-data-kit/client
3
3
  *
4
- * Client-side entry point for react-data-kit.
4
+ * Client-side entry point for next-data-kit.
5
5
  */
6
6
  export * from './client/index';
7
7
  //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,cAAc,gBAAgB,CAAC"}
package/dist/client.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * next-data-kit/client
3
+ *
4
+ * Client-side entry point for next-data-kit.
5
+ */
6
+ 'use client';
7
+ export * from './client/index';
8
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;AAEb,cAAc,gBAAgB,CAAC"}