pixelize-design-library 2.2.193 → 2.2.194

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 (209) hide show
  1. package/package.json +1 -1
  2. package/.claude/settings.local.json +0 -15
  3. package/coverage/clover.xml +0 -638
  4. package/coverage/coverage-final.json +0 -20
  5. package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
  6. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
  7. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
  8. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
  9. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
  10. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
  11. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
  12. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
  13. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
  14. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
  15. package/coverage/lcov-report/Table/Components/index.html +0 -266
  16. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
  17. package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
  18. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
  19. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
  20. package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
  21. package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
  22. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
  23. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
  24. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
  25. package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
  26. package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
  27. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
  28. package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
  29. package/coverage/lcov-report/Table/index.html +0 -176
  30. package/coverage/lcov-report/base.css +0 -224
  31. package/coverage/lcov-report/block-navigation.js +0 -87
  32. package/coverage/lcov-report/favicon.png +0 -0
  33. package/coverage/lcov-report/index.html +0 -146
  34. package/coverage/lcov-report/prettify.css +0 -1
  35. package/coverage/lcov-report/prettify.js +0 -2
  36. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  37. package/coverage/lcov-report/sorter.js +0 -210
  38. package/coverage/lcov.info +0 -1836
  39. package/dist/Assets/defaultLogo.tsx +0 -31
  40. package/dist/Theme/Dark/palette.d.ts +0 -370
  41. package/dist/Theme/Dark/palette.js +0 -372
  42. package/dist/components-v2/AlertDialog/AlertDialog.d.ts +0 -23
  43. package/dist/components-v2/AlertDialog/AlertDialog.js +0 -98
  44. package/dist/components-v2/Breadcrumbs/Breadcrumbs.d.ts +0 -14
  45. package/dist/components-v2/Breadcrumbs/Breadcrumbs.js +0 -66
  46. package/dist/components-v2/Charts/AreaChart.d.ts +0 -23
  47. package/dist/components-v2/Charts/AreaChart.js +0 -63
  48. package/dist/components-v2/Charts/BarChart.d.ts +0 -25
  49. package/dist/components-v2/Charts/BarChart.js +0 -57
  50. package/dist/components-v2/Charts/LineChart.d.ts +0 -23
  51. package/dist/components-v2/Charts/LineChart.js +0 -55
  52. package/dist/components-v2/Charts/PieChart.d.ts +0 -15
  53. package/dist/components-v2/Charts/PieChart.js +0 -54
  54. package/dist/components-v2/Charts/PolarChart.d.ts +0 -14
  55. package/dist/components-v2/Charts/PolarChart.js +0 -54
  56. package/dist/components-v2/Charts/chartOptions.d.ts +0 -7
  57. package/dist/components-v2/Charts/chartOptions.js +0 -41
  58. package/dist/components-v2/Charts/useChartTheme.d.ts +0 -22
  59. package/dist/components-v2/Charts/useChartTheme.js +0 -106
  60. package/dist/components-v2/ContactForm/ContactForm.d.ts +0 -25
  61. package/dist/components-v2/ContactForm/ContactForm.js +0 -116
  62. package/dist/components-v2/DatePicker/Calendar.d.ts +0 -19
  63. package/dist/components-v2/DatePicker/Calendar.js +0 -212
  64. package/dist/components-v2/DatePicker/DatePicker.d.ts +0 -46
  65. package/dist/components-v2/DatePicker/DatePicker.js +0 -189
  66. package/dist/components-v2/DatePicker/TimePicker.d.ts +0 -12
  67. package/dist/components-v2/DatePicker/TimePicker.js +0 -105
  68. package/dist/components-v2/DatePicker/utils.d.ts +0 -31
  69. package/dist/components-v2/DatePicker/utils.js +0 -109
  70. package/dist/components-v2/Drawer/Drawer.d.ts +0 -27
  71. package/dist/components-v2/Drawer/Drawer.js +0 -132
  72. package/dist/components-v2/FeedbackForm/FeedbackForm.d.ts +0 -26
  73. package/dist/components-v2/FeedbackForm/FeedbackForm.js +0 -112
  74. package/dist/components-v2/FileUploader/FileUploader.d.ts +0 -28
  75. package/dist/components-v2/FileUploader/FileUploader.js +0 -127
  76. package/dist/components-v2/Input/TextInput.d.ts +0 -41
  77. package/dist/components-v2/Input/TextInput.js +0 -169
  78. package/dist/components-v2/KanbanBoard/KanbanBoard.d.ts +0 -39
  79. package/dist/components-v2/KanbanBoard/KanbanBoard.js +0 -101
  80. package/dist/components-v2/Layout/AppLayout.d.ts +0 -22
  81. package/dist/components-v2/Layout/AppLayout.js +0 -53
  82. package/dist/components-v2/Loading/Loading.d.ts +0 -19
  83. package/dist/components-v2/Loading/Loading.js +0 -55
  84. package/dist/components-v2/Modal/Modal.d.ts +0 -30
  85. package/dist/components-v2/Modal/Modal.js +0 -82
  86. package/dist/components-v2/NavigationBar/NavigationBar.d.ts +0 -47
  87. package/dist/components-v2/NavigationBar/NavigationBar.js +0 -148
  88. package/dist/components-v2/Notification/Notification.d.ts +0 -22
  89. package/dist/components-v2/Notification/Notification.js +0 -113
  90. package/dist/components-v2/NumberInput/NumberInput.d.ts +0 -37
  91. package/dist/components-v2/NumberInput/NumberInput.js +0 -210
  92. package/dist/components-v2/PinInput/PinInput.d.ts +0 -26
  93. package/dist/components-v2/PinInput/PinInput.js +0 -138
  94. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +0 -18
  95. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.js +0 -91
  96. package/dist/components-v2/Select/Select.d.ts +0 -41
  97. package/dist/components-v2/Select/Select.js +0 -284
  98. package/dist/components-v2/Sidebar/Sidebar.d.ts +0 -41
  99. package/dist/components-v2/Sidebar/Sidebar.js +0 -182
  100. package/dist/components-v2/Slider/Slider.d.ts +0 -18
  101. package/dist/components-v2/Slider/Slider.js +0 -101
  102. package/dist/components-v2/Table/Table.d.ts +0 -7
  103. package/dist/components-v2/Table/Table.js +0 -172
  104. package/dist/components-v2/Table/TableProps.d.ts +0 -139
  105. package/dist/components-v2/Table/TableProps.js +0 -9
  106. package/dist/components-v2/Table/components/ActiveFilters.d.ts +0 -10
  107. package/dist/components-v2/Table/components/ActiveFilters.js +0 -70
  108. package/dist/components-v2/Table/components/BulkActionBar.d.ts +0 -11
  109. package/dist/components-v2/Table/components/BulkActionBar.js +0 -92
  110. package/dist/components-v2/Table/components/ColumnResizeHandle.d.ts +0 -7
  111. package/dist/components-v2/Table/components/ColumnResizeHandle.js +0 -41
  112. package/dist/components-v2/Table/components/Pagination.d.ts +0 -11
  113. package/dist/components-v2/Table/components/Pagination.js +0 -92
  114. package/dist/components-v2/Table/components/TableBody.d.ts +0 -23
  115. package/dist/components-v2/Table/components/TableBody.js +0 -69
  116. package/dist/components-v2/Table/components/TableCell.d.ts +0 -14
  117. package/dist/components-v2/Table/components/TableCell.js +0 -63
  118. package/dist/components-v2/Table/components/TableEmptyState.d.ts +0 -12
  119. package/dist/components-v2/Table/components/TableEmptyState.js +0 -55
  120. package/dist/components-v2/Table/components/TableErrorState.d.ts +0 -6
  121. package/dist/components-v2/Table/components/TableErrorState.js +0 -52
  122. package/dist/components-v2/Table/components/TableHeader.d.ts +0 -21
  123. package/dist/components-v2/Table/components/TableHeader.js +0 -94
  124. package/dist/components-v2/Table/components/TableRow.d.ts +0 -20
  125. package/dist/components-v2/Table/components/TableRow.js +0 -64
  126. package/dist/components-v2/Table/components/TableSearch.d.ts +0 -8
  127. package/dist/components-v2/Table/components/TableSearch.js +0 -47
  128. package/dist/components-v2/Table/filters/FilterChips.d.ts +0 -6
  129. package/dist/components-v2/Table/filters/FilterChips.js +0 -9
  130. package/dist/components-v2/Table/filters/LeftFilterPane.d.ts +0 -17
  131. package/dist/components-v2/Table/filters/LeftFilterPane.js +0 -105
  132. package/dist/components-v2/Table/filters/TableFilters.d.ts +0 -12
  133. package/dist/components-v2/Table/filters/TableFilters.js +0 -127
  134. package/dist/components-v2/Table/hooks/useColumnResize.d.ts +0 -15
  135. package/dist/components-v2/Table/hooks/useColumnResize.js +0 -104
  136. package/dist/components-v2/Table/hooks/useTable.d.ts +0 -58
  137. package/dist/components-v2/Table/hooks/useTable.js +0 -254
  138. package/dist/components-v2/Table/hooks/useTableKeyboard.d.ts +0 -25
  139. package/dist/components-v2/Table/hooks/useTableKeyboard.js +0 -112
  140. package/dist/components-v2/Table/hooks/useVirtualScroll.d.ts +0 -29
  141. package/dist/components-v2/Table/hooks/useVirtualScroll.js +0 -83
  142. package/dist/components-v2/Table/settings/ManageColumns.d.ts +0 -12
  143. package/dist/components-v2/Table/settings/ManageColumns.js +0 -59
  144. package/dist/components-v2/Table/settings/TableSettings.d.ts +0 -12
  145. package/dist/components-v2/Table/settings/TableSettings.js +0 -57
  146. package/dist/components-v2/Table/utils/filterUtils.d.ts +0 -7
  147. package/dist/components-v2/Table/utils/filterUtils.js +0 -149
  148. package/dist/components-v2/Table/utils/sortUtils.d.ts +0 -6
  149. package/dist/components-v2/Table/utils/sortUtils.js +0 -65
  150. package/dist/components-v2/Tag/Tag.d.ts +0 -15
  151. package/dist/components-v2/Tag/Tag.js +0 -87
  152. package/dist/components-v2/Timeline/Timeline.d.ts +0 -18
  153. package/dist/components-v2/Timeline/Timeline.js +0 -76
  154. package/dist/components-v2/Toaster/Toaster.d.ts +0 -61
  155. package/dist/components-v2/Toaster/Toaster.js +0 -63
  156. package/dist/components-v2/Toggle/Toggle.d.ts +0 -28
  157. package/dist/components-v2/Toggle/Toggle.js +0 -90
  158. package/dist/components-v2/ui/accordion.d.ts +0 -12
  159. package/dist/components-v2/ui/accordion.js +0 -104
  160. package/dist/components-v2/ui/alert.d.ts +0 -18
  161. package/dist/components-v2/ui/alert.js +0 -99
  162. package/dist/components-v2/ui/avatar.d.ts +0 -12
  163. package/dist/components-v2/ui/avatar.js +0 -80
  164. package/dist/components-v2/ui/badge.d.ts +0 -10
  165. package/dist/components-v2/ui/badge.js +0 -76
  166. package/dist/components-v2/ui/button.d.ts +0 -18
  167. package/dist/components-v2/ui/button.js +0 -97
  168. package/dist/components-v2/ui/checkbox.d.ts +0 -15
  169. package/dist/components-v2/ui/checkbox.js +0 -86
  170. package/dist/components-v2/ui/dialog.d.ts +0 -30
  171. package/dist/components-v2/ui/dialog.js +0 -115
  172. package/dist/components-v2/ui/dropdown-menu.d.ts +0 -26
  173. package/dist/components-v2/ui/dropdown-menu.js +0 -121
  174. package/dist/components-v2/ui/field.d.ts +0 -32
  175. package/dist/components-v2/ui/field.js +0 -62
  176. package/dist/components-v2/ui/form-field.d.ts +0 -25
  177. package/dist/components-v2/ui/form-field.js +0 -96
  178. package/dist/components-v2/ui/input.d.ts +0 -9
  179. package/dist/components-v2/ui/input.js +0 -73
  180. package/dist/components-v2/ui/label.d.ts +0 -10
  181. package/dist/components-v2/ui/label.js +0 -70
  182. package/dist/components-v2/ui/popover.d.ts +0 -9
  183. package/dist/components-v2/ui/popover.js +0 -60
  184. package/dist/components-v2/ui/progress.d.ts +0 -12
  185. package/dist/components-v2/ui/progress.js +0 -75
  186. package/dist/components-v2/ui/radio-group.d.ts +0 -17
  187. package/dist/components-v2/ui/radio-group.js +0 -91
  188. package/dist/components-v2/ui/select.d.ts +0 -24
  189. package/dist/components-v2/ui/select.js +0 -122
  190. package/dist/components-v2/ui/separator.d.ts +0 -5
  191. package/dist/components-v2/ui/separator.js +0 -55
  192. package/dist/components-v2/ui/skeleton.d.ts +0 -9
  193. package/dist/components-v2/ui/skeleton.js +0 -68
  194. package/dist/components-v2/ui/spinner.d.ts +0 -16
  195. package/dist/components-v2/ui/spinner.js +0 -64
  196. package/dist/components-v2/ui/switch.d.ts +0 -10
  197. package/dist/components-v2/ui/switch.js +0 -81
  198. package/dist/components-v2/ui/tabs.d.ts +0 -13
  199. package/dist/components-v2/ui/tabs.js +0 -95
  200. package/dist/components-v2/ui/textarea.d.ts +0 -10
  201. package/dist/components-v2/ui/textarea.js +0 -96
  202. package/dist/components-v2/ui/tooltip.d.ts +0 -17
  203. package/dist/components-v2/ui/tooltip.js +0 -75
  204. package/dist/lib/utils.d.ts +0 -2
  205. package/dist/lib/utils.js +0 -8
  206. package/dist/theme-v2/ThemeProvider.d.ts +0 -19
  207. package/dist/theme-v2/ThemeProvider.js +0 -149
  208. package/dist/theme-v2/dark.css +0 -47
  209. package/dist/theme-v2/tokens.css +0 -72
@@ -1,182 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Sidebar = Sidebar;
37
- const React = __importStar(require("react"));
38
- const framer_motion_1 = require("framer-motion");
39
- const lucide_react_1 = require("lucide-react");
40
- const utils_1 = require("../../lib/utils");
41
- const badge_1 = require("../ui/badge");
42
- const popover_1 = require("../ui/popover");
43
- const skeleton_1 = require("../ui/skeleton");
44
- const EXPANDED_WIDTH = 240;
45
- const COLLAPSED_WIDTH = 64;
46
- function Sidebar({ menus, activeItem, onItemClick, logo, companyName, collapsed: collapsedProp, onCollapsedChange, defaultCollapsed = false, mobileOpen = false, onMobileOpenChange, otherApps, footer, isLoading = false, className, }) {
47
- const isCollapsedControlled = collapsedProp !== undefined;
48
- const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);
49
- const collapsed = isCollapsedControlled ? collapsedProp : internalCollapsed;
50
- const toggleCollapsed = () => {
51
- const next = !collapsed;
52
- if (!isCollapsedControlled)
53
- setInternalCollapsed(next);
54
- onCollapsedChange === null || onCollapsedChange === void 0 ? void 0 : onCollapsedChange(next);
55
- };
56
- return (React.createElement(React.Fragment, null,
57
- React.createElement(framer_motion_1.motion.aside, { "aria-label": "Main navigation", animate: { width: collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, initial: false, transition: { duration: 0.2, ease: "easeInOut" }, className: (0, utils_1.cn)("sticky top-0 hidden h-screen shrink-0 flex-col border-r border-border bg-card text-card-foreground md:flex", className) },
58
- React.createElement(SidebarBody, { menus: menus, activeItem: activeItem, onItemClick: onItemClick, logo: logo, companyName: companyName, collapsed: collapsed, onToggleCollapsed: toggleCollapsed, otherApps: otherApps, footer: footer, isLoading: isLoading })),
59
- React.createElement(framer_motion_1.AnimatePresence, null, mobileOpen && (React.createElement(React.Fragment, null,
60
- React.createElement(framer_motion_1.motion.div, { key: "sidebar-backdrop", initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.15 }, onClick: () => onMobileOpenChange === null || onMobileOpenChange === void 0 ? void 0 : onMobileOpenChange(false), className: "fixed inset-0 z-40 bg-foreground/40 backdrop-blur-sm md:hidden", "aria-hidden": "true" }),
61
- React.createElement(framer_motion_1.motion.aside, { key: "sidebar-drawer", initial: { x: "-100%" }, animate: { x: 0 }, exit: { x: "-100%" }, transition: { duration: 0.2, ease: "easeInOut" }, className: (0, utils_1.cn)("fixed inset-y-0 left-0 z-50 flex w-60 flex-col border-r border-border bg-card text-card-foreground md:hidden", className), "aria-label": "Main navigation" },
62
- React.createElement(SidebarBody, { menus: menus, activeItem: activeItem, onItemClick: (item) => {
63
- onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item);
64
- onMobileOpenChange === null || onMobileOpenChange === void 0 ? void 0 : onMobileOpenChange(false);
65
- }, logo: logo, companyName: companyName, collapsed: false, onToggleCollapsed: () => onMobileOpenChange === null || onMobileOpenChange === void 0 ? void 0 : onMobileOpenChange(false), otherApps: otherApps, footer: footer, isLoading: isLoading, isMobileDrawer: true })))))));
66
- }
67
- function SidebarBody({ menus, activeItem, onItemClick, logo, companyName, collapsed, onToggleCollapsed, otherApps, footer, isLoading, isMobileDrawer = false, }) {
68
- var _a, _b;
69
- return (React.createElement("nav", { className: "flex h-full min-h-0 flex-col", "aria-label": "Sidebar" },
70
- React.createElement("div", { className: (0, utils_1.cn)("flex h-14 shrink-0 items-center gap-2 border-b border-border px-3", collapsed && "justify-center px-2") },
71
- logo ? (React.createElement("img", { src: logo, alt: "", className: "h-7 w-7 shrink-0 rounded-md object-contain" })) : (React.createElement("div", { className: "grid h-7 w-7 shrink-0 place-items-center rounded-md bg-primary text-xs font-semibold text-primary-foreground" }, (_b = (_a = companyName === null || companyName === void 0 ? void 0 : companyName[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== null && _b !== void 0 ? _b : "P")),
72
- !collapsed && companyName && (React.createElement("span", { className: "truncate text-sm font-semibold text-foreground" }, companyName))),
73
- React.createElement("ul", { className: "flex-1 overflow-y-auto px-2 py-3", role: "list" }, isLoading
74
- ? Array.from({ length: 5 }).map((_, index) => (React.createElement("li", { key: `skeleton-${index}`, className: "mb-1" },
75
- React.createElement("div", { className: (0, utils_1.cn)("flex items-center gap-2 px-2 py-1.5", collapsed && "justify-center") },
76
- React.createElement(skeleton_1.Skeleton, { variant: "rectangle", className: "h-5 w-5 rounded" }),
77
- !collapsed && (React.createElement(skeleton_1.Skeleton, { variant: "text", className: "h-3 w-24" }))))))
78
- : menus.map((item) => (React.createElement(SidebarMenuRow, { key: item.id, item: item, activeItem: activeItem, collapsed: collapsed, onItemClick: onItemClick })))),
79
- otherApps && otherApps.length > 0 && (React.createElement("div", { className: "shrink-0 border-t border-border px-2 py-2" }, collapsed ? (React.createElement(popover_1.Popover, null,
80
- React.createElement(popover_1.PopoverTrigger, { asChild: true },
81
- React.createElement("button", { type: "button", "aria-label": "Other apps", className: "flex h-9 w-full items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" },
82
- React.createElement(lucide_react_1.Grid3x3, { "aria-hidden": "true", className: "h-4 w-4" }))),
83
- React.createElement(popover_1.PopoverContent, { side: "right", align: "end", className: "w-56 p-1" },
84
- React.createElement(OtherAppsList, { apps: otherApps })))) : (React.createElement(React.Fragment, null,
85
- React.createElement("p", { className: "px-2 pb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground" }, "Other apps"),
86
- React.createElement(OtherAppsList, { apps: otherApps }))))),
87
- footer && (React.createElement("div", { className: "shrink-0 border-t border-border px-2 py-2" }, footer)),
88
- React.createElement("div", { className: "shrink-0 border-t border-border px-2 py-2" },
89
- React.createElement("button", { type: "button", onClick: onToggleCollapsed, "aria-label": isMobileDrawer
90
- ? "Close sidebar"
91
- : collapsed
92
- ? "Expand sidebar"
93
- : "Collapse sidebar", "aria-expanded": !collapsed, className: "flex h-8 w-full items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" },
94
- React.createElement(lucide_react_1.ChevronLeft, { "aria-hidden": "true", className: (0, utils_1.cn)("h-4 w-4 transition-transform motion-safe:duration-200", collapsed && "rotate-180") })))));
95
- }
96
- function SidebarMenuRow({ item, activeItem, collapsed, onItemClick, nested = false, }) {
97
- var _a;
98
- const hasChildren = !!item.children && item.children.length > 0;
99
- const isActive = activeItem === item.id;
100
- const childActive = hasChildren &&
101
- item.children.some((child) => child.id === activeItem);
102
- const [expanded, setExpanded] = React.useState(childActive);
103
- React.useEffect(() => {
104
- if (childActive)
105
- setExpanded(true);
106
- }, [childActive]);
107
- const [hoverOpen, setHoverOpen] = React.useState(false);
108
- const closeTimer = React.useRef(null);
109
- const scheduleClose = () => {
110
- if (closeTimer.current)
111
- window.clearTimeout(closeTimer.current);
112
- closeTimer.current = window.setTimeout(() => setHoverOpen(false), 120);
113
- };
114
- const cancelClose = () => {
115
- if (closeTimer.current)
116
- window.clearTimeout(closeTimer.current);
117
- setHoverOpen(true);
118
- };
119
- const handleClick = (event) => {
120
- if (item.disabled)
121
- return;
122
- event.preventDefault();
123
- if (hasChildren && !collapsed) {
124
- setExpanded((prev) => !prev);
125
- return;
126
- }
127
- onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item);
128
- };
129
- const IconComponent = item.icon;
130
- const trigger = (React.createElement("button", { type: "button", disabled: item.disabled, "aria-current": isActive ? "page" : undefined, "aria-disabled": item.disabled || undefined, "aria-haspopup": hasChildren ? "menu" : undefined, "aria-expanded": hasChildren ? expanded || hoverOpen : undefined, "aria-label": collapsed ? item.title : undefined, onClick: handleClick, onMouseEnter: collapsed && hasChildren ? cancelClose : undefined, onMouseLeave: collapsed && hasChildren ? scheduleClose : undefined, className: (0, utils_1.cn)("group relative flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm transition-colors", "text-muted-foreground hover:bg-accent hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:cursor-not-allowed disabled:opacity-50", isActive && "bg-primary/10 text-primary hover:bg-primary/15", collapsed && "justify-center px-2", nested && "py-1 text-xs") },
131
- isActive && (React.createElement("span", { "aria-hidden": "true", className: "absolute left-0 top-1/2 h-5 w-0.5 -translate-y-1/2 rounded-r bg-primary" })),
132
- IconComponent ? (React.createElement(IconComponent, { "aria-hidden": "true", className: (0, utils_1.cn)("h-4 w-4 shrink-0", isActive && "text-primary") })) : (React.createElement("span", { "aria-hidden": "true", className: "h-4 w-4 shrink-0 rounded-sm bg-muted" })),
133
- !collapsed && (React.createElement(React.Fragment, null,
134
- React.createElement("span", { className: "flex-1 truncate text-left" }, item.title),
135
- item.badge && (React.createElement(badge_1.Badge, { variant: badgeVariant(item.badge.variant), size: "sm", className: "px-1.5 py-0 text-[10px]" }, (_a = item.badge.label) !== null && _a !== void 0 ? _a : item.badge.count)),
136
- hasChildren && (React.createElement(lucide_react_1.ChevronDown, { "aria-hidden": "true", className: (0, utils_1.cn)("h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform motion-safe:duration-200", expanded && "rotate-180") })))),
137
- collapsed && item.badge && (React.createElement("span", { "aria-hidden": "true", className: (0, utils_1.cn)("absolute right-1 top-1 h-1.5 w-1.5 rounded-full", badgeDot(item.badge.variant)) }))));
138
- if (collapsed && hasChildren) {
139
- return (React.createElement("li", null,
140
- React.createElement(popover_1.Popover, { open: hoverOpen, onOpenChange: setHoverOpen },
141
- React.createElement(popover_1.PopoverTrigger, { asChild: true }, trigger),
142
- React.createElement(popover_1.PopoverContent, { side: "right", align: "start", sideOffset: 8, onMouseEnter: cancelClose, onMouseLeave: scheduleClose, className: "w-56 p-1" },
143
- React.createElement("div", { className: "px-2 py-1 text-xs font-semibold text-muted-foreground" }, item.title),
144
- React.createElement("ul", { role: "list" }, item.children.map((child) => (React.createElement(SidebarMenuRow, { key: child.id, item: child, activeItem: activeItem, collapsed: false, onItemClick: (value) => {
145
- setHoverOpen(false);
146
- onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(value);
147
- }, nested: true }))))))));
148
- }
149
- return (React.createElement("li", null,
150
- trigger,
151
- hasChildren && !collapsed && (React.createElement(framer_motion_1.AnimatePresence, { initial: false }, expanded && (React.createElement(framer_motion_1.motion.ul, { key: "submenu", initial: { height: 0, opacity: 0 }, animate: { height: "auto", opacity: 1 }, exit: { height: 0, opacity: 0 }, transition: { duration: 0.18, ease: "easeInOut" }, className: "ml-5 mt-0.5 overflow-hidden border-l border-border pl-2", role: "list" }, item.children.map((child) => (React.createElement(SidebarMenuRow, { key: child.id, item: child, activeItem: activeItem, collapsed: false, onItemClick: onItemClick, nested: true })))))))));
152
- }
153
- function OtherAppsList({ apps }) {
154
- return (React.createElement("ul", { role: "list" }, apps.map((app) => (React.createElement("li", { key: app.id },
155
- React.createElement("a", { href: app.url, className: "flex items-center gap-2 rounded-md px-2 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" },
156
- app.iconUrl ? (React.createElement("img", { src: app.iconUrl, alt: "", className: "h-4 w-4 rounded-sm object-contain" })) : app.icon ? (React.createElement(app.icon, { "aria-hidden": "true", className: "h-4 w-4" })) : (React.createElement(lucide_react_1.Grid3x3, { "aria-hidden": "true", className: "h-4 w-4" })),
157
- React.createElement("span", { className: "truncate" }, app.name)))))));
158
- }
159
- function badgeVariant(variant) {
160
- switch (variant) {
161
- case "destructive":
162
- return "destructive";
163
- case "success":
164
- return "success";
165
- case "warning":
166
- return "warning";
167
- default:
168
- return "default";
169
- }
170
- }
171
- function badgeDot(variant) {
172
- switch (variant) {
173
- case "destructive":
174
- return "bg-destructive";
175
- case "success":
176
- return "bg-success";
177
- case "warning":
178
- return "bg-warning";
179
- default:
180
- return "bg-primary";
181
- }
182
- }
@@ -1,18 +0,0 @@
1
- import * as React from "react";
2
- import * as SliderPrimitive from "@radix-ui/react-slider";
3
- export interface SliderMark {
4
- value: number;
5
- label?: React.ReactNode;
6
- }
7
- export interface SliderProps extends Omit<React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>, "value" | "defaultValue" | "onValueChange"> {
8
- /** Single value or pair for range mode. */
9
- value?: number | number[];
10
- defaultValue?: number | number[];
11
- onValueChange?: (value: number | number[]) => void;
12
- /** Show tooltip with current value on the thumb. */
13
- showTooltip?: boolean;
14
- /** Marks rendered along the track. */
15
- marks?: SliderMark[];
16
- formatValue?: (value: number) => string;
17
- }
18
- export declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLSpanElement>>;
@@ -1,101 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __rest = (this && this.__rest) || function (s, e) {
36
- var t = {};
37
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
38
- t[p] = s[p];
39
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
40
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
41
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
42
- t[p[i]] = s[p[i]];
43
- }
44
- return t;
45
- };
46
- Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.Slider = void 0;
48
- const React = __importStar(require("react"));
49
- const SliderPrimitive = __importStar(require("@radix-ui/react-slider"));
50
- const utils_1 = require("../../lib/utils");
51
- const tooltip_1 = require("../ui/tooltip");
52
- exports.Slider = React.forwardRef((_a, ref) => {
53
- var { className, value, defaultValue, onValueChange, showTooltip = false, marks, formatValue = String, min = 0, max = 100, step = 1 } = _a, rest = __rest(_a, ["className", "value", "defaultValue", "onValueChange", "showTooltip", "marks", "formatValue", "min", "max", "step"]);
54
- const isRange = Array.isArray(value)
55
- ? value.length > 1
56
- : Array.isArray(defaultValue)
57
- ? defaultValue.length > 1
58
- : false;
59
- const internalValue = React.useMemo(() => {
60
- var _a;
61
- const source = (_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : (isRange ? [min, max] : [min]);
62
- return Array.isArray(source) ? source : [source];
63
- }, [value, defaultValue, isRange, min, max]);
64
- const [trackedValue, setTrackedValue] = React.useState(internalValue);
65
- const displayValue = value !== undefined
66
- ? Array.isArray(value)
67
- ? value
68
- : [value]
69
- : trackedValue;
70
- return (React.createElement("div", { className: (0, utils_1.cn)("w-full select-none", className) },
71
- React.createElement(SliderPrimitive.Root, Object.assign({ ref: ref, value: displayValue, defaultValue: defaultValue !== undefined
72
- ? Array.isArray(defaultValue)
73
- ? defaultValue
74
- : [defaultValue]
75
- : undefined, onValueChange: (next) => {
76
- setTrackedValue(next);
77
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(isRange ? next : next[0]);
78
- }, min: min, max: max, step: step, className: "relative flex h-5 w-full touch-none items-center" }, rest),
79
- React.createElement(SliderPrimitive.Track, { className: "relative h-1 w-full grow overflow-hidden rounded-full bg-muted" },
80
- React.createElement(SliderPrimitive.Range, { className: "absolute h-full bg-primary" })),
81
- displayValue.map((thumbValue, index) => {
82
- const thumb = (React.createElement(SliderPrimitive.Thumb, { key: index, "aria-label": isRange
83
- ? index === 0
84
- ? "Minimum value"
85
- : "Maximum value"
86
- : "Value", className: (0, utils_1.cn)("block h-4 w-4 rounded-full border-2 border-primary bg-background shadow-sm transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", "disabled:pointer-events-none disabled:opacity-50") }));
87
- if (!showTooltip)
88
- return thumb;
89
- return (React.createElement(tooltip_1.Tooltip, { key: index, open: true },
90
- React.createElement(tooltip_1.TooltipTrigger, { asChild: true }, thumb),
91
- React.createElement(tooltip_1.TooltipContent, { side: "top", sideOffset: 6 }, formatValue(thumbValue))));
92
- })),
93
- marks && marks.length > 0 && (React.createElement("div", { "aria-hidden": "true", className: "relative mt-1.5 h-4 text-[10px] text-muted-foreground" }, marks.map((mark) => {
94
- var _a;
95
- const ratio = (mark.value - min) / (max - min);
96
- return (React.createElement("span", { key: mark.value, style: {
97
- left: `${Math.min(Math.max(ratio, 0), 1) * 100}%`,
98
- }, className: "absolute -translate-x-1/2" }, (_a = mark.label) !== null && _a !== void 0 ? _a : mark.value));
99
- })))));
100
- });
101
- exports.Slider.displayName = "Slider";
@@ -1,7 +0,0 @@
1
- import * as React from "react";
2
- import { type ColumnDef, type TableProps } from "./TableProps";
3
- export declare function Table<T>(props: TableProps<T>): React.ReactElement;
4
- export declare namespace Table {
5
- var displayName: string;
6
- }
7
- export type { ColumnDef, TableProps };
@@ -1,172 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Table = Table;
37
- const React = __importStar(require("react"));
38
- const lucide_react_1 = require("lucide-react");
39
- const utils_1 = require("../../lib/utils");
40
- const button_1 = require("../ui/button");
41
- const dropdown_menu_1 = require("../ui/dropdown-menu");
42
- const ActiveFilters_1 = require("./components/ActiveFilters");
43
- const BulkActionBar_1 = require("./components/BulkActionBar");
44
- const Pagination_1 = require("./components/Pagination");
45
- const TableBody_1 = require("./components/TableBody");
46
- const TableEmptyState_1 = require("./components/TableEmptyState");
47
- const TableErrorState_1 = require("./components/TableErrorState");
48
- const TableHeader_1 = require("./components/TableHeader");
49
- const TableSearch_1 = require("./components/TableSearch");
50
- const LeftFilterPane_1 = require("./filters/LeftFilterPane");
51
- const TableFilters_1 = require("./filters/TableFilters");
52
- const useColumnResize_1 = require("./hooks/useColumnResize");
53
- const useTable_1 = require("./hooks/useTable");
54
- const useTableKeyboard_1 = require("./hooks/useTableKeyboard");
55
- const useVirtualScroll_1 = require("./hooks/useVirtualScroll");
56
- const ManageColumns_1 = require("./settings/ManageColumns");
57
- const TableSettings_1 = require("./settings/TableSettings");
58
- const TableProps_1 = require("./TableProps");
59
- const sortUtils_1 = require("./utils/sortUtils");
60
- const DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
61
- function Table(props) {
62
- const { data, columns, rowKey, selectable = false, selectedRows, onSelectionChange, selectionMode = "multi", onRowClick, rowClassName, sortable = true, defaultSort, onSortChange, filterable = true, defaultFilters, onFilterChange, searchable = true, searchPlaceholder, onSearchChange, isServerSearch = false, pagination = true, paginationMode = "client", defaultPageSize = 50, pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS, totalCount, onPageChange, isLoading = false, loadingRowCount = 5, error = null, onRetry, emptyState, emptyTitle, emptyDescription, emptyAction, density: densityProp = "default", maxHeight, virtualScroll, rowHeight, virtualScrollThreshold = 500, defaultHiddenColumns = [], showColumnToggle = true, columnResizable = true, stickyHeader = true, noBorders = false, bulkActions = [], filterSidebar, filterMode = "inline", preferences, headerActions, exportOptions, className, style, } = props;
63
- const tableState = (0, useTable_1.useTable)({
64
- data,
65
- columns,
66
- rowKey,
67
- selectable,
68
- selectionMode,
69
- selectedRows,
70
- onSelectionChange,
71
- sortable,
72
- defaultSort,
73
- onSortChange,
74
- filterable,
75
- defaultFilters,
76
- onFilterChange,
77
- searchable,
78
- onSearchChange,
79
- isServerSearch,
80
- pagination,
81
- paginationMode,
82
- defaultPageSize,
83
- totalCount,
84
- onPageChange,
85
- defaultHiddenColumns,
86
- density: densityProp,
87
- preferences,
88
- });
89
- const { pageData, processed, pageCount, visibleColumns, columnVisibility, setColumnHidden, columnWidths, setColumnWidth, density, setDensity, sort, setSort, filters, setFilters, searchQuery, setSearchQuery, selection, toggleRow, toggleAll, clearSelection, isAllSelected, isSomeSelected, pageIndex, pageSize, setPage, setPageSize, } = tableState;
90
- const resize = (0, useColumnResize_1.useColumnResize)({
91
- columns,
92
- columnWidths,
93
- setColumnWidth,
94
- enabled: columnResizable,
95
- });
96
- const scrollRef = React.useRef(null);
97
- const resolvedRowHeight = rowHeight !== null && rowHeight !== void 0 ? rowHeight : TableProps_1.ROW_HEIGHT[density];
98
- const virtual = (0, useVirtualScroll_1.useVirtualScroll)({
99
- rowCount: pageData.length,
100
- rowHeight: resolvedRowHeight,
101
- enabled: virtualScroll,
102
- threshold: virtualScrollThreshold,
103
- scrollContainerRef: scrollRef,
104
- });
105
- const keyboardEnabled = selectable || !!onRowClick;
106
- const keyboard = (0, useTableKeyboard_1.useTableKeyboard)({
107
- rowCount: pageData.length,
108
- columnCount: visibleColumns.length,
109
- hasSelectionColumn: selectable,
110
- onActivateRow: (rowIndex) => {
111
- const row = pageData[rowIndex];
112
- if (row && onRowClick) {
113
- onRowClick(row, {});
114
- }
115
- },
116
- onToggleRow: (rowIndex) => {
117
- const row = pageData[rowIndex];
118
- if (row)
119
- toggleRow((0, sortUtils_1.resolveRowKey)(row, rowKey));
120
- },
121
- onClearSelection: clearSelection,
122
- });
123
- const selectedKeys = React.useMemo(() => new Set(selection), [selection]);
124
- const selectedRowData = React.useMemo(() => data.filter((row) => selectedKeys.has((0, sortUtils_1.resolveRowKey)(row, rowKey))), [data, selectedKeys, rowKey]);
125
- const hasActiveFilters = filters.length > 0 || searchQuery.length > 0;
126
- const showSidebar = (filterSidebar === null || filterSidebar === void 0 ? void 0 : filterSidebar.enabled) && filterMode === "sidebar";
127
- const handleRemoveFilter = (filter) => {
128
- setFilters((prev) => prev.filter((f) => f !== filter));
129
- };
130
- const clearAllFilters = () => {
131
- setFilters([]);
132
- if (searchQuery)
133
- setSearchQuery("");
134
- };
135
- const totalRows = paginationMode === "server" ? totalCount !== null && totalCount !== void 0 ? totalCount : 0 : processed.length;
136
- const hasError = error !== null && error !== undefined;
137
- const isEmpty = !isLoading && !hasError && pageData.length === 0;
138
- return (React.createElement("div", { className: (0, utils_1.cn)("flex flex-col overflow-hidden rounded-md border border-border bg-card text-card-foreground", className), style: Object.assign({ "--row-height": `${resolvedRowHeight}px` }, style) },
139
- React.createElement("div", { className: "flex flex-wrap items-center justify-between gap-2 border-b border-border bg-card px-3 py-2" },
140
- React.createElement("div", { className: "flex flex-1 items-center gap-2" }, searchable && (React.createElement(TableSearch_1.TableSearch, { value: searchQuery, onChange: setSearchQuery, placeholder: searchPlaceholder }))),
141
- React.createElement("div", { className: "flex flex-wrap items-center gap-2" },
142
- filterable && filterMode === "inline" && (React.createElement(TableFilters_1.TableFilters, { columns: columns, filters: filters, onApply: (next) => setFilters(next) })),
143
- showColumnToggle && (React.createElement(ManageColumns_1.ManageColumns, { columns: columns, columnVisibility: columnVisibility, onChange: setColumnHidden })),
144
- React.createElement(TableSettings_1.TableSettings, { density: density, onDensityChange: setDensity }),
145
- exportOptions && exportOptions.length > 0 && (React.createElement(dropdown_menu_1.DropdownMenu, null,
146
- React.createElement(dropdown_menu_1.DropdownMenuTrigger, { asChild: true },
147
- React.createElement(button_1.Button, { size: "sm", variant: "outline", leftIcon: React.createElement(lucide_react_1.Download, null) }, "Export")),
148
- React.createElement(dropdown_menu_1.DropdownMenuContent, { align: "end" }, exportOptions.map((option) => (React.createElement(dropdown_menu_1.DropdownMenuItem, { key: option.label, onClick: () => option.onExport(processed, selectedRowData) },
149
- option.icon,
150
- option.label)))))),
151
- headerActions)),
152
- React.createElement(ActiveFilters_1.ActiveFilters, { filters: filters, columns: columns, onRemove: handleRemoveFilter, onClearAll: () => setFilters([]) }),
153
- React.createElement(BulkActionBar_1.BulkActionBar, { selectedCount: selection.length, selectedKeys: selection, selectedRows: selectedRowData, actions: bulkActions, onClear: clearSelection }),
154
- React.createElement("div", { className: "flex flex-1 overflow-hidden" },
155
- showSidebar && filterSidebar && filterSidebar.position !== "right" && (React.createElement(LeftFilterPane_1.LeftFilterPane, { filters: filterSidebar.filters, onApply: filterSidebar.onApply, isLoading: filterSidebar.isLoading })),
156
- React.createElement("div", { ref: scrollRef, role: keyboardEnabled ? "grid" : undefined, "aria-busy": isLoading || undefined, "aria-rowcount": pageData.length || undefined, "aria-colcount": visibleColumns.length + (selectable ? 1 : 0) || undefined, tabIndex: keyboardEnabled ? 0 : undefined, onKeyDown: keyboardEnabled ? keyboard.handleKeyDown : undefined, style: {
157
- maxHeight: typeof maxHeight === "number"
158
- ? `${maxHeight}px`
159
- : maxHeight,
160
- }, className: (0, utils_1.cn)("relative flex-1 overflow-auto", keyboardEnabled &&
161
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset") }, hasError ? (React.createElement(TableErrorState_1.TableErrorState, { error: error, onRetry: onRetry })) : isEmpty ? (emptyState !== null && emptyState !== void 0 ? emptyState : (React.createElement(TableEmptyState_1.TableEmptyState, { title: emptyTitle, description: emptyDescription, hasActiveFilters: hasActiveFilters, onClearFilters: hasActiveFilters ? clearAllFilters : undefined, action: emptyAction }))) : (React.createElement("table", { className: (0, utils_1.cn)("w-full border-collapse text-left", noBorders && "[&_td]:border-0"), style: { tableLayout: "fixed" } },
162
- React.createElement(TableHeader_1.TableHeader, { columns: visibleColumns, columnWidths: columnWidths, sortable: sortable, sort: sort, onSortChange: setSort, selectable: selectable, selectionMode: selectionMode, isAllSelected: isAllSelected, isSomeSelected: isSomeSelected, onToggleAll: toggleAll, resizable: columnResizable, resizingColumnId: resize.resizingColumnId, onResizePointerDown: resize.handlePointerDown, sticky: stickyHeader, focusedColIndex: keyboard.active.row === -1
163
- ? keyboard.active.col
164
- : -1, onCellClick: (colIndex) => keyboard.setActive({ row: -1, col: colIndex }) }),
165
- React.createElement(TableBody_1.TableBody, { data: pageData, columns: visibleColumns, rowKey: rowKey, columnWidths: columnWidths, selectable: selectable, selectedKeys: selectedKeys, onToggleSelect: (key) => toggleRow(key), onRowClick: onRowClick, rowClassName: rowClassName, striped: true, noBorders: noBorders, focusedRowIndex: keyboard.active.row, focusedColIndex: keyboard.active.col, onCellClick: (rowIndex, colIndex) => keyboard.setActive({
166
- row: rowIndex,
167
- col: colIndex,
168
- }), isLoading: isLoading, loadingRowCount: loadingRowCount, virtual: virtual })))),
169
- showSidebar && filterSidebar && filterSidebar.position === "right" && (React.createElement(LeftFilterPane_1.LeftFilterPane, { filters: filterSidebar.filters, onApply: filterSidebar.onApply, isLoading: filterSidebar.isLoading, position: "right" }))),
170
- pagination && !hasError && (React.createElement(Pagination_1.Pagination, { pageIndex: pageIndex, pageCount: pageCount, pageSize: pageSize, pageSizeOptions: pageSizeOptions, totalRows: totalRows, onPageChange: (page) => setPage(page), onPageSizeChange: (size) => setPageSize(size) }))));
171
- }
172
- Table.displayName = "Table";
@@ -1,139 +0,0 @@
1
- import type * as React from "react";
2
- export type SortDirection = "asc" | "desc" | null;
3
- export type FilterOperator = "equals" | "not_equals" | "contains" | "not_contains" | "starts_with" | "ends_with" | "greater_than" | "less_than" | "between" | "is_empty" | "is_not_empty" | "in" | "not_in";
4
- export type ColumnType = "text" | "number" | "date" | "boolean" | "select" | "custom";
5
- export type Density = "compact" | "default" | "comfortable";
6
- export interface ColumnDef<T = unknown> {
7
- id: string;
8
- header: string;
9
- accessorKey?: keyof T;
10
- accessorFn?: (row: T) => unknown;
11
- cell?: (value: unknown, row: T) => React.ReactNode;
12
- type?: ColumnType;
13
- sortable?: boolean;
14
- filterable?: boolean;
15
- filterOptions?: {
16
- label: string;
17
- value: unknown;
18
- }[];
19
- width?: number;
20
- minWidth?: number;
21
- maxWidth?: number;
22
- sticky?: "left" | "right";
23
- hidden?: boolean;
24
- enableHiding?: boolean;
25
- enableResizing?: boolean;
26
- align?: "left" | "center" | "right";
27
- meta?: Record<string, unknown>;
28
- }
29
- export interface ActiveFilter {
30
- columnId: string;
31
- operator: FilterOperator;
32
- /** A single value or [from, to] for `between` / array for `in`/`not_in`. */
33
- value: unknown;
34
- }
35
- export interface SortState {
36
- id: string;
37
- direction: SortDirection;
38
- }
39
- export type RowKey<T> = keyof T | ((row: T) => string | number);
40
- export interface FilterSidebarConfig {
41
- id: string;
42
- label: string;
43
- type: "select" | "multi-select" | "date-range" | "number-range" | "text";
44
- options?: {
45
- label: string;
46
- value: unknown;
47
- }[];
48
- }
49
- export interface BulkAction<T = unknown> {
50
- label: string;
51
- icon?: React.ReactNode;
52
- onClick: (selectedKeys: (string | number)[], selectedRows: T[]) => void;
53
- variant?: "default" | "destructive";
54
- /** When true, shows a confirmation dialog before invoking onClick. */
55
- confirm?: boolean | {
56
- title: string;
57
- description?: string;
58
- };
59
- }
60
- export interface ExportOption<T = unknown> {
61
- label: string;
62
- icon?: React.ReactNode;
63
- onExport: (data: T[], selectedRows: T[]) => void;
64
- }
65
- export interface TablePreferences {
66
- storageKey: string;
67
- }
68
- export interface PersistedTableState {
69
- columnVisibility?: Record<string, boolean>;
70
- columnOrder?: string[];
71
- columnWidths?: Record<string, number>;
72
- density?: Density;
73
- pageSize?: number;
74
- }
75
- export interface TableProps<T = unknown> {
76
- data: T[];
77
- columns: ColumnDef<T>[];
78
- rowKey: RowKey<T>;
79
- selectable?: boolean;
80
- selectedRows?: (string | number)[];
81
- onSelectionChange?: (selectedKeys: (string | number)[]) => void;
82
- selectionMode?: "single" | "multi";
83
- onRowClick?: (row: T, event: React.MouseEvent) => void;
84
- rowClassName?: (row: T) => string | undefined;
85
- sortable?: boolean;
86
- defaultSort?: SortState;
87
- onSortChange?: (sort: SortState | null) => void;
88
- filterable?: boolean;
89
- defaultFilters?: ActiveFilter[];
90
- onFilterChange?: (filters: ActiveFilter[]) => void;
91
- searchable?: boolean;
92
- searchPlaceholder?: string;
93
- onSearchChange?: (query: string) => void;
94
- isServerSearch?: boolean;
95
- pagination?: boolean;
96
- paginationMode?: "client" | "server";
97
- defaultPageSize?: number;
98
- pageSizeOptions?: number[];
99
- totalCount?: number;
100
- onPageChange?: (page: number, pageSize: number) => void;
101
- isLoading?: boolean;
102
- loadingRowCount?: number;
103
- error?: Error | string | null;
104
- onRetry?: () => void;
105
- emptyState?: React.ReactNode;
106
- emptyTitle?: string;
107
- emptyDescription?: string;
108
- emptyAction?: {
109
- label: string;
110
- onClick: () => void;
111
- };
112
- density?: Density;
113
- maxHeight?: number | string;
114
- virtualScroll?: boolean;
115
- /** Defaults to 44 (default density). */
116
- rowHeight?: number;
117
- /** Threshold for auto-enabling virtual scroll. Default 500. */
118
- virtualScrollThreshold?: number;
119
- defaultHiddenColumns?: string[];
120
- showColumnToggle?: boolean;
121
- columnResizable?: boolean;
122
- stickyHeader?: boolean;
123
- noBorders?: boolean;
124
- bulkActions?: BulkAction<T>[];
125
- filterSidebar?: {
126
- enabled: boolean;
127
- position?: "left" | "right";
128
- filters: FilterSidebarConfig[];
129
- onApply: (filters: Record<string, unknown>) => void;
130
- isLoading?: boolean;
131
- };
132
- filterMode?: "inline" | "sidebar" | "modal";
133
- preferences?: TablePreferences;
134
- headerActions?: React.ReactNode;
135
- exportOptions?: ExportOption<T>[];
136
- className?: string;
137
- style?: React.CSSProperties;
138
- }
139
- export declare const ROW_HEIGHT: Record<Density, number>;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ROW_HEIGHT = void 0;
4
- /* Density → row-height in px */
5
- exports.ROW_HEIGHT = {
6
- compact: 32,
7
- default: 44,
8
- comfortable: 56,
9
- };