@tablecraft/table 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.
- package/dist/auto/auto-columns.d.ts +9 -0
- package/dist/auto/auto-columns.d.ts.map +1 -0
- package/dist/auto/auto-columns.js +39 -0
- package/dist/auto/auto-columns.js.map +1 -0
- package/dist/auto/auto-filters.d.ts +22 -0
- package/dist/auto/auto-filters.d.ts.map +1 -0
- package/dist/auto/auto-filters.js +15 -0
- package/dist/auto/auto-filters.js.map +1 -0
- package/dist/auto/rest-adapter.d.ts +34 -0
- package/dist/auto/rest-adapter.d.ts.map +1 -0
- package/dist/auto/rest-adapter.js +31 -0
- package/dist/auto/rest-adapter.js.map +1 -0
- package/dist/auto/static-adapter.d.ts +21 -0
- package/dist/auto/static-adapter.d.ts.map +1 -0
- package/dist/auto/static-adapter.js +116 -0
- package/dist/auto/static-adapter.js.map +1 -0
- package/dist/auto/tablecraft-adapter.d.ts +26 -0
- package/dist/auto/tablecraft-adapter.d.ts.map +1 -0
- package/dist/auto/tablecraft-adapter.js +143 -0
- package/dist/auto/tablecraft-adapter.js.map +1 -0
- package/dist/auto/use-auto-columns.d.ts +13 -0
- package/dist/auto/use-auto-columns.d.ts.map +1 -0
- package/dist/auto/use-auto-columns.js +53 -0
- package/dist/auto/use-auto-columns.js.map +1 -0
- package/dist/column-header.d.ts +8 -0
- package/dist/column-header.d.ts.map +1 -0
- package/dist/column-header.js +33 -0
- package/dist/column-header.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +35 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar-date-picker.d.ts +21 -0
- package/dist/components/calendar-date-picker.d.ts.map +1 -0
- package/dist/components/calendar-date-picker.js +333 -0
- package/dist/components/calendar-date-picker.js.map +1 -0
- package/dist/components/calendar.d.ts +9 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +77 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +10 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/command.d.ts +79 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +26 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/popover.d.ts +11 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +27 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/select.d.ts +14 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +28 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/table-dropdown.d.ts +26 -0
- package/dist/components/table-dropdown.d.ts.map +1 -0
- package/dist/components/table-dropdown.js +52 -0
- package/dist/components/table-dropdown.js.map +1 -0
- package/dist/core/table-config.d.ts +12 -0
- package/dist/core/table-config.d.ts.map +1 -0
- package/dist/core/table-config.js +33 -0
- package/dist/core/table-config.js.map +1 -0
- package/dist/core/use-column-resize.d.ts +10 -0
- package/dist/core/use-column-resize.d.ts.map +1 -0
- package/dist/core/use-column-resize.js +83 -0
- package/dist/core/use-column-resize.js.map +1 -0
- package/dist/core/use-conditional-state.d.ts +14 -0
- package/dist/core/use-conditional-state.d.ts.map +1 -0
- package/dist/core/use-conditional-state.js +27 -0
- package/dist/core/use-conditional-state.js.map +1 -0
- package/dist/core/use-table-data.d.ts +64 -0
- package/dist/core/use-table-data.d.ts.map +1 -0
- package/dist/core/use-table-data.js +141 -0
- package/dist/core/use-table-data.js.map +1 -0
- package/dist/core/use-url-state.d.ts +14 -0
- package/dist/core/use-url-state.d.ts.map +1 -0
- package/dist/core/use-url-state.js +269 -0
- package/dist/core/use-url-state.js.map +1 -0
- package/dist/data-table.d.ts +3 -0
- package/dist/data-table.d.ts.map +1 -0
- package/dist/data-table.js +278 -0
- package/dist/data-table.js.map +1 -0
- package/dist/expand-icon.d.ts +9 -0
- package/dist/expand-icon.d.ts.map +1 -0
- package/dist/expand-icon.js +13 -0
- package/dist/expand-icon.js.map +1 -0
- package/dist/export.d.ts +13 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +122 -0
- package/dist/export.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +11 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +49 -0
- package/dist/pagination.js.map +1 -0
- package/dist/renderers/actions.d.ts +8 -0
- package/dist/renderers/actions.d.ts.map +1 -0
- package/dist/renderers/actions.js +10 -0
- package/dist/renderers/actions.js.map +1 -0
- package/dist/renderers/badge.d.ts +3 -0
- package/dist/renderers/badge.d.ts.map +1 -0
- package/dist/renderers/badge.js +18 -0
- package/dist/renderers/badge.js.map +1 -0
- package/dist/renderers/boolean.d.ts +3 -0
- package/dist/renderers/boolean.d.ts.map +1 -0
- package/dist/renderers/boolean.js +10 -0
- package/dist/renderers/boolean.js.map +1 -0
- package/dist/renderers/date.d.ts +3 -0
- package/dist/renderers/date.d.ts.map +1 -0
- package/dist/renderers/date.js +56 -0
- package/dist/renderers/date.js.map +1 -0
- package/dist/renderers/image.d.ts +3 -0
- package/dist/renderers/image.d.ts.map +1 -0
- package/dist/renderers/image.js +18 -0
- package/dist/renderers/image.js.map +1 -0
- package/dist/renderers/index.d.ts +23 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +43 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/link.d.ts +3 -0
- package/dist/renderers/link.d.ts.map +1 -0
- package/dist/renderers/link.js +9 -0
- package/dist/renderers/link.js.map +1 -0
- package/dist/renderers/number.d.ts +3 -0
- package/dist/renderers/number.d.ts.map +1 -0
- package/dist/renderers/number.js +29 -0
- package/dist/renderers/number.js.map +1 -0
- package/dist/renderers/progress.d.ts +3 -0
- package/dist/renderers/progress.d.ts.map +1 -0
- package/dist/renderers/progress.js +10 -0
- package/dist/renderers/progress.js.map +1 -0
- package/dist/renderers/tags.d.ts +3 -0
- package/dist/renderers/tags.d.ts.map +1 -0
- package/dist/renderers/tags.js +28 -0
- package/dist/renderers/tags.js.map +1 -0
- package/dist/renderers/text.d.ts +3 -0
- package/dist/renderers/text.d.ts.map +1 -0
- package/dist/renderers/text.js +8 -0
- package/dist/renderers/text.js.map +1 -0
- package/dist/resizer.d.ts +6 -0
- package/dist/resizer.d.ts.map +1 -0
- package/dist/resizer.js +10 -0
- package/dist/resizer.js.map +1 -0
- package/dist/row-actions.d.ts +10 -0
- package/dist/row-actions.d.ts.map +1 -0
- package/dist/row-actions.js +36 -0
- package/dist/row-actions.js.map +1 -0
- package/dist/toolbar.d.ts +35 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +119 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/types.d.ts +230 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/column-sizing.d.ts +18 -0
- package/dist/utils/column-sizing.d.ts.map +1 -0
- package/dist/utils/column-sizing.js +78 -0
- package/dist/utils/column-sizing.js.map +1 -0
- package/dist/utils/date-format.d.ts +13 -0
- package/dist/utils/date-format.d.ts.map +1 -0
- package/dist/utils/date-format.js +30 -0
- package/dist/utils/date-format.js.map +1 -0
- package/dist/utils/deep-utils.d.ts +15 -0
- package/dist/utils/deep-utils.d.ts.map +1 -0
- package/dist/utils/deep-utils.js +111 -0
- package/dist/utils/deep-utils.js.map +1 -0
- package/dist/utils/export-utils.d.ts +25 -0
- package/dist/utils/export-utils.d.ts.map +1 -0
- package/dist/utils/export-utils.js +170 -0
- package/dist/utils/export-utils.js.map +1 -0
- package/dist/utils/history-sync.d.ts +11 -0
- package/dist/utils/history-sync.d.ts.map +1 -0
- package/dist/utils/history-sync.js +45 -0
- package/dist/utils/history-sync.js.map +1 -0
- package/dist/utils/keyboard-navigation.d.ts +11 -0
- package/dist/utils/keyboard-navigation.d.ts.map +1 -0
- package/dist/utils/keyboard-navigation.js +39 -0
- package/dist/utils/keyboard-navigation.js.map +1 -0
- package/dist/utils/search.d.ts +10 -0
- package/dist/utils/search.d.ts.map +1 -0
- package/dist/utils/search.js +33 -0
- package/dist/utils/search.js.map +1 -0
- package/dist/utils/size-variants.d.ts +15 -0
- package/dist/utils/size-variants.d.ts.map +1 -0
- package/dist/utils/size-variants.js +42 -0
- package/dist/utils/size-variants.js.map +1 -0
- package/dist/utils/url-events.d.ts +2 -0
- package/dist/utils/url-events.d.ts.map +1 -0
- package/dist/utils/url-events.js +4 -0
- package/dist/utils/url-events.js.map +1 -0
- package/dist/view-options.d.ts +10 -0
- package/dist/view-options.d.ts.map +1 -0
- package/dist/view-options.js +104 -0
- package/dist/view-options.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, } from "lucide-react";
|
|
3
|
+
import { cn } from "./utils/cn";
|
|
4
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "./components/select";
|
|
5
|
+
const getButtonSizeClass = (size) => {
|
|
6
|
+
switch (size) {
|
|
7
|
+
case "sm":
|
|
8
|
+
return "h-8 w-8";
|
|
9
|
+
case "lg":
|
|
10
|
+
return "h-10 w-10";
|
|
11
|
+
default:
|
|
12
|
+
return "h-9 w-9";
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export function DataTablePagination({ table, totalItems = 0, totalSelectedItems = 0, pageSizeOptions = [10, 20, 30, 40, 50], size = "default", }) {
|
|
16
|
+
const selectSize = size === "sm" ? "h-8" : size === "lg" ? "h-10" : "h-9";
|
|
17
|
+
return (_jsxs("div", { className: "flex w-full flex-col items-center justify-between gap-4 overflow-auto px-2 py-1 sm:flex-row sm:gap-8", children: [_jsxs("div", { className: "flex-1 text-sm text-muted-foreground", children: [totalSelectedItems, " of ", totalItems, " row(s) selected."] }), _jsxs("div", { className: "flex flex-col items-center gap-4 sm:flex-row sm:gap-6 lg:gap-8", children: [_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("p", { className: "whitespace-nowrap text-sm font-medium", children: "Rows per page" }), _jsxs(Select, { value: `${table.getState().pagination.pageSize}`, onValueChange: (value) => {
|
|
18
|
+
const numericValue = parseInt(value, 10);
|
|
19
|
+
if (isNaN(numericValue) || numericValue <= 0)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
// Update URL first for consistency
|
|
23
|
+
const url = new URL(window.location.href);
|
|
24
|
+
url.searchParams.set("pageSize", value);
|
|
25
|
+
url.searchParams.set("page", "1");
|
|
26
|
+
window.history.replaceState({}, "", url.toString());
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// ignore URL update errors
|
|
30
|
+
}
|
|
31
|
+
table.setPagination({
|
|
32
|
+
pageIndex: 0,
|
|
33
|
+
pageSize: numericValue,
|
|
34
|
+
});
|
|
35
|
+
}, children: [_jsx(SelectTrigger, { className: cn(selectSize, "w-[70px]"), children: _jsx(SelectValue, { placeholder: table.getState().pagination.pageSize }) }), _jsx(SelectContent, { side: "top", children: pageSizeOptions.map((pageSize) => (_jsx(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize))) })] })] }), _jsxs("div", { className: "flex items-center justify-center text-sm font-medium", children: ["Page ", table.getState().pagination.pageIndex + 1, table.getPageCount() !== -1 ? ` of ${table.getPageCount() || 1}` : ""] }), _jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("button", { "aria-label": "Go to first page", className: cn(getButtonSizeClass(size), "items-center justify-center rounded-md border border-input bg-background", "hover:bg-accent hover:text-accent-foreground transition-colors", "cursor-pointer disabled:opacity-50 disabled:pointer-events-none", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", table.getPageCount() === -1 ? "hidden" : "hidden lg:inline-flex"), onClick: () => table.setPagination({
|
|
36
|
+
pageIndex: 0,
|
|
37
|
+
pageSize: table.getState().pagination.pageSize,
|
|
38
|
+
}), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronsLeft, { className: "h-4 w-4", "aria-hidden": "true" }) }), _jsx("button", { "aria-label": "Go to previous page", className: cn(getButtonSizeClass(size), "inline-flex items-center justify-center rounded-md border border-input bg-background", "hover:bg-accent hover:text-accent-foreground transition-colors", "cursor-pointer disabled:opacity-50 disabled:pointer-events-none", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"), onClick: () => table.setPagination({
|
|
39
|
+
pageIndex: table.getState().pagination.pageIndex - 1,
|
|
40
|
+
pageSize: table.getState().pagination.pageSize,
|
|
41
|
+
}), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronLeft, { className: "h-4 w-4", "aria-hidden": "true" }) }), _jsx("button", { "aria-label": "Go to next page", className: cn(getButtonSizeClass(size), "inline-flex items-center justify-center rounded-md border border-input bg-background", "hover:bg-accent hover:text-accent-foreground transition-colors", "cursor-pointer disabled:opacity-50 disabled:pointer-events-none", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"), onClick: () => table.setPagination({
|
|
42
|
+
pageIndex: table.getState().pagination.pageIndex + 1,
|
|
43
|
+
pageSize: table.getState().pagination.pageSize,
|
|
44
|
+
}), disabled: !table.getCanNextPage() && table.getPageCount() !== -1, children: _jsx(ChevronRight, { className: "h-4 w-4", "aria-hidden": "true" }) }), _jsx("button", { "aria-label": "Go to last page", className: cn(getButtonSizeClass(size), "items-center justify-center rounded-md border border-input bg-background", "hover:bg-accent hover:text-accent-foreground transition-colors", "cursor-pointer disabled:opacity-50 disabled:pointer-events-none", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", table.getPageCount() === -1 ? "hidden" : "hidden lg:inline-flex"), onClick: () => table.setPagination({
|
|
45
|
+
pageIndex: table.getPageCount() - 1,
|
|
46
|
+
pageSize: table.getState().pagination.pageSize,
|
|
47
|
+
}), disabled: !table.getCanNextPage() || table.getPageCount() === -1, children: _jsx(ChevronsRight, { className: "h-4 w-4", "aria-hidden": "true" }) })] })] })] }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,MAAM,kBAAkB,GAAG,CAAC,IAA6B,EAAE,EAAE;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,SAAS,CAAC;QACnB,KAAK,IAAI;YACP,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAUF,MAAM,UAAU,mBAAmB,CAAQ,EACzC,KAAK,EACL,UAAU,GAAG,CAAC,EACd,kBAAkB,GAAG,CAAC,EACtB,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtC,IAAI,GAAG,SAAS,GACgB;IAChC,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAE1E,OAAO,CACL,eAAK,SAAS,EAAC,sGAAsG,aACnH,eAAK,SAAS,EAAC,sCAAsC,aAClD,kBAAkB,UAAM,UAAU,yBAC/B,EACN,eAAK,SAAS,EAAC,gEAAgE,aAC7E,eAAK,SAAS,EAAC,6BAA6B,aAC1C,YAAG,SAAS,EAAC,uCAAuC,8BAAkB,EACtE,MAAC,MAAM,IACL,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAChD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;oCACvB,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oCACzC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC;wCAAE,OAAO;oCAErD,IAAI,CAAC;wCACH,mCAAmC;wCACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wCAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;wCACxC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;wCAClC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;oCACtD,CAAC;oCAAC,MAAM,CAAC;wCACP,2BAA2B;oCAC7B,CAAC;oCAED,KAAK,CAAC,aAAa,CAAC;wCAClB,SAAS,EAAE,CAAC;wCACZ,QAAQ,EAAE,YAAY;qCACvB,CAAC,CAAC;gCACL,CAAC,aAED,KAAC,aAAa,IAAC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,YAClD,KAAC,WAAW,IAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAI,GACpD,EAChB,KAAC,aAAa,IAAC,IAAI,EAAC,KAAK,YACtB,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,KAAC,UAAU,IAAgB,KAAK,EAAE,GAAG,QAAQ,EAAE,YAC5C,QAAQ,IADM,QAAQ,CAEZ,CACd,CAAC,GACY,IACT,IACL,EACN,eAAK,SAAS,EAAC,sDAAsD,sBAC7D,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EAC9C,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAClE,EACN,eAAK,SAAS,EAAC,6BAA6B,aAC1C,+BACa,kBAAkB,EAC7B,SAAS,EAAE,EAAE,CACX,kBAAkB,CAAC,IAAI,CAAC,EACxB,0EAA0E,EAC1E,gEAAgE,EAChE,iEAAiE,EACjE,yEAAyE,EACzE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CACjE,EACD,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,aAAa,CAAC;oCAClB,SAAS,EAAE,CAAC;oCACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ;iCAC/C,CAAC,EAEJ,QAAQ,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,YAErC,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,iBAAa,MAAM,GAAG,GAChD,EACT,+BACa,qBAAqB,EAChC,SAAS,EAAE,EAAE,CACX,kBAAkB,CAAC,IAAI,CAAC,EACxB,sFAAsF,EACtF,gEAAgE,EAChE,iEAAiE,EACjE,yEAAyE,CAC1E,EACD,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,aAAa,CAAC;oCAClB,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC;oCACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ;iCAC/C,CAAC,EAEJ,QAAQ,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,YAErC,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,iBAAa,MAAM,GAAG,GAC/C,EACT,+BACa,iBAAiB,EAC5B,SAAS,EAAE,EAAE,CACX,kBAAkB,CAAC,IAAI,CAAC,EACxB,sFAAsF,EACtF,gEAAgE,EAChE,iEAAiE,EACjE,yEAAyE,CAC1E,EACD,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,aAAa,CAAC;oCAClB,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC;oCACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ;iCAC/C,CAAC,EAEJ,QAAQ,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,YAEhE,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,iBAAa,MAAM,GAAG,GAChD,EACT,+BACa,iBAAiB,EAC5B,SAAS,EAAE,EAAE,CACX,kBAAkB,CAAC,IAAI,CAAC,EACxB,0EAA0E,EAC1E,gEAAgE,EAChE,iEAAiE,EACjE,yEAAyE,EACzE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CACjE,EACD,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,aAAa,CAAC;oCAClB,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC;oCACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ;iCAC/C,CAAC,EAEJ,QAAQ,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,YAEhE,KAAC,aAAa,IAAC,SAAS,EAAC,SAAS,iBAAa,MAAM,GAAG,GACjD,IACL,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CellRendererProps } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Placeholder actions renderer.
|
|
4
|
+
* Users should provide their own actions renderer via the `renderers` prop
|
|
5
|
+
* since actions are highly application-specific.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ActionsRenderer(_props: CellRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/renderers/actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,2CAMxD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Placeholder actions renderer.
|
|
4
|
+
* Users should provide their own actions renderer via the `renderers` prop
|
|
5
|
+
* since actions are highly application-specific.
|
|
6
|
+
*/
|
|
7
|
+
export function ActionsRenderer(_props) {
|
|
8
|
+
return (_jsx("div", { className: "flex items-center gap-1", children: _jsx("span", { className: "text-xs text-muted-foreground", children: "\u2014" }) }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/renderers/actions.tsx"],"names":[],"mappings":";AAEA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB;IACvD,OAAO,CACL,cAAK,SAAS,EAAC,yBAAyB,YACtC,eAAM,SAAS,EAAC,+BAA+B,uBAAS,GACpD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/renderers/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CA4BjE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../utils/cn";
|
|
3
|
+
export function BadgeRenderer({ value, column }) {
|
|
4
|
+
if (value === null || value === undefined) {
|
|
5
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
6
|
+
}
|
|
7
|
+
const option = column.options?.find((o) => o.value === value);
|
|
8
|
+
const label = option?.label ?? String(value);
|
|
9
|
+
const color = option?.color;
|
|
10
|
+
return (_jsx("span", { className: cn("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium border", !color && "bg-secondary text-secondary-foreground"), style: color
|
|
11
|
+
? {
|
|
12
|
+
backgroundColor: `${color}20`,
|
|
13
|
+
color: color,
|
|
14
|
+
borderColor: `${color}40`,
|
|
15
|
+
}
|
|
16
|
+
: undefined, children: label }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/renderers/badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAqB;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAE5B,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,gFAAgF,EAChF,CAAC,KAAK,IAAI,wCAAwC,CACnD,EACD,KAAK,EACH,KAAK;YACH,CAAC,CAAC;gBACE,eAAe,EAAE,GAAG,KAAK,IAAI;gBAC7B,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,GAAG,KAAK,IAAI;aAC1B;YACH,CAAC,CAAC,SAAS,YAGd,KAAK,GACD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/renderers/boolean.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAY3D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Check, X } from "lucide-react";
|
|
3
|
+
export function BooleanRenderer({ value }) {
|
|
4
|
+
if (value === null || value === undefined) {
|
|
5
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
6
|
+
}
|
|
7
|
+
const boolVal = value === true || value === "true" || value === 1;
|
|
8
|
+
return boolVal ? (_jsx(Check, { className: "h-4 w-4 text-green-600" })) : (_jsx(X, { className: "h-4 w-4 text-muted-foreground" }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=boolean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../src/renderers/boolean.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAqB;IAC1D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,CAAC;IAElE,OAAO,OAAO,CAAC,CAAC,CAAC,CACf,KAAC,KAAK,IAAC,SAAS,EAAC,wBAAwB,GAAG,CAC7C,CAAC,CAAC,CAAC,CACF,KAAC,CAAC,IAAC,SAAS,EAAC,+BAA+B,GAAG,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/renderers/date.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAmDhE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function DateRenderer({ value, column }) {
|
|
3
|
+
if (value === null || value === undefined) {
|
|
4
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
5
|
+
}
|
|
6
|
+
const date = value instanceof Date ? value : new Date(String(value));
|
|
7
|
+
if (Number.isNaN(date.getTime())) {
|
|
8
|
+
return _jsx("span", { children: String(value) });
|
|
9
|
+
}
|
|
10
|
+
const format = column.format;
|
|
11
|
+
let formatted;
|
|
12
|
+
if (format === "datetime") {
|
|
13
|
+
formatted = new Intl.DateTimeFormat(undefined, {
|
|
14
|
+
dateStyle: "medium",
|
|
15
|
+
timeStyle: "short",
|
|
16
|
+
}).format(date);
|
|
17
|
+
}
|
|
18
|
+
else if (format === "time") {
|
|
19
|
+
formatted = new Intl.DateTimeFormat(undefined, {
|
|
20
|
+
timeStyle: "short",
|
|
21
|
+
}).format(date);
|
|
22
|
+
}
|
|
23
|
+
else if (format === "relative") {
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
const diff = now - date.getTime();
|
|
26
|
+
const seconds = Math.floor(diff / 1000);
|
|
27
|
+
const minutes = Math.floor(seconds / 60);
|
|
28
|
+
const hours = Math.floor(minutes / 60);
|
|
29
|
+
const days = Math.floor(hours / 24);
|
|
30
|
+
if (days > 30) {
|
|
31
|
+
formatted = new Intl.DateTimeFormat(undefined, {
|
|
32
|
+
dateStyle: "medium",
|
|
33
|
+
}).format(date);
|
|
34
|
+
}
|
|
35
|
+
else if (days > 0) {
|
|
36
|
+
formatted = `${days}d ago`;
|
|
37
|
+
}
|
|
38
|
+
else if (hours > 0) {
|
|
39
|
+
formatted = `${hours}h ago`;
|
|
40
|
+
}
|
|
41
|
+
else if (minutes > 0) {
|
|
42
|
+
formatted = `${minutes}m ago`;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
formatted = "Just now";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Default: date only
|
|
50
|
+
formatted = new Intl.DateTimeFormat(undefined, {
|
|
51
|
+
dateStyle: "medium",
|
|
52
|
+
}).format(date);
|
|
53
|
+
}
|
|
54
|
+
return _jsx("span", { children: formatted });
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/renderers/date.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAqB;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACjC,OAAO,yBAAO,MAAM,CAAC,KAAK,CAAC,GAAQ,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,SAAiB,CAAC;IACtB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC7C,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC7C,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAEpC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YACd,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;gBAC7C,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACpB,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC;QAC7B,CAAC;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,GAAG,GAAG,KAAK,OAAO,CAAC;QAC9B,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS,GAAG,GAAG,OAAO,OAAO,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,UAAU,CAAC;QACzB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,qBAAqB;QACrB,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC7C,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,yBAAO,SAAS,GAAQ,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/renderers/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CA8BzD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../utils/cn";
|
|
3
|
+
export function ImageRenderer({ value }) {
|
|
4
|
+
if (value === null || value === undefined || value === "") {
|
|
5
|
+
return (_jsx("div", { className: "h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs text-muted-foreground", children: "?" }));
|
|
6
|
+
}
|
|
7
|
+
const src = String(value);
|
|
8
|
+
return (_jsx("img", { src: src, alt: "", className: cn("h-8 w-8 rounded-full object-cover", "bg-muted"), onError: (e) => {
|
|
9
|
+
const target = e.target;
|
|
10
|
+
target.style.display = "none";
|
|
11
|
+
const fallback = document.createElement("div");
|
|
12
|
+
fallback.className =
|
|
13
|
+
"h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs text-muted-foreground";
|
|
14
|
+
fallback.textContent = "?";
|
|
15
|
+
target.parentNode?.appendChild(fallback);
|
|
16
|
+
} }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/renderers/image.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAqB;IACxD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,CACL,cAAK,SAAS,EAAC,8FAA8F,kBAEvG,CACP,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAC,EAAE,EACN,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,UAAU,CACX,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS;gBAChB,8FAA8F,CAAC;YACjG,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;YAC3B,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,GACD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CellRenderer } from "../types";
|
|
2
|
+
import { TextRenderer } from "./text";
|
|
3
|
+
import { NumberRenderer } from "./number";
|
|
4
|
+
import { DateRenderer } from "./date";
|
|
5
|
+
import { BooleanRenderer } from "./boolean";
|
|
6
|
+
import { BadgeRenderer } from "./badge";
|
|
7
|
+
import { LinkRenderer } from "./link";
|
|
8
|
+
import { ImageRenderer } from "./image";
|
|
9
|
+
import { ProgressRenderer } from "./progress";
|
|
10
|
+
import { TagsRenderer } from "./tags";
|
|
11
|
+
import { ActionsRenderer } from "./actions";
|
|
12
|
+
/**
|
|
13
|
+
* Built-in cell renderer registry.
|
|
14
|
+
* Maps column type strings to React components.
|
|
15
|
+
*/
|
|
16
|
+
declare const defaultRenderers: Record<string, CellRenderer>;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a cell renderer by type.
|
|
19
|
+
* Checks custom renderers first, then built-in registry, falls back to TextRenderer.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveRenderer(type: string, customRenderers?: Record<string, CellRenderer>): CellRenderer;
|
|
22
|
+
export { TextRenderer, NumberRenderer, DateRenderer, BooleanRenderer, BadgeRenderer, LinkRenderer, ImageRenderer, ProgressRenderer, TagsRenderer, ActionsRenderer, defaultRenderers, };
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;GAGG;AACH,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAmBlD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAC7C,YAAY,CAEd;AAED,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { TextRenderer } from "./text";
|
|
2
|
+
import { NumberRenderer } from "./number";
|
|
3
|
+
import { DateRenderer } from "./date";
|
|
4
|
+
import { BooleanRenderer } from "./boolean";
|
|
5
|
+
import { BadgeRenderer } from "./badge";
|
|
6
|
+
import { LinkRenderer } from "./link";
|
|
7
|
+
import { ImageRenderer } from "./image";
|
|
8
|
+
import { ProgressRenderer } from "./progress";
|
|
9
|
+
import { TagsRenderer } from "./tags";
|
|
10
|
+
import { ActionsRenderer } from "./actions";
|
|
11
|
+
/**
|
|
12
|
+
* Built-in cell renderer registry.
|
|
13
|
+
* Maps column type strings to React components.
|
|
14
|
+
*/
|
|
15
|
+
const defaultRenderers = {
|
|
16
|
+
string: TextRenderer,
|
|
17
|
+
text: TextRenderer,
|
|
18
|
+
number: NumberRenderer,
|
|
19
|
+
integer: NumberRenderer,
|
|
20
|
+
float: NumberRenderer,
|
|
21
|
+
date: DateRenderer,
|
|
22
|
+
datetime: DateRenderer,
|
|
23
|
+
boolean: BooleanRenderer,
|
|
24
|
+
badge: BadgeRenderer,
|
|
25
|
+
status: BadgeRenderer,
|
|
26
|
+
link: LinkRenderer,
|
|
27
|
+
url: LinkRenderer,
|
|
28
|
+
image: ImageRenderer,
|
|
29
|
+
avatar: ImageRenderer,
|
|
30
|
+
progress: ProgressRenderer,
|
|
31
|
+
tags: TagsRenderer,
|
|
32
|
+
array: TagsRenderer,
|
|
33
|
+
actions: ActionsRenderer,
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a cell renderer by type.
|
|
37
|
+
* Checks custom renderers first, then built-in registry, falls back to TextRenderer.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveRenderer(type, customRenderers) {
|
|
40
|
+
return customRenderers?.[type] ?? defaultRenderers[type] ?? TextRenderer;
|
|
41
|
+
}
|
|
42
|
+
export { TextRenderer, NumberRenderer, DateRenderer, BooleanRenderer, BadgeRenderer, LinkRenderer, ImageRenderer, ProgressRenderer, TagsRenderer, ActionsRenderer, defaultRenderers, };
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;GAGG;AACH,MAAM,gBAAgB,GAAiC;IACrD,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,gBAAgB;IAC1B,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,eAAe;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,eAA8C;IAE9C,OAAO,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;AAC3E,CAAC;AAED,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/renderers/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAkBxD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function LinkRenderer({ value }) {
|
|
3
|
+
if (value === null || value === undefined) {
|
|
4
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
5
|
+
}
|
|
6
|
+
const url = String(value);
|
|
7
|
+
return (_jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: "text-primary underline underline-offset-4 hover:text-primary/80 truncate", onClick: (e) => e.stopPropagation(), children: url }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/renderers/link.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAqB;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO,CACL,YACE,IAAI,EAAE,GAAG,EACT,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,0EAA0E,EACpF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,YAElC,GAAG,GACF,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/renderers/number.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAgClE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function NumberRenderer({ value, column }) {
|
|
3
|
+
if (value === null || value === undefined) {
|
|
4
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
5
|
+
}
|
|
6
|
+
const num = typeof value === "number" ? value : Number(value);
|
|
7
|
+
if (Number.isNaN(num)) {
|
|
8
|
+
return _jsx("span", { children: String(value) });
|
|
9
|
+
}
|
|
10
|
+
let formatted;
|
|
11
|
+
const format = column.format;
|
|
12
|
+
if (format === "currency") {
|
|
13
|
+
formatted = new Intl.NumberFormat(undefined, {
|
|
14
|
+
style: "currency",
|
|
15
|
+
currency: "USD",
|
|
16
|
+
}).format(num);
|
|
17
|
+
}
|
|
18
|
+
else if (format === "percent") {
|
|
19
|
+
formatted = new Intl.NumberFormat(undefined, {
|
|
20
|
+
style: "percent",
|
|
21
|
+
minimumFractionDigits: 1,
|
|
22
|
+
}).format(num / 100);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
formatted = new Intl.NumberFormat().format(num);
|
|
26
|
+
}
|
|
27
|
+
return (_jsx("span", { className: column.align === "right" ? "text-right block" : "", children: formatted }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/renderers/number.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAqB;IACjE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,yBAAO,MAAM,CAAC,KAAK,CAAC,GAAQ,CAAC;IACtC,CAAC;IAED,IAAI,SAAiB,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC3C,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC3C,KAAK,EAAE,SAAS;YAChB,qBAAqB,EAAE,CAAC;SACzB,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CACL,eAAM,SAAS,EAAE,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,YAChE,SAAS,GACL,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/renderers/progress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAqB5D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function ProgressRenderer({ value }) {
|
|
3
|
+
if (value === null || value === undefined) {
|
|
4
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
5
|
+
}
|
|
6
|
+
const num = typeof value === "number" ? value : Number(value);
|
|
7
|
+
const clamped = Math.min(100, Math.max(0, Number.isNaN(num) ? 0 : num));
|
|
8
|
+
return (_jsxs("div", { className: "flex items-center gap-2 min-w-[80px]", children: [_jsx("div", { className: "flex-1 h-2 rounded-full bg-secondary overflow-hidden", children: _jsx("div", { className: "h-full rounded-full bg-primary transition-all", style: { width: `${clamped}%` } }) }), _jsxs("span", { className: "text-xs text-muted-foreground w-8 text-right", children: [Math.round(clamped), "%"] })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/renderers/progress.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAqB;IAC3D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,OAAO,CACL,eAAK,SAAS,EAAC,sCAAsC,aACnD,cAAK,SAAS,EAAC,sDAAsD,YACnE,cACE,SAAS,EAAC,+CAA+C,EACzD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,GAC/B,GACE,EACN,gBAAM,SAAS,EAAC,8CAA8C,aAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SACf,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/renderers/tags.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CA6ChE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../utils/cn";
|
|
3
|
+
export function TagsRenderer({ value, column }) {
|
|
4
|
+
if (value === null || value === undefined) {
|
|
5
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
6
|
+
}
|
|
7
|
+
const items = Array.isArray(value)
|
|
8
|
+
? value
|
|
9
|
+
: typeof value === "string"
|
|
10
|
+
? value.split(",").map((s) => s.trim())
|
|
11
|
+
: [value];
|
|
12
|
+
if (items.length === 0) {
|
|
13
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
14
|
+
}
|
|
15
|
+
return (_jsx("div", { className: "flex flex-wrap gap-1", children: items.map((item, i) => {
|
|
16
|
+
const str = String(item);
|
|
17
|
+
const option = column.options?.find((o) => String(o.value) === str);
|
|
18
|
+
const color = option?.color;
|
|
19
|
+
return (_jsx("span", { className: cn("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium border", !color && "bg-secondary text-secondary-foreground"), style: color
|
|
20
|
+
? {
|
|
21
|
+
backgroundColor: `${color}20`,
|
|
22
|
+
color: color,
|
|
23
|
+
borderColor: `${color}40`,
|
|
24
|
+
}
|
|
25
|
+
: undefined, children: option?.label ?? str }, `${str}-${i}`));
|
|
26
|
+
}) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/renderers/tags.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAqB;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAc,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YAClC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;YAE5B,OAAO,CACL,eAEE,SAAS,EAAE,EAAE,CACX,8EAA8E,EAC9E,CAAC,KAAK,IAAI,wCAAwC,CACnD,EACD,KAAK,EACH,KAAK;oBACH,CAAC,CAAC;wBACE,eAAe,EAAE,GAAG,KAAK,IAAI;wBAC7B,KAAK,EAAE,KAAK;wBACZ,WAAW,EAAE,GAAG,KAAK,IAAI;qBAC1B;oBACH,CAAC,CAAC,SAAS,YAGd,MAAM,EAAE,KAAK,IAAI,GAAG,IAfhB,GAAG,GAAG,IAAI,CAAC,EAAE,CAgBb,CACR,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/renderers/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAKxD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function TextRenderer({ value }) {
|
|
3
|
+
if (value === null || value === undefined) {
|
|
4
|
+
return _jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
5
|
+
}
|
|
6
|
+
return _jsx("span", { className: "truncate", children: String(value) });
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/renderers/text.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAqB;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAM,SAAS,EAAC,uBAAuB,uBAAS,CAAC;IAC1D,CAAC;IACD,OAAO,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,CAAC,KAAK,CAAC,GAAQ,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizer.d.ts","sourceRoot":"","sources":["../src/resizer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI3D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,EACtC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;CACrB,2CAkCA"}
|
package/dist/resizer.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { GripVertical } from "lucide-react";
|
|
3
|
+
import { cn } from "./utils/cn";
|
|
4
|
+
export function DataTableResizer({ header, }) {
|
|
5
|
+
const isResizing = header.column.getIsResizing();
|
|
6
|
+
return (_jsx("div", { onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), className: cn("absolute right-0 top-0 flex h-full w-4 cursor-col-resize select-none touch-none items-center justify-center", "opacity-0 group-hover/th:opacity-100 z-10", isResizing && "opacity-100"), "aria-hidden": "true", "data-resizing": isResizing ? "true" : undefined, children: _jsxs("div", { className: "flex h-4/5 items-center justify-center", children: [_jsx("div", { className: cn("h-4/5 w-0.5 transition-colors duration-200", isResizing ? "bg-primary" : "bg-border") }), _jsx(GripVertical, { className: cn("absolute h-4 w-4", isResizing
|
|
7
|
+
? "text-primary"
|
|
8
|
+
: "text-muted-foreground/70"), strokeWidth: 1.5 })] }) }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=resizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizer.js","sourceRoot":"","sources":["../src/resizer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEhC,MAAM,UAAU,gBAAgB,CAAQ,EACtC,MAAM,GAIP;IACC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAEjD,OAAO,CACL,cACE,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,EACtC,YAAY,EAAE,MAAM,CAAC,gBAAgB,EAAE,EACvC,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,2CAA2C,EAC3C,UAAU,IAAI,aAAa,CAC5B,iBACW,MAAM,mBACH,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAE9C,eAAK,SAAS,EAAC,wCAAwC,aACrD,cACE,SAAS,EAAE,EAAE,CACX,4CAA4C,EAC5C,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CACxC,GACD,EACF,KAAC,YAAY,IACX,SAAS,EAAE,EAAE,CACX,kBAAkB,EAClB,UAAU;wBACR,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAC,0BAA0B,CAC/B,EACD,WAAW,EAAE,GAAG,GAChB,IACE,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Row } from "@tanstack/react-table";
|
|
2
|
+
interface DataTableRowActionsProps<TData> {
|
|
3
|
+
row: Row<TData>;
|
|
4
|
+
onEdit?: (data: TData) => void;
|
|
5
|
+
onCopy?: (data: TData) => void;
|
|
6
|
+
onDelete?: (data: TData) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function DataTableRowActions<TData>({ row, onEdit, onCopy, onDelete, }: DataTableRowActionsProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=row-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-actions.d.ts","sourceRoot":"","sources":["../src/row-actions.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAiBjD,UAAU,wBAAwB,CAAC,KAAK;IACtC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,GAAG,EACH,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,wBAAwB,CAAC,KAAK,CAAC,2CAyDjC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
// ** import core packages
|
|
4
|
+
import { MoreHorizontal, Pencil, Copy, Trash2 } from "lucide-react";
|
|
5
|
+
// ** import components
|
|
6
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "./components/table-dropdown";
|
|
7
|
+
// ** import utils
|
|
8
|
+
import { cn } from "./utils/cn";
|
|
9
|
+
export function DataTableRowActions({ row, onEdit, onCopy, onDelete, }) {
|
|
10
|
+
const handleEdit = () => {
|
|
11
|
+
if (onEdit) {
|
|
12
|
+
onEdit(row.original);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
console.log("Edit:", row.original);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const handleCopy = () => {
|
|
19
|
+
if (onCopy) {
|
|
20
|
+
onCopy(row.original);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
console.log("Copy:", row.original);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const handleDelete = () => {
|
|
27
|
+
if (onDelete) {
|
|
28
|
+
onDelete(row.original);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.log("Delete:", row.original);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs("button", { className: cn("inline-flex h-8 w-8 items-center justify-center rounded-md text-sm font-medium", "hover:bg-accent hover:text-accent-foreground transition-colors", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", "data-[state=open]:bg-muted"), children: [_jsx(MoreHorizontal, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Open menu" })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "w-[160px]", children: [_jsxs(DropdownMenuItem, { onClick: handleEdit, children: [_jsx(Pencil, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Edit"] }), _jsxs(DropdownMenuItem, { onClick: handleCopy, children: [_jsx(Copy, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Copy"] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: handleDelete, children: [_jsx(Trash2, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Delete"] })] })] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=row-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-actions.js","sourceRoot":"","sources":["../src/row-actions.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEpE,uBAAuB;AACvB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAErC,kBAAkB;AAClB,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAShC,MAAM,UAAU,mBAAmB,CAAQ,EACzC,GAAG,EACH,MAAM,EACN,MAAM,EACN,QAAQ,GACwB;IAChC,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,kBACE,SAAS,EAAE,EAAE,CACX,gFAAgF,EAChF,gEAAgE,EAChE,yEAAyE,EACzE,4BAA4B,CAC7B,aAED,KAAC,cAAc,IAAC,SAAS,EAAC,SAAS,GAAG,EACtC,eAAM,SAAS,EAAC,SAAS,0BAAiB,IACnC,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,WAAW,aACpD,MAAC,gBAAgB,IAAC,OAAO,EAAE,UAAU,aACnC,KAAC,MAAM,IAAC,SAAS,EAAC,2CAA2C,GAAG,YAE/C,EACnB,MAAC,gBAAgB,IAAC,OAAO,EAAE,UAAU,aACnC,KAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,GAAG,YAE7C,EACnB,KAAC,qBAAqB,KAAG,EACzB,MAAC,gBAAgB,IAAC,OAAO,EAAE,YAAY,aACrC,KAAC,MAAM,IAAC,SAAS,EAAC,2CAA2C,GAAG,cAE/C,IACC,IACT,CAChB,CAAC;AACJ,CAAC"}
|