@a5it/sync-ui 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 (159) hide show
  1. package/README.md +45 -0
  2. package/dist/components/data-table/actions/action-delete.d.ts +8 -0
  3. package/dist/components/data-table/actions/action-delete.d.ts.map +1 -0
  4. package/dist/components/data-table/actions/action-delete.js +17 -0
  5. package/dist/components/data-table/actions/action-delete.js.map +1 -0
  6. package/dist/components/data-table/actions/action-item.d.ts +7 -0
  7. package/dist/components/data-table/actions/action-item.d.ts.map +1 -0
  8. package/dist/components/data-table/actions/action-item.js +7 -0
  9. package/dist/components/data-table/actions/action-item.js.map +1 -0
  10. package/dist/components/data-table/actions/actions-dropdown.d.ts +8 -0
  11. package/dist/components/data-table/actions/actions-dropdown.d.ts.map +1 -0
  12. package/dist/components/data-table/actions/actions-dropdown.js +9 -0
  13. package/dist/components/data-table/actions/actions-dropdown.js.map +1 -0
  14. package/dist/components/data-table/cells/date-time-cell.d.ts +16 -0
  15. package/dist/components/data-table/cells/date-time-cell.d.ts.map +1 -0
  16. package/dist/components/data-table/cells/date-time-cell.js +32 -0
  17. package/dist/components/data-table/cells/date-time-cell.js.map +1 -0
  18. package/dist/components/data-table/cells/payment-pill.d.ts +7 -0
  19. package/dist/components/data-table/cells/payment-pill.d.ts.map +1 -0
  20. package/dist/components/data-table/cells/payment-pill.js +23 -0
  21. package/dist/components/data-table/cells/payment-pill.js.map +1 -0
  22. package/dist/components/data-table/cells/record-id-cell.d.ts +7 -0
  23. package/dist/components/data-table/cells/record-id-cell.d.ts.map +1 -0
  24. package/dist/components/data-table/cells/record-id-cell.js +7 -0
  25. package/dist/components/data-table/cells/record-id-cell.js.map +1 -0
  26. package/dist/components/data-table/cells/status-pill.d.ts +6 -0
  27. package/dist/components/data-table/cells/status-pill.d.ts.map +1 -0
  28. package/dist/components/data-table/cells/status-pill.js +67 -0
  29. package/dist/components/data-table/cells/status-pill.js.map +1 -0
  30. package/dist/components/data-table/cells/table-checkbox.d.ts +4 -0
  31. package/dist/components/data-table/cells/table-checkbox.d.ts.map +1 -0
  32. package/dist/components/data-table/cells/table-checkbox.js +9 -0
  33. package/dist/components/data-table/cells/table-checkbox.js.map +1 -0
  34. package/dist/components/data-table/cells/text-cell.d.ts +8 -0
  35. package/dist/components/data-table/cells/text-cell.d.ts.map +1 -0
  36. package/dist/components/data-table/cells/text-cell.js +7 -0
  37. package/dist/components/data-table/cells/text-cell.js.map +1 -0
  38. package/dist/components/data-table/column-header.d.ts +10 -0
  39. package/dist/components/data-table/column-header.d.ts.map +1 -0
  40. package/dist/components/data-table/column-header.js +42 -0
  41. package/dist/components/data-table/column-header.js.map +1 -0
  42. package/dist/components/data-table/columns/selection.d.ts +4 -0
  43. package/dist/components/data-table/columns/selection.d.ts.map +1 -0
  44. package/dist/components/data-table/columns/selection.js +33 -0
  45. package/dist/components/data-table/columns/selection.js.map +1 -0
  46. package/dist/components/data-table/filters/all-filters.d.ts +11 -0
  47. package/dist/components/data-table/filters/all-filters.d.ts.map +1 -0
  48. package/dist/components/data-table/filters/all-filters.js +9 -0
  49. package/dist/components/data-table/filters/all-filters.js.map +1 -0
  50. package/dist/components/data-table/filters/bulk-delete.d.ts +16 -0
  51. package/dist/components/data-table/filters/bulk-delete.d.ts.map +1 -0
  52. package/dist/components/data-table/filters/bulk-delete.js +20 -0
  53. package/dist/components/data-table/filters/bulk-delete.js.map +1 -0
  54. package/dist/components/data-table/filters/filters.d.ts +4 -0
  55. package/dist/components/data-table/filters/filters.d.ts.map +1 -0
  56. package/dist/components/data-table/filters/filters.js +10 -0
  57. package/dist/components/data-table/filters/filters.js.map +1 -0
  58. package/dist/components/data-table/filters/reset.d.ts +21 -0
  59. package/dist/components/data-table/filters/reset.d.ts.map +1 -0
  60. package/dist/components/data-table/filters/reset.js +34 -0
  61. package/dist/components/data-table/filters/reset.js.map +1 -0
  62. package/dist/components/data-table/filters/search.d.ts +25 -0
  63. package/dist/components/data-table/filters/search.d.ts.map +1 -0
  64. package/dist/components/data-table/filters/search.js +89 -0
  65. package/dist/components/data-table/filters/search.js.map +1 -0
  66. package/dist/components/data-table/filters/sort-by.d.ts +7 -0
  67. package/dist/components/data-table/filters/sort-by.d.ts.map +1 -0
  68. package/dist/components/data-table/filters/sort-by.js +76 -0
  69. package/dist/components/data-table/filters/sort-by.js.map +1 -0
  70. package/dist/components/data-table/index.d.ts +26 -0
  71. package/dist/components/data-table/index.d.ts.map +1 -0
  72. package/dist/components/data-table/index.js +24 -0
  73. package/dist/components/data-table/index.js.map +1 -0
  74. package/dist/components/data-table/pagination/pagination.d.ts +66 -0
  75. package/dist/components/data-table/pagination/pagination.d.ts.map +1 -0
  76. package/dist/components/data-table/pagination/pagination.js +224 -0
  77. package/dist/components/data-table/pagination/pagination.js.map +1 -0
  78. package/dist/components/data-table/provider.d.ts +284 -0
  79. package/dist/components/data-table/provider.d.ts.map +1 -0
  80. package/dist/components/data-table/provider.js +193 -0
  81. package/dist/components/data-table/provider.js.map +1 -0
  82. package/dist/components/data-table/table.d.ts +21 -0
  83. package/dist/components/data-table/table.d.ts.map +1 -0
  84. package/dist/components/data-table/table.js +120 -0
  85. package/dist/components/data-table/table.js.map +1 -0
  86. package/dist/components/data-table/tabs.d.ts +19 -0
  87. package/dist/components/data-table/tabs.d.ts.map +1 -0
  88. package/dist/components/data-table/tabs.js +22 -0
  89. package/dist/components/data-table/tabs.js.map +1 -0
  90. package/dist/components/data-table/url-state.d.ts +54 -0
  91. package/dist/components/data-table/url-state.d.ts.map +1 -0
  92. package/dist/components/data-table/url-state.js +130 -0
  93. package/dist/components/data-table/url-state.js.map +1 -0
  94. package/dist/components/page-header/index.d.ts +3 -0
  95. package/dist/components/page-header/index.d.ts.map +1 -0
  96. package/dist/components/page-header/index.js +2 -0
  97. package/dist/components/page-header/index.js.map +1 -0
  98. package/dist/components/page-header/page-header.d.ts +56 -0
  99. package/dist/components/page-header/page-header.d.ts.map +1 -0
  100. package/dist/components/page-header/page-header.js +59 -0
  101. package/dist/components/page-header/page-header.js.map +1 -0
  102. package/dist/components/sidebar/index.d.ts +2 -0
  103. package/dist/components/sidebar/index.d.ts.map +1 -0
  104. package/dist/components/sidebar/index.js +2 -0
  105. package/dist/components/sidebar/index.js.map +1 -0
  106. package/dist/components/ui/alert-dialog.d.ts +15 -0
  107. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  108. package/dist/components/ui/alert-dialog.js +40 -0
  109. package/dist/components/ui/alert-dialog.js.map +1 -0
  110. package/dist/components/ui/button.d.ts +12 -0
  111. package/dist/components/ui/button.d.ts.map +1 -0
  112. package/dist/components/ui/button.js +36 -0
  113. package/dist/components/ui/button.js.map +1 -0
  114. package/dist/components/ui/checkbox.d.ts +5 -0
  115. package/dist/components/ui/checkbox.d.ts.map +1 -0
  116. package/dist/components/ui/checkbox.js +10 -0
  117. package/dist/components/ui/checkbox.js.map +1 -0
  118. package/dist/components/ui/dropdown-menu.d.ts +26 -0
  119. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  120. package/dist/components/ui/dropdown-menu.js +52 -0
  121. package/dist/components/ui/dropdown-menu.js.map +1 -0
  122. package/dist/components/ui/scroll-area.d.ts +6 -0
  123. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  124. package/dist/components/ui/scroll-area.js +14 -0
  125. package/dist/components/ui/scroll-area.js.map +1 -0
  126. package/dist/components/ui/sheet.d.ts +14 -0
  127. package/dist/components/ui/sheet.d.ts.map +1 -0
  128. package/dist/components/ui/sheet.js +41 -0
  129. package/dist/components/ui/sheet.js.map +1 -0
  130. package/dist/components/ui/table.d.ts +11 -0
  131. package/dist/components/ui/table.d.ts.map +1 -0
  132. package/dist/components/ui/table.js +30 -0
  133. package/dist/components/ui/table.js.map +1 -0
  134. package/dist/hooks/index.d.ts +2 -0
  135. package/dist/hooks/index.d.ts.map +1 -0
  136. package/dist/hooks/index.js +3 -0
  137. package/dist/hooks/index.js.map +1 -0
  138. package/dist/index.d.ts +7 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +8 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/lib/utils.d.ts +7 -0
  143. package/dist/lib/utils.d.ts.map +1 -0
  144. package/dist/lib/utils.js +33 -0
  145. package/dist/lib/utils.js.map +1 -0
  146. package/dist/providers/index.d.ts +2 -0
  147. package/dist/providers/index.d.ts.map +1 -0
  148. package/dist/providers/index.js +3 -0
  149. package/dist/providers/index.js.map +1 -0
  150. package/dist/styles/index.css +19 -0
  151. package/dist/types/index.d.ts +4 -0
  152. package/dist/types/index.d.ts.map +1 -0
  153. package/dist/types/index.js +2 -0
  154. package/dist/types/index.js.map +1 -0
  155. package/dist/utils/index.d.ts +2 -0
  156. package/dist/utils/index.d.ts.map +1 -0
  157. package/dist/utils/index.js +2 -0
  158. package/dist/utils/index.js.map +1 -0
  159. package/package.json +95 -0
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Trash2 } from "lucide-react";
4
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "../../ui/alert-dialog";
5
+ import { cn } from "../../../lib/utils";
6
+ import { useDataTable } from "../provider";
7
+ export function DataTableBulkDelete({ onConfirm, confirmTitle = "Delete selected records?", confirmDescription = "This action cannot be undone.", className, buttonClassName, }) {
8
+ const { table } = useDataTable();
9
+ const selectedRows = table.getSelectedRowModel().rows;
10
+ const ids = selectedRows.map((r) => r.id);
11
+ const rows = selectedRows.map((r) => r.original);
12
+ const disabled = ids.length === 0;
13
+ return (_jsx("div", { className: className, children: _jsxs(AlertDialog, { children: [_jsx(AlertDialogTrigger, { asChild: true, children: _jsxs("button", { type: "button", disabled: disabled, className: cn("flex items-center justify-center gap-2 rounded-[12px] px-4 py-3", disabled
14
+ ? "bg-[#f2f2f2] text-[#a6a6a6] cursor-not-allowed"
15
+ : "bg-[#ffd1d1] text-[#ba1c1c]", buttonClassName), children: [_jsx(Trash2, { className: cn("h-4 w-4", disabled ? "text-[#a6a6a6]" : "text-[#ba1c1c]"), "aria-hidden": true }), _jsxs("span", { className: "text-[14px] leading-4 font-semibold", children: ["Delete", ids.length ? ` (${ids.length})` : ""] })] }) }), _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: confirmTitle }), _jsx(AlertDialogDescription, { children: confirmDescription })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Cancel" }), _jsx(AlertDialogAction, { onClick: () => {
16
+ onConfirm({ ids, rows });
17
+ table.resetRowSelection();
18
+ }, children: "Delete" })] })] })] }) }));
19
+ }
20
+ //# sourceMappingURL=bulk-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-delete.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/bulk-delete.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,UAAU,mBAAmB,CAAwC,EACzE,SAAS,EACT,YAAY,GAAG,0BAA0B,EACzC,kBAAkB,GAAG,+BAA+B,EACpD,SAAS,EACT,eAAe,GACiB;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAS,CAAC;IACxC,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC;IACtD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;IAElC,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,MAAC,WAAW,eACV,KAAC,kBAAkB,IAAC,OAAO,kBACzB,kBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,QAAQ;4BACN,CAAC,CAAC,gDAAgD;4BAClD,CAAC,CAAC,6BAA6B,EACjC,eAAe,CAChB,aAED,KAAC,MAAM,IACL,SAAS,EAAE,EAAE,CACX,SAAS,EACT,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAC/C,wBAED,EACF,gBAAM,SAAS,EAAC,qCAAqC,uBAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IACtC,IACA,GACU,EAErB,MAAC,kBAAkB,eACjB,MAAC,iBAAiB,eAChB,KAAC,gBAAgB,cAAE,YAAY,GAAoB,EACnD,KAAC,sBAAsB,cACpB,kBAAkB,GACI,IACP,EACpB,MAAC,iBAAiB,eAChB,KAAC,iBAAiB,yBAA2B,EAC7C,KAAC,iBAAiB,IAChB,OAAO,EAAE,GAAG,EAAE;wCACZ,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;wCACzB,KAAK,CAAC,iBAAiB,EAAE,CAAC;oCAC5B,CAAC,uBAGiB,IACF,IACD,IACT,GACV,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ export declare function DataTableFilters({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
3
+ export declare function DataTableFiltersActions({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/filters/filters.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAU7B;AAED,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAI7B"}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { cn } from "../../../lib/utils";
4
+ export function DataTableFilters({ className, ...props }) {
5
+ return (_jsx("div", { className: cn("flex items-center justify-between px-6 py-2 border-b border-[#e6e6e6]", className), ...props }));
6
+ }
7
+ export function DataTableFiltersActions({ className, ...props }) {
8
+ return (_jsx("div", { className: cn("flex items-center gap-2", className), ...props }));
9
+ }
10
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/filters.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,MAAM,UAAU,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACoB;IAC5B,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,uEAAuE,EACvE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EACtC,SAAS,EACT,GAAG,KAAK,EACoB;IAC5B,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ export type DataTableResetProps = {
2
+ className?: string;
3
+ buttonClassName?: string;
4
+ /**
5
+ * Custom label for the reset button.
6
+ * @default "Reset"
7
+ */
8
+ label?: string;
9
+ };
10
+ /**
11
+ * Reset button that clears all active filters.
12
+ * Only visible when at least one filter is active.
13
+ *
14
+ * Resets:
15
+ * - Search input
16
+ * - Sorting
17
+ * - Tabs (back to default/first)
18
+ * - Hidden columns (show all)
19
+ */
20
+ export declare function DataTableReset({ className, buttonClassName, label, }: DataTableResetProps): import("react/jsx-runtime").JSX.Element | null;
21
+ //# sourceMappingURL=reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/filters/reset.tsx"],"names":[],"mappings":"AAQA,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,eAAe,EACf,KAAe,GAChB,EAAE,mBAAmB,kDAsCrB"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { RotateCcw } from "lucide-react";
4
+ import { cn } from "../../../lib/utils";
5
+ import { useDataTable } from "../provider";
6
+ /**
7
+ * Reset button that clears all active filters.
8
+ * Only visible when at least one filter is active.
9
+ *
10
+ * Resets:
11
+ * - Search input
12
+ * - Sorting
13
+ * - Tabs (back to default/first)
14
+ * - Hidden columns (show all)
15
+ */
16
+ export function DataTableReset({ className, buttonClassName, label = "Reset", }) {
17
+ const { urlState, table } = useDataTable();
18
+ const { hasActiveFilters, resetAllFilters } = urlState;
19
+ // Don't render if no filters are active
20
+ if (!hasActiveFilters) {
21
+ return null;
22
+ }
23
+ const handleReset = () => {
24
+ // Reset URL state
25
+ resetAllFilters();
26
+ // Also reset TanStack table state
27
+ table.setSorting([]);
28
+ table.setGlobalFilter("");
29
+ table.resetColumnVisibility();
30
+ table.resetRowSelection();
31
+ };
32
+ return (_jsx("div", { className: className, children: _jsxs("button", { type: "button", onClick: handleReset, className: cn("flex items-center justify-center gap-2 rounded-[12px] px-4 py-3", "bg-[#ffd1d1] text-[#ba1c1c]", buttonClassName), children: [_jsx(RotateCcw, { className: "h-4 w-4 text-[#ba1c1c]", "aria-hidden": true }), _jsx("span", { className: "text-[14px] leading-4 font-semibold", children: label })] }) }));
33
+ }
34
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/reset.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,EACT,eAAe,EACf,KAAK,GAAG,OAAO,GACK;IACpB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,EAAO,CAAC;IAChD,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAEvD,wCAAwC;IACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,kBAAkB;QAClB,eAAe,EAAE,CAAC;QAElB,kCAAkC;QAClC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC9B,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,6BAA6B,EAC7B,eAAe,CAChB,aAED,KAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,wBAAe,EAC5D,eAAM,SAAS,EAAC,qCAAqC,YAClD,KAAK,GACD,IACA,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ export type DataTableSearchProps = {
2
+ placeholder?: string;
3
+ /**
4
+ * Debounce delay in milliseconds.
5
+ * - For server mode: always applies (default 300ms)
6
+ * - For client mode: set to 0 to disable debouncing for instant filtering
7
+ * @default 300
8
+ */
9
+ debounceMs?: number;
10
+ className?: string;
11
+ inputClassName?: string;
12
+ };
13
+ /**
14
+ * Search input for DataTable filtering.
15
+ *
16
+ * Both client and server modes use URL query params for persistence.
17
+ * The difference is WHO does the filtering:
18
+ * - **Client mode**: nuqs syncs URL → TanStack filters locally
19
+ * - **Server mode**: nuqs syncs URL → your API filters on server
20
+ *
21
+ * Uses the first param from `filterConfig.params` as the search key.
22
+ * Set `debounceMs={0}` for instant client-side filtering without delay.
23
+ */
24
+ export declare function DataTableSearch({ placeholder, debounceMs, className, inputClassName, }: DataTableSearchProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/filters/search.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAyB,EACzB,UAAgB,EAChB,SAAS,EACT,cAAc,GACf,EAAE,oBAAoB,2CAoHtB"}
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Search, X } from "lucide-react";
5
+ import { useQueryState } from "nuqs";
6
+ import { cn } from "../../../lib/utils";
7
+ import { useDataTable } from "../provider";
8
+ /**
9
+ * Search input for DataTable filtering.
10
+ *
11
+ * Both client and server modes use URL query params for persistence.
12
+ * The difference is WHO does the filtering:
13
+ * - **Client mode**: nuqs syncs URL → TanStack filters locally
14
+ * - **Server mode**: nuqs syncs URL → your API filters on server
15
+ *
16
+ * Uses the first param from `filterConfig.params` as the search key.
17
+ * Set `debounceMs={0}` for instant client-side filtering without delay.
18
+ */
19
+ export function DataTableSearch({ placeholder = "Search...", debounceMs = 300, className, inputClassName, }) {
20
+ const { table, filterConfig } = useDataTable();
21
+ // Determine mode from filterConfig
22
+ const isClientMode = filterConfig?.mode === "client";
23
+ const isServerMode = filterConfig?.mode === "server";
24
+ const hasFilterConfig = isClientMode || isServerMode;
25
+ // Get the first param key to use for search URL param
26
+ const searchParamKey = hasFilterConfig
27
+ ? Object.values(filterConfig.params)[0] ?? "search"
28
+ : "search";
29
+ // nuqs state for URL-based filtering (used for both client and server modes)
30
+ const [queryValue, setQueryValue] = useQueryState(searchParamKey, {
31
+ defaultValue: "",
32
+ shallow: isClientMode, // Client mode: shallow (no server roundtrip). Server mode: triggers navigation
33
+ throttleMs: debounceMs,
34
+ });
35
+ // Local input state for responsive typing
36
+ const [localValue, setLocalValue] = React.useState(queryValue);
37
+ // Sync local value from URL on mount and when URL changes externally
38
+ React.useEffect(() => {
39
+ setLocalValue(queryValue);
40
+ }, [queryValue]);
41
+ // For client mode: sync URL value to TanStack's globalFilter
42
+ React.useEffect(() => {
43
+ if (isClientMode) {
44
+ table.setGlobalFilter(queryValue);
45
+ }
46
+ }, [isClientMode, queryValue, table]);
47
+ React.useEffect(() => {
48
+ if (!hasFilterConfig) {
49
+ const timer = setTimeout(() => {
50
+ table.setGlobalFilter(localValue);
51
+ }, debounceMs);
52
+ return () => clearTimeout(timer);
53
+ }
54
+ // For both client and server modes: update URL
55
+ // Skip debouncing for client mode when debounceMs is 0
56
+ if (isClientMode && debounceMs <= 0) {
57
+ setQueryValue(localValue || null);
58
+ return;
59
+ }
60
+ const timer = setTimeout(() => {
61
+ setQueryValue(localValue || null);
62
+ }, debounceMs);
63
+ return () => clearTimeout(timer);
64
+ }, [localValue, debounceMs, hasFilterConfig, isClientMode, setQueryValue, table]);
65
+ const handleChange = (e) => {
66
+ const newValue = e.target.value;
67
+ setLocalValue(newValue);
68
+ // Immediate update for client mode when debouncing is disabled
69
+ if (isClientMode && debounceMs <= 0) {
70
+ setQueryValue(newValue || null);
71
+ }
72
+ };
73
+ const handleClear = () => {
74
+ setLocalValue("");
75
+ if (hasFilterConfig) {
76
+ setQueryValue(null);
77
+ }
78
+ if (isClientMode || !hasFilterConfig) {
79
+ table.setGlobalFilter("");
80
+ }
81
+ };
82
+ const handleSubmit = (e) => {
83
+ e.preventDefault();
84
+ };
85
+ return (_jsxs("form", { onSubmit: handleSubmit, role: "search", className: cn("flex w-[400px] items-center gap-2 rounded-[8px] bg-[#f2f2f2] px-4 py-3", className), children: [_jsx(Search, { className: "h-5 w-5 shrink-0 text-[#a6a6a6]", "aria-hidden": true }), _jsx("input", { type: "search", value: localValue, onChange: handleChange, className: cn("w-full bg-transparent text-[14px] font-medium text-[#1a1a1a] placeholder:text-[#a6a6a6] focus:outline-none",
86
+ // Hide browser's default clear button (we provide our own)
87
+ "[&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden", inputClassName), placeholder: placeholder, "aria-label": placeholder }), localValue && (_jsx("button", { type: "button", onClick: handleClear, className: "shrink-0 rounded-full p-0.5 text-[#a6a6a6] hover:bg-[#e6e6e6] hover:text-[#666666] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#1a1a1a]", "aria-label": "Clear search", children: _jsx(X, { className: "h-4 w-4" }) }))] }));
88
+ }
89
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/search.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type DataTableSortByProps = {
2
+ className?: string;
3
+ buttonClassName?: string;
4
+ contentClassName?: string;
5
+ };
6
+ export declare function DataTableSortBy({ className, buttonClassName, contentClassName, }: DataTableSortByProps): import("react/jsx-runtime").JSX.Element | null;
7
+ //# sourceMappingURL=sort-by.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-by.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/filters/sort-by.tsx"],"names":[],"mappings":"AAeA,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAkBF,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,eAAe,EACf,gBAAgB,GACjB,EAAE,oBAAoB,kDA8HtB"}
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { ArrowUpDown, Check, X } from "lucide-react";
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "../../ui/dropdown-menu";
6
+ import { cn } from "../../../lib/utils";
7
+ import { useDataTable } from "../provider";
8
+ function humanizeColumnId(id) {
9
+ if (id.toLowerCase() === "id")
10
+ return "ID";
11
+ const withoutLabel = id.endsWith("Label") ? id.slice(0, -5) : id;
12
+ const spaced = withoutLabel
13
+ .replace(/[_-]+/g, " ")
14
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
15
+ .trim();
16
+ return spaced
17
+ .split(" ")
18
+ .filter(Boolean)
19
+ .map((word) => word[0].toUpperCase() + word.slice(1))
20
+ .join(" ");
21
+ }
22
+ export function DataTableSortBy({ className, buttonClassName, contentClassName, }) {
23
+ const { table, urlState } = useDataTable();
24
+ const sortableColumns = table
25
+ .getAllLeafColumns()
26
+ .filter((c) => c.getCanSort());
27
+ if (!sortableColumns.length)
28
+ return null;
29
+ const currentSortColumn = urlState.sortColumn;
30
+ const currentSortOrder = urlState.sortOrder;
31
+ const hasActiveSort = Boolean(currentSortColumn);
32
+ const handleSort = (columnId, order) => {
33
+ if (columnId === null) {
34
+ // Clear sort
35
+ urlState.setSorting(null, null);
36
+ table.setSorting([]);
37
+ }
38
+ else {
39
+ urlState.setSorting(columnId, order ?? "asc");
40
+ table.setSorting([{ id: columnId, desc: order === "desc" }]);
41
+ }
42
+ };
43
+ // Sync TanStack table sort state with URL state on mount
44
+ React.useEffect(() => {
45
+ if (currentSortColumn) {
46
+ table.setSorting([{ id: currentSortColumn, desc: currentSortOrder === "desc" }]);
47
+ }
48
+ }, [currentSortColumn, currentSortOrder, table]);
49
+ return (_jsx("div", { className: className, children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs("button", { type: "button", className: cn("flex items-center justify-center gap-2 rounded-[12px] bg-[#f2f2f2] px-4 py-3", buttonClassName), children: [_jsx(ArrowUpDown, { className: "h-4 w-4 text-[#1a1a1a]", "aria-hidden": true }), _jsx("span", { className: "text-[14px] leading-4 font-semibold text-[#1a1a1a]", children: "Sort By" })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: cn("min-w-[220px]", contentClassName), children: [_jsxs(DropdownMenuItem, { onSelect: () => handleSort(null), children: [_jsx("span", { className: "flex-1", children: "None" }), !hasActiveSort && (_jsx(Check, { className: "h-4 w-4 text-muted-foreground", "aria-hidden": true }))] }), _jsx(DropdownMenuSeparator, {}), sortableColumns.map((column) => {
50
+ const meta = column.columnDef.meta;
51
+ const headerDef = column.columnDef.header;
52
+ const headerLabel = typeof headerDef === "string" ? headerDef : undefined;
53
+ const label = meta?.sortyByLabel ??
54
+ meta?.label ??
55
+ headerLabel ??
56
+ humanizeColumnId(column.id);
57
+ const isActive = currentSortColumn === column.id;
58
+ const isAsc = isActive && currentSortOrder === "asc";
59
+ const isDesc = isActive && currentSortOrder === "desc";
60
+ return (_jsxs(DropdownMenuItem, { onSelect: () => {
61
+ if (!isActive) {
62
+ // First click: sort ascending
63
+ handleSort(column.id, "asc");
64
+ }
65
+ else if (isAsc) {
66
+ // Second click: sort descending
67
+ handleSort(column.id, "desc");
68
+ }
69
+ else {
70
+ // Third click: clear sort
71
+ handleSort(null);
72
+ }
73
+ }, children: [_jsx("span", { className: "flex-1", children: label }), isActive && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("div", { className: cn("h-1.5 w-1.5 rounded-full", isAsc ? "bg-primary" : "bg-[#f97316]"), "aria-hidden": true }), _jsx("span", { className: "text-[10px] text-muted-foreground uppercase", children: isAsc ? "asc" : "desc" })] }))] }, column.id));
74
+ }), hasActiveSort && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onSelect: () => handleSort(null), className: "text-[#dc2626]", children: [_jsx(X, { className: "h-4 w-4 text-[#dc2626]", "aria-hidden": true }), _jsx("span", { className: "flex-1", children: "Clear sort" })] })] }))] })] }) }));
75
+ }
76
+ //# sourceMappingURL=sort-by.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-by.js","sourceRoot":"","sources":["../../../../src/components/data-table/filters/sort-by.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export { DataTableProvider, useDataTable } from "./provider";
2
+ export type { DataTableColumnMeta, DataTableQueryState, FilterConfig, ClientFilterConfig, ServerFilterConfig, NoFilterConfig, PaginationConfig, ClientPaginationConfig, ServerPaginationConfig, NoPaginationConfig, PaginationParams, } from "./provider";
3
+ export { UrlStateProvider, useUrlState } from "./url-state";
4
+ export type { UrlStateConfig, UrlStateContextValue } from "./url-state";
5
+ export { DataTableTable } from "./table";
6
+ export { DataTableColumnHeader } from "./column-header";
7
+ export { DataTableTabs, DataTableTabsList, DataTableTabsTrigger, DataTableTabsContent, } from "./tabs";
8
+ export { DataTableFilters, DataTableFiltersActions } from "./filters/filters";
9
+ export { DataTableSearch } from "./filters/search";
10
+ export { DataTableAllFilters } from "./filters/all-filters";
11
+ export { DataTableSortBy } from "./filters/sort-by";
12
+ export { DataTableBulkDelete } from "./filters/bulk-delete";
13
+ export { DataTableReset } from "./filters/reset";
14
+ export { DataTableActionsDropdown } from "./actions/actions-dropdown";
15
+ export { DataTableActionItem } from "./actions/action-item";
16
+ export { DataTableActionDelete } from "./actions/action-delete";
17
+ export { DataTableCheckbox } from "./cells/table-checkbox";
18
+ export { DataTableRecordIdCell } from "./cells/record-id-cell";
19
+ export { DataTableTextCell } from "./cells/text-cell";
20
+ export { DataTableStatusPill } from "./cells/status-pill";
21
+ export { DataTablePaymentPill } from "./cells/payment-pill";
22
+ export { DataTableDateTimeCell } from "./cells/date-time-cell";
23
+ export type { PaymentLabel } from "./cells/payment-pill";
24
+ export { createSelectionColumn, DATA_TABLE_SELECTION_COLUMN_ID, } from "./columns/selection";
25
+ export { DataTablePagination, DataTablePaginationInfo, DataTablePaginationLimits, DataTablePaginationLinks, DataTablePaginationActions, } from "./pagination/pagination";
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ export { DataTableProvider, useDataTable } from "./provider";
3
+ export { UrlStateProvider, useUrlState } from "./url-state";
4
+ export { DataTableTable } from "./table";
5
+ export { DataTableColumnHeader } from "./column-header";
6
+ export { DataTableTabs, DataTableTabsList, DataTableTabsTrigger, DataTableTabsContent, } from "./tabs";
7
+ export { DataTableFilters, DataTableFiltersActions } from "./filters/filters";
8
+ export { DataTableSearch } from "./filters/search";
9
+ export { DataTableAllFilters } from "./filters/all-filters";
10
+ export { DataTableSortBy } from "./filters/sort-by";
11
+ export { DataTableBulkDelete } from "./filters/bulk-delete";
12
+ export { DataTableReset } from "./filters/reset";
13
+ export { DataTableActionsDropdown } from "./actions/actions-dropdown";
14
+ export { DataTableActionItem } from "./actions/action-item";
15
+ export { DataTableActionDelete } from "./actions/action-delete";
16
+ export { DataTableCheckbox } from "./cells/table-checkbox";
17
+ export { DataTableRecordIdCell } from "./cells/record-id-cell";
18
+ export { DataTableTextCell } from "./cells/text-cell";
19
+ export { DataTableStatusPill } from "./cells/status-pill";
20
+ export { DataTablePaymentPill } from "./cells/payment-pill";
21
+ export { DataTableDateTimeCell } from "./cells/date-time-cell";
22
+ export { createSelectionColumn, DATA_TABLE_SELECTION_COLUMN_ID, } from "./columns/selection";
23
+ export { DataTablePagination, DataTablePaginationInfo, DataTablePaginationLimits, DataTablePaginationLinks, DataTablePaginationActions, } from "./pagination/pagination";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/data-table/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe7D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EACL,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import * as React from "react";
2
+ export type DataTablePaginationProps = React.ComponentProps<"div">;
3
+ /**
4
+ * Pagination container that reads from DataTableProvider's paginationConfig.
5
+ *
6
+ * Both client and server modes sync page/limit to URL query params.
7
+ * - **Client mode**: TanStack Table paginates locally
8
+ * - **Server mode**: URL params trigger server-side pagination
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <DataTablePagination>
13
+ * <DataTablePaginationInfo />
14
+ * <DataTablePaginationActions>
15
+ * <DataTablePaginationLimits />
16
+ * <DataTablePaginationLinks />
17
+ * </DataTablePaginationActions>
18
+ * </DataTablePagination>
19
+ * ```
20
+ */
21
+ export declare function DataTablePagination({ className, children, ...props }: DataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
22
+ export type DataTablePaginationInfoProps = React.ComponentProps<"div"> & {
23
+ /**
24
+ * Custom format function.
25
+ * @param start - First item index (1-indexed)
26
+ * @param end - Last item index
27
+ * @param total - Total items
28
+ */
29
+ format?: (start: number, end: number, total: number) => React.ReactNode;
30
+ };
31
+ export declare function DataTablePaginationInfo({ format, className, ...props }: DataTablePaginationInfoProps): import("react/jsx-runtime").JSX.Element;
32
+ export type DataTablePaginationLimitsProps = {
33
+ className?: string;
34
+ buttonClassName?: string;
35
+ contentClassName?: string;
36
+ /**
37
+ * Label shown before the limit value.
38
+ * @default "Result per page"
39
+ */
40
+ label?: string;
41
+ /**
42
+ * Callback when limit changes.
43
+ */
44
+ onLimitChange?: (limit: number) => void;
45
+ };
46
+ export declare function DataTablePaginationLimits({ className, buttonClassName, contentClassName, label, onLimitChange, }: DataTablePaginationLimitsProps): import("react/jsx-runtime").JSX.Element;
47
+ export type DataTablePaginationLinksProps = {
48
+ className?: string;
49
+ /**
50
+ * Maximum number of page buttons to show.
51
+ * @default 7
52
+ */
53
+ maxVisible?: number;
54
+ /**
55
+ * Show previous/next navigation buttons.
56
+ * @default true
57
+ */
58
+ showPrevNext?: boolean;
59
+ /**
60
+ * Callback when page changes.
61
+ */
62
+ onPageChange?: (page: number) => void;
63
+ };
64
+ export declare function DataTablePaginationLinks({ className, maxVisible, showPrevNext, onPageChange, }: DataTablePaginationLinksProps): import("react/jsx-runtime").JSX.Element;
65
+ export declare function DataTablePaginationActions({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
66
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/pagination/pagination.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgD/B,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,wBAAwB,2CAa1B;AAMD,MAAM,MAAM,4BAA4B,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACvE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACzE,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACtC,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,4BAA4B,2CAiE9B;AAMD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,KAAyB,EACzB,aAAa,GACd,EAAE,8BAA8B,2CAiFhC;AAMD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,UAAc,EACd,YAAmB,EACnB,YAAY,GACb,EAAE,6BAA6B,2CAqI/B;AA2GD,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ7B"}