@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.
Files changed (205) hide show
  1. package/dist/auto/auto-columns.d.ts +9 -0
  2. package/dist/auto/auto-columns.d.ts.map +1 -0
  3. package/dist/auto/auto-columns.js +39 -0
  4. package/dist/auto/auto-columns.js.map +1 -0
  5. package/dist/auto/auto-filters.d.ts +22 -0
  6. package/dist/auto/auto-filters.d.ts.map +1 -0
  7. package/dist/auto/auto-filters.js +15 -0
  8. package/dist/auto/auto-filters.js.map +1 -0
  9. package/dist/auto/rest-adapter.d.ts +34 -0
  10. package/dist/auto/rest-adapter.d.ts.map +1 -0
  11. package/dist/auto/rest-adapter.js +31 -0
  12. package/dist/auto/rest-adapter.js.map +1 -0
  13. package/dist/auto/static-adapter.d.ts +21 -0
  14. package/dist/auto/static-adapter.d.ts.map +1 -0
  15. package/dist/auto/static-adapter.js +116 -0
  16. package/dist/auto/static-adapter.js.map +1 -0
  17. package/dist/auto/tablecraft-adapter.d.ts +26 -0
  18. package/dist/auto/tablecraft-adapter.d.ts.map +1 -0
  19. package/dist/auto/tablecraft-adapter.js +143 -0
  20. package/dist/auto/tablecraft-adapter.js.map +1 -0
  21. package/dist/auto/use-auto-columns.d.ts +13 -0
  22. package/dist/auto/use-auto-columns.d.ts.map +1 -0
  23. package/dist/auto/use-auto-columns.js +53 -0
  24. package/dist/auto/use-auto-columns.js.map +1 -0
  25. package/dist/column-header.d.ts +8 -0
  26. package/dist/column-header.d.ts.map +1 -0
  27. package/dist/column-header.js +33 -0
  28. package/dist/column-header.js.map +1 -0
  29. package/dist/components/button.d.ts +12 -0
  30. package/dist/components/button.d.ts.map +1 -0
  31. package/dist/components/button.js +35 -0
  32. package/dist/components/button.js.map +1 -0
  33. package/dist/components/calendar-date-picker.d.ts +21 -0
  34. package/dist/components/calendar-date-picker.d.ts.map +1 -0
  35. package/dist/components/calendar-date-picker.js +333 -0
  36. package/dist/components/calendar-date-picker.js.map +1 -0
  37. package/dist/components/calendar.d.ts +9 -0
  38. package/dist/components/calendar.d.ts.map +1 -0
  39. package/dist/components/calendar.js +77 -0
  40. package/dist/components/calendar.js.map +1 -0
  41. package/dist/components/checkbox.d.ts +5 -0
  42. package/dist/components/checkbox.d.ts.map +1 -0
  43. package/dist/components/checkbox.js +10 -0
  44. package/dist/components/checkbox.js.map +1 -0
  45. package/dist/components/command.d.ts +79 -0
  46. package/dist/components/command.d.ts.map +1 -0
  47. package/dist/components/command.js +26 -0
  48. package/dist/components/command.js.map +1 -0
  49. package/dist/components/popover.d.ts +11 -0
  50. package/dist/components/popover.d.ts.map +1 -0
  51. package/dist/components/popover.js +27 -0
  52. package/dist/components/popover.js.map +1 -0
  53. package/dist/components/select.d.ts +14 -0
  54. package/dist/components/select.d.ts.map +1 -0
  55. package/dist/components/select.js +28 -0
  56. package/dist/components/select.js.map +1 -0
  57. package/dist/components/table-dropdown.d.ts +26 -0
  58. package/dist/components/table-dropdown.d.ts.map +1 -0
  59. package/dist/components/table-dropdown.js +52 -0
  60. package/dist/components/table-dropdown.js.map +1 -0
  61. package/dist/core/table-config.d.ts +12 -0
  62. package/dist/core/table-config.d.ts.map +1 -0
  63. package/dist/core/table-config.js +33 -0
  64. package/dist/core/table-config.js.map +1 -0
  65. package/dist/core/use-column-resize.d.ts +10 -0
  66. package/dist/core/use-column-resize.d.ts.map +1 -0
  67. package/dist/core/use-column-resize.js +83 -0
  68. package/dist/core/use-column-resize.js.map +1 -0
  69. package/dist/core/use-conditional-state.d.ts +14 -0
  70. package/dist/core/use-conditional-state.d.ts.map +1 -0
  71. package/dist/core/use-conditional-state.js +27 -0
  72. package/dist/core/use-conditional-state.js.map +1 -0
  73. package/dist/core/use-table-data.d.ts +64 -0
  74. package/dist/core/use-table-data.d.ts.map +1 -0
  75. package/dist/core/use-table-data.js +141 -0
  76. package/dist/core/use-table-data.js.map +1 -0
  77. package/dist/core/use-url-state.d.ts +14 -0
  78. package/dist/core/use-url-state.d.ts.map +1 -0
  79. package/dist/core/use-url-state.js +269 -0
  80. package/dist/core/use-url-state.js.map +1 -0
  81. package/dist/data-table.d.ts +3 -0
  82. package/dist/data-table.d.ts.map +1 -0
  83. package/dist/data-table.js +278 -0
  84. package/dist/data-table.js.map +1 -0
  85. package/dist/expand-icon.d.ts +9 -0
  86. package/dist/expand-icon.d.ts.map +1 -0
  87. package/dist/expand-icon.js +13 -0
  88. package/dist/expand-icon.js.map +1 -0
  89. package/dist/export.d.ts +13 -0
  90. package/dist/export.d.ts.map +1 -0
  91. package/dist/export.js +122 -0
  92. package/dist/export.js.map +1 -0
  93. package/dist/index.d.ts +34 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +35 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/pagination.d.ts +11 -0
  98. package/dist/pagination.d.ts.map +1 -0
  99. package/dist/pagination.js +49 -0
  100. package/dist/pagination.js.map +1 -0
  101. package/dist/renderers/actions.d.ts +8 -0
  102. package/dist/renderers/actions.d.ts.map +1 -0
  103. package/dist/renderers/actions.js +10 -0
  104. package/dist/renderers/actions.js.map +1 -0
  105. package/dist/renderers/badge.d.ts +3 -0
  106. package/dist/renderers/badge.d.ts.map +1 -0
  107. package/dist/renderers/badge.js +18 -0
  108. package/dist/renderers/badge.js.map +1 -0
  109. package/dist/renderers/boolean.d.ts +3 -0
  110. package/dist/renderers/boolean.d.ts.map +1 -0
  111. package/dist/renderers/boolean.js +10 -0
  112. package/dist/renderers/boolean.js.map +1 -0
  113. package/dist/renderers/date.d.ts +3 -0
  114. package/dist/renderers/date.d.ts.map +1 -0
  115. package/dist/renderers/date.js +56 -0
  116. package/dist/renderers/date.js.map +1 -0
  117. package/dist/renderers/image.d.ts +3 -0
  118. package/dist/renderers/image.d.ts.map +1 -0
  119. package/dist/renderers/image.js +18 -0
  120. package/dist/renderers/image.js.map +1 -0
  121. package/dist/renderers/index.d.ts +23 -0
  122. package/dist/renderers/index.d.ts.map +1 -0
  123. package/dist/renderers/index.js +43 -0
  124. package/dist/renderers/index.js.map +1 -0
  125. package/dist/renderers/link.d.ts +3 -0
  126. package/dist/renderers/link.d.ts.map +1 -0
  127. package/dist/renderers/link.js +9 -0
  128. package/dist/renderers/link.js.map +1 -0
  129. package/dist/renderers/number.d.ts +3 -0
  130. package/dist/renderers/number.d.ts.map +1 -0
  131. package/dist/renderers/number.js +29 -0
  132. package/dist/renderers/number.js.map +1 -0
  133. package/dist/renderers/progress.d.ts +3 -0
  134. package/dist/renderers/progress.d.ts.map +1 -0
  135. package/dist/renderers/progress.js +10 -0
  136. package/dist/renderers/progress.js.map +1 -0
  137. package/dist/renderers/tags.d.ts +3 -0
  138. package/dist/renderers/tags.d.ts.map +1 -0
  139. package/dist/renderers/tags.js +28 -0
  140. package/dist/renderers/tags.js.map +1 -0
  141. package/dist/renderers/text.d.ts +3 -0
  142. package/dist/renderers/text.d.ts.map +1 -0
  143. package/dist/renderers/text.js +8 -0
  144. package/dist/renderers/text.js.map +1 -0
  145. package/dist/resizer.d.ts +6 -0
  146. package/dist/resizer.d.ts.map +1 -0
  147. package/dist/resizer.js +10 -0
  148. package/dist/resizer.js.map +1 -0
  149. package/dist/row-actions.d.ts +10 -0
  150. package/dist/row-actions.d.ts.map +1 -0
  151. package/dist/row-actions.js +36 -0
  152. package/dist/row-actions.js.map +1 -0
  153. package/dist/toolbar.d.ts +35 -0
  154. package/dist/toolbar.d.ts.map +1 -0
  155. package/dist/toolbar.js +119 -0
  156. package/dist/toolbar.js.map +1 -0
  157. package/dist/types.d.ts +230 -0
  158. package/dist/types.d.ts.map +1 -0
  159. package/dist/types.js +2 -0
  160. package/dist/types.js.map +1 -0
  161. package/dist/utils/cn.d.ts +3 -0
  162. package/dist/utils/cn.d.ts.map +1 -0
  163. package/dist/utils/cn.js +6 -0
  164. package/dist/utils/cn.js.map +1 -0
  165. package/dist/utils/column-sizing.d.ts +18 -0
  166. package/dist/utils/column-sizing.d.ts.map +1 -0
  167. package/dist/utils/column-sizing.js +78 -0
  168. package/dist/utils/column-sizing.js.map +1 -0
  169. package/dist/utils/date-format.d.ts +13 -0
  170. package/dist/utils/date-format.d.ts.map +1 -0
  171. package/dist/utils/date-format.js +30 -0
  172. package/dist/utils/date-format.js.map +1 -0
  173. package/dist/utils/deep-utils.d.ts +15 -0
  174. package/dist/utils/deep-utils.d.ts.map +1 -0
  175. package/dist/utils/deep-utils.js +111 -0
  176. package/dist/utils/deep-utils.js.map +1 -0
  177. package/dist/utils/export-utils.d.ts +25 -0
  178. package/dist/utils/export-utils.d.ts.map +1 -0
  179. package/dist/utils/export-utils.js +170 -0
  180. package/dist/utils/export-utils.js.map +1 -0
  181. package/dist/utils/history-sync.d.ts +11 -0
  182. package/dist/utils/history-sync.d.ts.map +1 -0
  183. package/dist/utils/history-sync.js +45 -0
  184. package/dist/utils/history-sync.js.map +1 -0
  185. package/dist/utils/keyboard-navigation.d.ts +11 -0
  186. package/dist/utils/keyboard-navigation.d.ts.map +1 -0
  187. package/dist/utils/keyboard-navigation.js +39 -0
  188. package/dist/utils/keyboard-navigation.js.map +1 -0
  189. package/dist/utils/search.d.ts +10 -0
  190. package/dist/utils/search.d.ts.map +1 -0
  191. package/dist/utils/search.js +33 -0
  192. package/dist/utils/search.js.map +1 -0
  193. package/dist/utils/size-variants.d.ts +15 -0
  194. package/dist/utils/size-variants.d.ts.map +1 -0
  195. package/dist/utils/size-variants.js +42 -0
  196. package/dist/utils/size-variants.js.map +1 -0
  197. package/dist/utils/url-events.d.ts +2 -0
  198. package/dist/utils/url-events.d.ts.map +1 -0
  199. package/dist/utils/url-events.js +4 -0
  200. package/dist/utils/url-events.js.map +1 -0
  201. package/dist/view-options.d.ts +10 -0
  202. package/dist/view-options.d.ts.map +1 -0
  203. package/dist/view-options.js +104 -0
  204. package/dist/view-options.js.map +1 -0
  205. 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":"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"}
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function BadgeRenderer({ value, column }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=badge.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function BooleanRenderer({ value }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=boolean.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function DateRenderer({ value, column }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=date.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function ImageRenderer({ value }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=image.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function LinkRenderer({ value }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=link.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function NumberRenderer({ value, column }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=number.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function ProgressRenderer({ value }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=progress.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function TagsRenderer({ value, column }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=tags.d.ts.map
@@ -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,3 @@
1
+ import type { CellRendererProps } from "../types";
2
+ export declare function TextRenderer({ value }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=text.d.ts.map
@@ -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,6 @@
1
+ import type { Header, Table } from "@tanstack/react-table";
2
+ export declare function DataTableResizer<TData>({ header, }: {
3
+ header: Header<TData, unknown>;
4
+ table: Table<TData>;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=resizer.d.ts.map
@@ -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"}
@@ -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"}