pixelize-design-library 2.2.193 → 2.2.195

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 (213) hide show
  1. package/dist/Components/Table/Components/HeaderActions.js +22 -12
  2. package/dist/Components/Table/Table.js +4 -4
  3. package/dist/Components/Table/TableProps.d.ts +8 -3
  4. package/dist/Components/ToolTip/ToolTip.js +2 -2
  5. package/package.json +1 -1
  6. package/.claude/settings.local.json +0 -15
  7. package/coverage/clover.xml +0 -638
  8. package/coverage/coverage-final.json +0 -20
  9. package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
  10. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
  11. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
  12. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
  13. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
  14. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
  15. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
  16. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
  17. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
  18. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
  19. package/coverage/lcov-report/Table/Components/index.html +0 -266
  20. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
  21. package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
  22. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
  23. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
  24. package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
  25. package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
  26. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
  27. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
  28. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
  29. package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
  30. package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
  31. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
  32. package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
  33. package/coverage/lcov-report/Table/index.html +0 -176
  34. package/coverage/lcov-report/base.css +0 -224
  35. package/coverage/lcov-report/block-navigation.js +0 -87
  36. package/coverage/lcov-report/favicon.png +0 -0
  37. package/coverage/lcov-report/index.html +0 -146
  38. package/coverage/lcov-report/prettify.css +0 -1
  39. package/coverage/lcov-report/prettify.js +0 -2
  40. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  41. package/coverage/lcov-report/sorter.js +0 -210
  42. package/coverage/lcov.info +0 -1836
  43. package/dist/Assets/defaultLogo.tsx +0 -31
  44. package/dist/Theme/Dark/palette.d.ts +0 -370
  45. package/dist/Theme/Dark/palette.js +0 -372
  46. package/dist/components-v2/AlertDialog/AlertDialog.d.ts +0 -23
  47. package/dist/components-v2/AlertDialog/AlertDialog.js +0 -98
  48. package/dist/components-v2/Breadcrumbs/Breadcrumbs.d.ts +0 -14
  49. package/dist/components-v2/Breadcrumbs/Breadcrumbs.js +0 -66
  50. package/dist/components-v2/Charts/AreaChart.d.ts +0 -23
  51. package/dist/components-v2/Charts/AreaChart.js +0 -63
  52. package/dist/components-v2/Charts/BarChart.d.ts +0 -25
  53. package/dist/components-v2/Charts/BarChart.js +0 -57
  54. package/dist/components-v2/Charts/LineChart.d.ts +0 -23
  55. package/dist/components-v2/Charts/LineChart.js +0 -55
  56. package/dist/components-v2/Charts/PieChart.d.ts +0 -15
  57. package/dist/components-v2/Charts/PieChart.js +0 -54
  58. package/dist/components-v2/Charts/PolarChart.d.ts +0 -14
  59. package/dist/components-v2/Charts/PolarChart.js +0 -54
  60. package/dist/components-v2/Charts/chartOptions.d.ts +0 -7
  61. package/dist/components-v2/Charts/chartOptions.js +0 -41
  62. package/dist/components-v2/Charts/useChartTheme.d.ts +0 -22
  63. package/dist/components-v2/Charts/useChartTheme.js +0 -106
  64. package/dist/components-v2/ContactForm/ContactForm.d.ts +0 -25
  65. package/dist/components-v2/ContactForm/ContactForm.js +0 -116
  66. package/dist/components-v2/DatePicker/Calendar.d.ts +0 -19
  67. package/dist/components-v2/DatePicker/Calendar.js +0 -212
  68. package/dist/components-v2/DatePicker/DatePicker.d.ts +0 -46
  69. package/dist/components-v2/DatePicker/DatePicker.js +0 -189
  70. package/dist/components-v2/DatePicker/TimePicker.d.ts +0 -12
  71. package/dist/components-v2/DatePicker/TimePicker.js +0 -105
  72. package/dist/components-v2/DatePicker/utils.d.ts +0 -31
  73. package/dist/components-v2/DatePicker/utils.js +0 -109
  74. package/dist/components-v2/Drawer/Drawer.d.ts +0 -27
  75. package/dist/components-v2/Drawer/Drawer.js +0 -132
  76. package/dist/components-v2/FeedbackForm/FeedbackForm.d.ts +0 -26
  77. package/dist/components-v2/FeedbackForm/FeedbackForm.js +0 -112
  78. package/dist/components-v2/FileUploader/FileUploader.d.ts +0 -28
  79. package/dist/components-v2/FileUploader/FileUploader.js +0 -127
  80. package/dist/components-v2/Input/TextInput.d.ts +0 -41
  81. package/dist/components-v2/Input/TextInput.js +0 -169
  82. package/dist/components-v2/KanbanBoard/KanbanBoard.d.ts +0 -39
  83. package/dist/components-v2/KanbanBoard/KanbanBoard.js +0 -101
  84. package/dist/components-v2/Layout/AppLayout.d.ts +0 -22
  85. package/dist/components-v2/Layout/AppLayout.js +0 -53
  86. package/dist/components-v2/Loading/Loading.d.ts +0 -19
  87. package/dist/components-v2/Loading/Loading.js +0 -55
  88. package/dist/components-v2/Modal/Modal.d.ts +0 -30
  89. package/dist/components-v2/Modal/Modal.js +0 -82
  90. package/dist/components-v2/NavigationBar/NavigationBar.d.ts +0 -47
  91. package/dist/components-v2/NavigationBar/NavigationBar.js +0 -148
  92. package/dist/components-v2/Notification/Notification.d.ts +0 -22
  93. package/dist/components-v2/Notification/Notification.js +0 -113
  94. package/dist/components-v2/NumberInput/NumberInput.d.ts +0 -37
  95. package/dist/components-v2/NumberInput/NumberInput.js +0 -210
  96. package/dist/components-v2/PinInput/PinInput.d.ts +0 -26
  97. package/dist/components-v2/PinInput/PinInput.js +0 -138
  98. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +0 -18
  99. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.js +0 -91
  100. package/dist/components-v2/Select/Select.d.ts +0 -41
  101. package/dist/components-v2/Select/Select.js +0 -284
  102. package/dist/components-v2/Sidebar/Sidebar.d.ts +0 -41
  103. package/dist/components-v2/Sidebar/Sidebar.js +0 -182
  104. package/dist/components-v2/Slider/Slider.d.ts +0 -18
  105. package/dist/components-v2/Slider/Slider.js +0 -101
  106. package/dist/components-v2/Table/Table.d.ts +0 -7
  107. package/dist/components-v2/Table/Table.js +0 -172
  108. package/dist/components-v2/Table/TableProps.d.ts +0 -139
  109. package/dist/components-v2/Table/TableProps.js +0 -9
  110. package/dist/components-v2/Table/components/ActiveFilters.d.ts +0 -10
  111. package/dist/components-v2/Table/components/ActiveFilters.js +0 -70
  112. package/dist/components-v2/Table/components/BulkActionBar.d.ts +0 -11
  113. package/dist/components-v2/Table/components/BulkActionBar.js +0 -92
  114. package/dist/components-v2/Table/components/ColumnResizeHandle.d.ts +0 -7
  115. package/dist/components-v2/Table/components/ColumnResizeHandle.js +0 -41
  116. package/dist/components-v2/Table/components/Pagination.d.ts +0 -11
  117. package/dist/components-v2/Table/components/Pagination.js +0 -92
  118. package/dist/components-v2/Table/components/TableBody.d.ts +0 -23
  119. package/dist/components-v2/Table/components/TableBody.js +0 -69
  120. package/dist/components-v2/Table/components/TableCell.d.ts +0 -14
  121. package/dist/components-v2/Table/components/TableCell.js +0 -63
  122. package/dist/components-v2/Table/components/TableEmptyState.d.ts +0 -12
  123. package/dist/components-v2/Table/components/TableEmptyState.js +0 -55
  124. package/dist/components-v2/Table/components/TableErrorState.d.ts +0 -6
  125. package/dist/components-v2/Table/components/TableErrorState.js +0 -52
  126. package/dist/components-v2/Table/components/TableHeader.d.ts +0 -21
  127. package/dist/components-v2/Table/components/TableHeader.js +0 -94
  128. package/dist/components-v2/Table/components/TableRow.d.ts +0 -20
  129. package/dist/components-v2/Table/components/TableRow.js +0 -64
  130. package/dist/components-v2/Table/components/TableSearch.d.ts +0 -8
  131. package/dist/components-v2/Table/components/TableSearch.js +0 -47
  132. package/dist/components-v2/Table/filters/FilterChips.d.ts +0 -6
  133. package/dist/components-v2/Table/filters/FilterChips.js +0 -9
  134. package/dist/components-v2/Table/filters/LeftFilterPane.d.ts +0 -17
  135. package/dist/components-v2/Table/filters/LeftFilterPane.js +0 -105
  136. package/dist/components-v2/Table/filters/TableFilters.d.ts +0 -12
  137. package/dist/components-v2/Table/filters/TableFilters.js +0 -127
  138. package/dist/components-v2/Table/hooks/useColumnResize.d.ts +0 -15
  139. package/dist/components-v2/Table/hooks/useColumnResize.js +0 -104
  140. package/dist/components-v2/Table/hooks/useTable.d.ts +0 -58
  141. package/dist/components-v2/Table/hooks/useTable.js +0 -254
  142. package/dist/components-v2/Table/hooks/useTableKeyboard.d.ts +0 -25
  143. package/dist/components-v2/Table/hooks/useTableKeyboard.js +0 -112
  144. package/dist/components-v2/Table/hooks/useVirtualScroll.d.ts +0 -29
  145. package/dist/components-v2/Table/hooks/useVirtualScroll.js +0 -83
  146. package/dist/components-v2/Table/settings/ManageColumns.d.ts +0 -12
  147. package/dist/components-v2/Table/settings/ManageColumns.js +0 -59
  148. package/dist/components-v2/Table/settings/TableSettings.d.ts +0 -12
  149. package/dist/components-v2/Table/settings/TableSettings.js +0 -57
  150. package/dist/components-v2/Table/utils/filterUtils.d.ts +0 -7
  151. package/dist/components-v2/Table/utils/filterUtils.js +0 -149
  152. package/dist/components-v2/Table/utils/sortUtils.d.ts +0 -6
  153. package/dist/components-v2/Table/utils/sortUtils.js +0 -65
  154. package/dist/components-v2/Tag/Tag.d.ts +0 -15
  155. package/dist/components-v2/Tag/Tag.js +0 -87
  156. package/dist/components-v2/Timeline/Timeline.d.ts +0 -18
  157. package/dist/components-v2/Timeline/Timeline.js +0 -76
  158. package/dist/components-v2/Toaster/Toaster.d.ts +0 -61
  159. package/dist/components-v2/Toaster/Toaster.js +0 -63
  160. package/dist/components-v2/Toggle/Toggle.d.ts +0 -28
  161. package/dist/components-v2/Toggle/Toggle.js +0 -90
  162. package/dist/components-v2/ui/accordion.d.ts +0 -12
  163. package/dist/components-v2/ui/accordion.js +0 -104
  164. package/dist/components-v2/ui/alert.d.ts +0 -18
  165. package/dist/components-v2/ui/alert.js +0 -99
  166. package/dist/components-v2/ui/avatar.d.ts +0 -12
  167. package/dist/components-v2/ui/avatar.js +0 -80
  168. package/dist/components-v2/ui/badge.d.ts +0 -10
  169. package/dist/components-v2/ui/badge.js +0 -76
  170. package/dist/components-v2/ui/button.d.ts +0 -18
  171. package/dist/components-v2/ui/button.js +0 -97
  172. package/dist/components-v2/ui/checkbox.d.ts +0 -15
  173. package/dist/components-v2/ui/checkbox.js +0 -86
  174. package/dist/components-v2/ui/dialog.d.ts +0 -30
  175. package/dist/components-v2/ui/dialog.js +0 -115
  176. package/dist/components-v2/ui/dropdown-menu.d.ts +0 -26
  177. package/dist/components-v2/ui/dropdown-menu.js +0 -121
  178. package/dist/components-v2/ui/field.d.ts +0 -32
  179. package/dist/components-v2/ui/field.js +0 -62
  180. package/dist/components-v2/ui/form-field.d.ts +0 -25
  181. package/dist/components-v2/ui/form-field.js +0 -96
  182. package/dist/components-v2/ui/input.d.ts +0 -9
  183. package/dist/components-v2/ui/input.js +0 -73
  184. package/dist/components-v2/ui/label.d.ts +0 -10
  185. package/dist/components-v2/ui/label.js +0 -70
  186. package/dist/components-v2/ui/popover.d.ts +0 -9
  187. package/dist/components-v2/ui/popover.js +0 -60
  188. package/dist/components-v2/ui/progress.d.ts +0 -12
  189. package/dist/components-v2/ui/progress.js +0 -75
  190. package/dist/components-v2/ui/radio-group.d.ts +0 -17
  191. package/dist/components-v2/ui/radio-group.js +0 -91
  192. package/dist/components-v2/ui/select.d.ts +0 -24
  193. package/dist/components-v2/ui/select.js +0 -122
  194. package/dist/components-v2/ui/separator.d.ts +0 -5
  195. package/dist/components-v2/ui/separator.js +0 -55
  196. package/dist/components-v2/ui/skeleton.d.ts +0 -9
  197. package/dist/components-v2/ui/skeleton.js +0 -68
  198. package/dist/components-v2/ui/spinner.d.ts +0 -16
  199. package/dist/components-v2/ui/spinner.js +0 -64
  200. package/dist/components-v2/ui/switch.d.ts +0 -10
  201. package/dist/components-v2/ui/switch.js +0 -81
  202. package/dist/components-v2/ui/tabs.d.ts +0 -13
  203. package/dist/components-v2/ui/tabs.js +0 -95
  204. package/dist/components-v2/ui/textarea.d.ts +0 -10
  205. package/dist/components-v2/ui/textarea.js +0 -96
  206. package/dist/components-v2/ui/tooltip.d.ts +0 -17
  207. package/dist/components-v2/ui/tooltip.js +0 -75
  208. package/dist/lib/utils.d.ts +0 -2
  209. package/dist/lib/utils.js +0 -8
  210. package/dist/theme-v2/ThemeProvider.d.ts +0 -19
  211. package/dist/theme-v2/ThemeProvider.js +0 -149
  212. package/dist/theme-v2/dark.css +0 -47
  213. 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
- };