dhanasekar-ui 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/{chunk-ZMB4U5RP.js → chunk-2I4K4OCE.js} +3 -3
  2. package/dist/{chunk-ZMB4U5RP.js.map → chunk-2I4K4OCE.js.map} +1 -1
  3. package/dist/{chunk-WG2DQVVM.mjs → chunk-2OAU53K6.mjs} +3 -3
  4. package/dist/{chunk-WG2DQVVM.mjs.map → chunk-2OAU53K6.mjs.map} +1 -1
  5. package/dist/{chunk-ULMQZANW.mjs → chunk-3XBFOCPX.mjs} +3 -3
  6. package/dist/{chunk-ULMQZANW.mjs.map → chunk-3XBFOCPX.mjs.map} +1 -1
  7. package/dist/{chunk-P5HHRCE5.js → chunk-46JFDK2G.js} +4 -4
  8. package/dist/{chunk-P5HHRCE5.js.map → chunk-46JFDK2G.js.map} +1 -1
  9. package/dist/{chunk-PL2R3LYL.mjs → chunk-5D4JO44P.mjs} +3 -3
  10. package/dist/{chunk-PL2R3LYL.mjs.map → chunk-5D4JO44P.mjs.map} +1 -1
  11. package/dist/chunk-5ZOZOY4J.mjs +2 -0
  12. package/dist/chunk-5ZOZOY4J.mjs.map +1 -0
  13. package/dist/{chunk-UCFS7EH2.mjs → chunk-6FBJ3S6V.mjs} +3 -3
  14. package/dist/{chunk-UCFS7EH2.mjs.map → chunk-6FBJ3S6V.mjs.map} +1 -1
  15. package/dist/chunk-7FN45G2T.js +2 -0
  16. package/dist/chunk-7FN45G2T.js.map +1 -0
  17. package/dist/{chunk-AK3NQBYU.mjs → chunk-7U4ZR2N6.mjs} +3 -3
  18. package/dist/{chunk-AK3NQBYU.mjs.map → chunk-7U4ZR2N6.mjs.map} +1 -1
  19. package/dist/{chunk-K45L3ZJM.mjs → chunk-AXTWVJLU.mjs} +3 -3
  20. package/dist/{chunk-K45L3ZJM.mjs.map → chunk-AXTWVJLU.mjs.map} +1 -1
  21. package/dist/{chunk-TYVF66RP.js → chunk-BLXL2SZF.js} +3 -3
  22. package/dist/{chunk-TYVF66RP.js.map → chunk-BLXL2SZF.js.map} +1 -1
  23. package/dist/chunk-CQNHZJ7I.mjs +2 -0
  24. package/dist/chunk-CQNHZJ7I.mjs.map +1 -0
  25. package/dist/{chunk-UC2EXKW3.mjs → chunk-DYQFJBYE.mjs} +3 -3
  26. package/dist/chunk-DYQFJBYE.mjs.map +1 -0
  27. package/dist/chunk-FRZ7JKYE.js +303 -0
  28. package/dist/chunk-FRZ7JKYE.js.map +1 -0
  29. package/dist/{chunk-ZPJSBORX.js → chunk-GTLOJ4OX.js} +3 -3
  30. package/dist/{chunk-ZPJSBORX.js.map → chunk-GTLOJ4OX.js.map} +1 -1
  31. package/dist/chunk-HAWHD2CS.js +2 -0
  32. package/dist/chunk-HAWHD2CS.js.map +1 -0
  33. package/dist/{chunk-XWEEWNZK.mjs → chunk-HBRNCHNF.mjs} +3 -3
  34. package/dist/{chunk-XWEEWNZK.mjs.map → chunk-HBRNCHNF.mjs.map} +1 -1
  35. package/dist/{chunk-HEVMYBGK.js → chunk-HZF4MXSO.js} +3 -3
  36. package/dist/{chunk-HEVMYBGK.js.map → chunk-HZF4MXSO.js.map} +1 -1
  37. package/dist/{chunk-YPMUFP2I.js → chunk-IU3PO4JC.js} +4 -4
  38. package/dist/{chunk-YPMUFP2I.js.map → chunk-IU3PO4JC.js.map} +1 -1
  39. package/dist/{chunk-HWD2HCCH.js → chunk-KCHEAJQY.js} +4 -4
  40. package/dist/{chunk-HWD2HCCH.js.map → chunk-KCHEAJQY.js.map} +1 -1
  41. package/dist/chunk-KJECRLIK.mjs +2 -0
  42. package/dist/chunk-KJECRLIK.mjs.map +1 -0
  43. package/dist/{chunk-3K6JBWL2.mjs → chunk-L73SH4IC.mjs} +3 -3
  44. package/dist/{chunk-3K6JBWL2.mjs.map → chunk-L73SH4IC.mjs.map} +1 -1
  45. package/dist/chunk-LJZR5S2S.mjs +303 -0
  46. package/dist/chunk-LJZR5S2S.mjs.map +1 -0
  47. package/dist/chunk-MAXZQTTY.mjs +2 -0
  48. package/dist/chunk-MAXZQTTY.mjs.map +1 -0
  49. package/dist/{chunk-P4WXCRNI.mjs → chunk-MCQHRTRD.mjs} +3 -3
  50. package/dist/{chunk-P4WXCRNI.mjs.map → chunk-MCQHRTRD.mjs.map} +1 -1
  51. package/dist/{chunk-C5X45JOF.mjs → chunk-NGNPVIAG.mjs} +3 -3
  52. package/dist/{chunk-C5X45JOF.mjs.map → chunk-NGNPVIAG.mjs.map} +1 -1
  53. package/dist/{chunk-7UWMKTOT.js → chunk-NKEF355Z.js} +3 -3
  54. package/dist/chunk-NKEF355Z.js.map +1 -0
  55. package/dist/chunk-NPGQQ67F.js +90 -0
  56. package/dist/chunk-NPGQQ67F.js.map +1 -0
  57. package/dist/{chunk-PFQIHJ6F.js → chunk-OHZG62II.js} +2 -2
  58. package/dist/{chunk-PFQIHJ6F.js.map → chunk-OHZG62II.js.map} +1 -1
  59. package/dist/chunk-PSYZOU5W.js +2 -0
  60. package/dist/chunk-PSYZOU5W.js.map +1 -0
  61. package/dist/{chunk-7XVF6WPJ.js → chunk-Q6CP36OQ.js} +3 -3
  62. package/dist/chunk-Q6CP36OQ.js.map +1 -0
  63. package/dist/{chunk-IK7K7ZJZ.mjs → chunk-QSUBLNQA.mjs} +3 -3
  64. package/dist/{chunk-IK7K7ZJZ.mjs.map → chunk-QSUBLNQA.mjs.map} +1 -1
  65. package/dist/{chunk-N6LNMNTA.js → chunk-QTBXSLB7.js} +3 -3
  66. package/dist/{chunk-N6LNMNTA.js.map → chunk-QTBXSLB7.js.map} +1 -1
  67. package/dist/{chunk-KKRI6OSJ.mjs → chunk-RTAANBRB.mjs} +3 -3
  68. package/dist/{chunk-KKRI6OSJ.mjs.map → chunk-RTAANBRB.mjs.map} +1 -1
  69. package/dist/{chunk-EPVYHGER.js → chunk-SATPFSKS.js} +3 -3
  70. package/dist/{chunk-EPVYHGER.js.map → chunk-SATPFSKS.js.map} +1 -1
  71. package/dist/chunk-TYTCGH2C.js +2 -0
  72. package/dist/chunk-TYTCGH2C.js.map +1 -0
  73. package/dist/{chunk-7IWJZHMP.js → chunk-UFID3OJL.js} +3 -3
  74. package/dist/{chunk-7IWJZHMP.js.map → chunk-UFID3OJL.js.map} +1 -1
  75. package/dist/{chunk-NN5XQUE5.js → chunk-UMANLRMH.js} +3 -3
  76. package/dist/{chunk-NN5XQUE5.js.map → chunk-UMANLRMH.js.map} +1 -1
  77. package/dist/{chunk-DBSBLGGH.js → chunk-V7I4VOGW.js} +3 -3
  78. package/dist/{chunk-DBSBLGGH.js.map → chunk-V7I4VOGW.js.map} +1 -1
  79. package/dist/{chunk-MOC6N23X.mjs → chunk-VAK4ZMNE.mjs} +3 -3
  80. package/dist/{chunk-MOC6N23X.mjs.map → chunk-VAK4ZMNE.mjs.map} +1 -1
  81. package/dist/{chunk-JM6DZDO3.js → chunk-VT6MIHH4.js} +3 -3
  82. package/dist/{chunk-JM6DZDO3.js.map → chunk-VT6MIHH4.js.map} +1 -1
  83. package/dist/{chunk-SC44IC5R.js → chunk-VURSJNHH.js} +3 -3
  84. package/dist/{chunk-SC44IC5R.js.map → chunk-VURSJNHH.js.map} +1 -1
  85. package/dist/{chunk-IZN52F5Z.mjs → chunk-WCECOLC2.mjs} +2 -2
  86. package/dist/{chunk-IZN52F5Z.mjs.map → chunk-WCECOLC2.mjs.map} +1 -1
  87. package/dist/{chunk-YA7B43FL.mjs → chunk-WCY2XASM.mjs} +3 -3
  88. package/dist/{chunk-YA7B43FL.mjs.map → chunk-WCY2XASM.mjs.map} +1 -1
  89. package/dist/{chunk-BQVXQWPS.mjs → chunk-XT2L2TG3.mjs} +3 -3
  90. package/dist/{chunk-BQVXQWPS.mjs.map → chunk-XT2L2TG3.mjs.map} +1 -1
  91. package/dist/{chunk-UYHBKE7G.mjs → chunk-XZF5PTFB.mjs} +3 -3
  92. package/dist/chunk-XZF5PTFB.mjs.map +1 -0
  93. package/dist/{chunk-ZCSVGCYM.js → chunk-YMBVI7C3.js} +3 -3
  94. package/dist/{chunk-ZCSVGCYM.js.map → chunk-YMBVI7C3.js.map} +1 -1
  95. package/dist/chunk-ZSICE2YV.mjs +90 -0
  96. package/dist/chunk-ZSICE2YV.mjs.map +1 -0
  97. package/dist/components/Accordion/index.js +1 -1
  98. package/dist/components/Accordion/index.mjs +1 -1
  99. package/dist/components/AppBar/index.js +1 -1
  100. package/dist/components/AppBar/index.mjs +1 -1
  101. package/dist/components/BottomNavigation/index.js +1 -1
  102. package/dist/components/BottomNavigation/index.mjs +1 -1
  103. package/dist/components/Box/index.js +1 -1
  104. package/dist/components/Box/index.mjs +1 -1
  105. package/dist/components/DataGrid/index.js +1 -1
  106. package/dist/components/DataGrid/index.mjs +1 -1
  107. package/dist/components/DateFilter/index.js +1 -1
  108. package/dist/components/DateFilter/index.mjs +1 -1
  109. package/dist/components/FileUploadField/index.js +1 -1
  110. package/dist/components/FileUploadField/index.mjs +1 -1
  111. package/dist/components/FilterTable/index.js +1 -1
  112. package/dist/components/FilterTable/index.mjs +1 -1
  113. package/dist/components/FormLayout/index.js +1 -1
  114. package/dist/components/FormLayout/index.mjs +1 -1
  115. package/dist/components/Grid/index.js +1 -1
  116. package/dist/components/Grid/index.mjs +1 -1
  117. package/dist/components/List/index.js +1 -1
  118. package/dist/components/List/index.mjs +1 -1
  119. package/dist/components/Pagination/index.js +1 -1
  120. package/dist/components/Pagination/index.mjs +1 -1
  121. package/dist/components/Paper/index.js +1 -1
  122. package/dist/components/Paper/index.mjs +1 -1
  123. package/dist/components/Progress/index.js +1 -1
  124. package/dist/components/Progress/index.mjs +1 -1
  125. package/dist/components/Rating/index.d.mts +70 -0
  126. package/dist/components/Rating/index.d.ts +70 -0
  127. package/dist/components/Rating/index.js +2 -0
  128. package/dist/components/Rating/index.js.map +1 -0
  129. package/dist/components/Rating/index.mjs +2 -0
  130. package/dist/components/Rating/index.mjs.map +1 -0
  131. package/dist/components/RichTextEditor/index.d.mts +13 -0
  132. package/dist/components/RichTextEditor/index.d.ts +13 -0
  133. package/dist/components/RichTextEditor/index.js +142 -0
  134. package/dist/components/RichTextEditor/index.js.map +1 -0
  135. package/dist/components/RichTextEditor/index.mjs +142 -0
  136. package/dist/components/RichTextEditor/index.mjs.map +1 -0
  137. package/dist/components/Skeleton/index.js +1 -1
  138. package/dist/components/Skeleton/index.mjs +1 -1
  139. package/dist/components/Snackbar/index.js +1 -1
  140. package/dist/components/Snackbar/index.mjs +1 -1
  141. package/dist/components/Stack/index.js +1 -1
  142. package/dist/components/Stack/index.mjs +1 -1
  143. package/dist/components/Table/index.js +1 -1
  144. package/dist/components/Table/index.mjs +1 -1
  145. package/dist/components/ThemeProvider/index.d.mts +282 -0
  146. package/dist/components/ThemeProvider/index.d.ts +282 -0
  147. package/dist/components/ThemeProvider/index.js +2 -0
  148. package/dist/components/ThemeProvider/index.js.map +1 -0
  149. package/dist/components/ThemeProvider/index.mjs +2 -0
  150. package/dist/components/ThemeProvider/index.mjs.map +1 -0
  151. package/dist/components/Timeline/index.d.mts +100 -0
  152. package/dist/components/Timeline/index.d.ts +100 -0
  153. package/dist/components/Timeline/index.js +2 -0
  154. package/dist/components/Timeline/index.js.map +1 -0
  155. package/dist/components/Timeline/index.mjs +2 -0
  156. package/dist/components/Timeline/index.mjs.map +1 -0
  157. package/dist/components/Transitions/index.js +1 -1
  158. package/dist/components/Transitions/index.mjs +1 -1
  159. package/dist/index.d.mts +3 -0
  160. package/dist/index.d.ts +3 -0
  161. package/dist/index.js +1 -1
  162. package/dist/index.mjs +1 -1
  163. package/package.json +21 -1
  164. package/dist/chunk-7UWMKTOT.js.map +0 -1
  165. package/dist/chunk-7XVF6WPJ.js.map +0 -1
  166. package/dist/chunk-HGGQFNUJ.mjs +0 -2
  167. package/dist/chunk-HGGQFNUJ.mjs.map +0 -1
  168. package/dist/chunk-I6OJHQZX.mjs +0 -2
  169. package/dist/chunk-I6OJHQZX.mjs.map +0 -1
  170. package/dist/chunk-LIBHUJ27.js +0 -2
  171. package/dist/chunk-LIBHUJ27.js.map +0 -1
  172. package/dist/chunk-MLURKSJZ.js +0 -2
  173. package/dist/chunk-MLURKSJZ.js.map +0 -1
  174. package/dist/chunk-UC2EXKW3.mjs.map +0 -1
  175. package/dist/chunk-UYHBKE7G.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FilterTable/FilterTable.tsx"],"names":["IconSearch","jsx","IconEye","jsxs","IconEdit","IconTrash","IconCancel","IconCircleCheck","IconDownload","IconTableExport","IconFilter","IconWashDrycleanOff","IconColumns","IconChevronRight","IconBrandTelegram","IconChecked","IconPin","IconPinFilled","STYLES","CustomCheckbox","checked","indeterminate","onChange","e","cn","FilterTable","forwardRef","loading","data","columns","pageSizeProp","pageSizeOptions","exportUrl","exportFileName","onView","onEdit","onDelete","onDownload","customActions","page","totalPages","totalItems","setPage","stickyColumns","onFilterChange","onSortChange","onExport","isExport","isDateFilter","isClearFilter","isManageColumns","isSearch","isCheckbox","selectedIdsProp","onSelectionChange","onCheckboxSubmit","renderChildRow","moduleName","className","sx","props","ref","visibleColumns","setVisibleColumns","useState","c","openColumnsDialog","setOpenColumnsDialog","openDateFilterDialog","setOpenDateFilterDialog","openExportDropdown","setOpenExportDropdown","sortBy","setSortBy","sortDir","setSortDir","quickFilter","setQuickFilter","localFilters","setLocalFilters","localDateFilter","setLocalDateFilter","expandedRows","setExpandedRows","filteredAndSortedData","React","result","query","row","val","key","lowerQuery","now","startOfToday","dateVal","d","yest","weekAgo","monthAgo","yearAgo","fromD","toD","a","b","aVal","bVal","aStr","bStr","numA","numB","isServerSidePagination","localPage","setLocalPage","pageSizeState","setPageSizeState","isPageSizeControlled","activePageSize","useEffect","activePage","totalRows","activeTotalPages","changePage","p","handlePageSizeChange","newSize","renderedRows","startIdx","endIdx","selectedIdsState","setSelectedIdsState","isSelectionControlled","selectedIds","scrollContainerRef","useRef","isDragging","setIsDragging","startX","setStartX","scrollLeft","setScrollLeft","dateOptions","pinnedColumns","setPinnedColumns","handleTogglePin","columnKey","firstColKey","k","isColumnFixed","colIdx","getFixedLeftOffset","offset","i","prevKey","prevCol","column","getColumnWidthNumber","handleView","id","handleEdit","handleDelete","startDrag","container","x","onDrag","walk","endDrag","mouseDown","mouseMove","mouseUp","toggleColumn","prev","getColumnWidth","col","w","toggleRowExpand","handleTextFilterBlur","value","filterSubmit","handleClearFilters","changeSort","newDir","handleSelect","type","exportCSV","keys","header","rows","r","v","csv","blob","url","getStatusColorClass","status","handleSelectAll","targetRows","allIds","handleSelectRow","nextSelection","selectedId","hasActions","handleSx","Tooltip","Fragment","TableContainer","Table","TableHead","TableRow","TableCell","idx","isSticky","leftOffset","opt","TableBody","isExpanded","cellVal","formatted","action","isHidden","isDisabled","Pagination","isPinned","isFirst"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;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","file":"chunk-WG2DQVVM.mjs","sourcesContent":["'use client';\n\nimport React, { forwardRef, useState, useEffect, useRef, SyntheticEvent } from 'react';\nimport { cn } from '../../utils/cn';\nimport { handleSx } from '../../utils/handleSx';\nimport { \n FilterTableProps, \n Column, \n Row, \n CustomAction,\n FilterTableDateOption, \n FilterTableDateState \n} from './FilterTable.types';\nimport { Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from '../Table';\nimport { Pagination } from '../Pagination';\nimport { Tooltip } from '../Tooltip';\n\n// =========================================================================\n// CUSTOM CRISP SVG ICONS (NO OUTSIDE DEPENDENCIES)\n// =========================================================================\nconst IconSearch = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"></path>\n </svg>\n);\n\nconst IconEye = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z\"></path>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"></path>\n </svg>\n);\n\nconst IconEdit = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10\"></path>\n </svg>\n);\n\nconst IconTrash = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0\"></path>\n </svg>\n);\n\nconst IconCancel = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n </svg>\n);\n\nconst IconCircleCheck = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n </svg>\n);\n\nconst IconCircleX = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n </svg>\n);\n\nconst IconDownload = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3\"></path>\n </svg>\n);\n\nconst IconFileText = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"></path>\n </svg>\n);\n\nconst IconTableExport = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" />\n </svg>\n);\n\nconst IconFilter = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v3.022c0 .385-.122.759-.347 1.067L15 13.988v5.262c0 .379-.214.725-.55.898l-3.5 1.75a.5.5 0 01-.7-.447v-7.463L4.35 8.863C4.12 8.555 4 8.18 4 7.796V4.774c0-.54.384-1.006.917-1.096A50.064 50.064 0 0112 3z\"></path>\n </svg>\n);\n\nconst IconWashDrycleanOff = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636\"></path>\n </svg>\n);\n\nconst IconColumns = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 4.5v15m6-15v15m-12-3h18c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v12.75c0 .621.504 1.125 1.125 1.125z\"></path>\n </svg>\n);\n\nconst IconChevronRight = () => (\n <svg width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\"></path>\n </svg>\n);\n\nconst IconBrandTelegram = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 12L3.269 3.126A59.768 59.768 0 0121.485 12 59.77 59.77 0 013.27 20.876L5.999 12zm0 0h7.5\"></path>\n </svg>\n);\n\nconst IconChecked = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" viewBox=\"0 0 24 24\" style={{ color: 'white' }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"></path>\n </svg>\n);\n\nconst IconPin = () => (\n <svg width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 17v5M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.89A.5.5 0 0 0 6.34 14h11.32a.5.5 0 0 0 .43-.56l-.32-2.18A2 2 0 0 1 17 9.47V5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v4.47Z\" />\n </svg>\n);\n\nconst IconPinFilled = () => (\n <svg width=\"14\" height=\"14\" fill=\"currentColor\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path d=\"M12 17v5M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.89A.5.5 0 0 0 6.34 14h11.32a.5.5 0 0 0 .43-.56l-.32-2.18A2 2 0 0 1 17 9.47V5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v4.47Z\" />\n </svg>\n);\n\n\n// =========================================================================\n// PURE VANILLA CSS REGISTRY\n// =========================================================================\nconst STYLES = `\n .ui-filtertable-container {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 12px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n padding: 24px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 16px;\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n /* Toolbar Controls */\n .ui-filtertable-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n }\n\n .ui-filtertable-toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .ui-filtertable-toolbar-right {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n }\n\n /* Table Card Wrapper */\n .ui-filtertable-wrapper {\n width: 100%;\n overflow: auto;\n border-radius: 8px;\n border: 1px solid #e2e8f0;\n background-color: #ffffff;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n }\n\n /* Native Styled Table */\n .ui-filtertable-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n text-align: left;\n }\n\n .ui-filtertable-th {\n background: #f8fafc;\n color: #475569;\n font-size: 13px;\n font-weight: 600;\n padding: 10px 16px;\n border-bottom: 1px solid #e2e8f0;\n letter-spacing: 0.2px;\n box-sizing: border-box;\n vertical-align: middle;\n }\n\n .ui-filtertable-td {\n padding: 10px 16px;\n font-size: 13.5px;\n color: #334155;\n border-bottom: 1px solid #f1f5f9;\n box-sizing: border-box;\n vertical-align: middle;\n white-space: nowrap;\n background-color: #ffffff;\n transition: background-color 150ms;\n }\n\n .ui-filtertable-row:hover .ui-filtertable-td {\n background-color: #f8fafc;\n }\n\n /* Sticky Styles */\n .ui-filtertable-sticky-left {\n position: sticky;\n z-index: 3;\n border-right: 1px solid #e2e8f0;\n }\n\n .ui-filtertable-sticky-right {\n position: sticky;\n right: 0;\n z-index: 3;\n border-left: 1px solid #e2e8f0;\n }\n\n .ui-filtertable-th.ui-filtertable-sticky-left,\n .ui-filtertable-th.ui-filtertable-sticky-right {\n background: #f8fafc !important;\n }\n\n /* Form Fields */\n .ui-filtertable-text-input {\n width: 100%;\n height: 32px;\n padding: 4px 8px;\n font-size: 13px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n background-color: #f8fafc;\n color: #334155;\n box-sizing: border-box;\n transition: all 150ms;\n }\n\n .ui-filtertable-text-input:focus {\n border-color: #3b82f6;\n background-color: #ffffff;\n outline: none;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);\n }\n\n .ui-filtertable-select-input {\n width: 100%;\n height: 32px;\n padding: 0 8px;\n font-size: 13px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n background-color: #f8fafc;\n color: #334155;\n box-sizing: border-box;\n transition: all 150ms;\n outline: none;\n }\n\n .ui-filtertable-select-input:focus {\n border-color: #3b82f6;\n background-color: #ffffff;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);\n }\n\n /* Buttons & Icon Buttons */\n .ui-filtertable-icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: #64748b;\n cursor: pointer;\n transition: all 150ms;\n }\n\n .ui-filtertable-icon-btn svg {\n width: 16px;\n height: 16px;\n }\n\n .ui-filtertable-icon-btn:hover {\n background-color: #f1f5f9;\n color: #0f172a;\n }\n\n .ui-filtertable-icon-btn--primary:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #3b82f6 !important;\n }\n\n .ui-filtertable-icon-btn--success:hover {\n background-color: rgba(16, 185, 129, 0.1);\n color: #10b981 !important;\n }\n\n .ui-filtertable-icon-btn--error:hover {\n background-color: rgba(239, 68, 68, 0.1);\n color: #ef4444 !important;\n }\n\n .ui-filtertable-icon-btn--warning:hover {\n background-color: rgba(245, 158, 11, 0.1);\n color: #f59e0b !important;\n }\n\n .ui-filtertable-icon-btn--disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* Dialog Overlay */\n .ui-filtertable-dialog-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(15, 23, 42, 0.4);\n backdrop-filter: blur(8px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n animation: ui-ft-fade-in 150ms ease-out;\n }\n\n .ui-filtertable-dialog-box {\n background: #ffffff;\n border: 1px solid rgba(226, 232, 240, 0.8);\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 460px;\n width: 90%;\n overflow: hidden;\n animation: ui-ft-scale-up 150ms cubic-bezier(0.34, 1.56, 0.64, 1);\n }\n\n .ui-filtertable-dialog-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f1f5f9;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 700;\n font-size: 16px;\n color: #1e293b;\n }\n\n .ui-filtertable-dialog-close {\n background: transparent;\n border: none;\n color: #64748b;\n cursor: pointer;\n padding: 4px;\n border-radius: 9999px;\n }\n\n .ui-filtertable-dialog-body {\n padding: 20px;\n max-height: 350px;\n overflow-y: auto;\n }\n\n .ui-filtertable-dialog-footer {\n padding: 14px 20px;\n border-top: 1px solid #f1f5f9;\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n background-color: #f8fafc;\n }\n\n /* Form Elements inside Modal */\n .ui-filtertable-form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .ui-filtertable-form-label {\n font-size: 12.5px;\n font-weight: 600;\n color: #475569;\n }\n\n .ui-filtertable-columns-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n }\n\n .ui-filtertable-column-checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #334155;\n cursor: pointer;\n user-select: none;\n }\n\n /* Checkbox designs */\n .ui-filtertable-checkbox-container {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n }\n\n .ui-filtertable-checkbox-box {\n width: 18px;\n height: 18px;\n border-radius: 4px;\n border: 2px solid #cbd5e1;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 150ms;\n background-color: #ffffff;\n }\n\n .ui-filtertable-checkbox-box--checked {\n background-color: #3b82f6;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-checkbox-box--indeterminate {\n background-color: #3b82f6;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-checkbox-inner-dash {\n width: 10px;\n height: 2px;\n background-color: white;\n border-radius: 1px;\n }\n\n /* Drops down menus */\n .ui-filtertable-dropdown-backdrop {\n position: fixed;\n inset: 0;\n z-index: 1000;\n }\n\n .ui-filtertable-dropdown-menu {\n position: absolute;\n right: 0;\n top: 110%;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n min-width: 150px;\n z-index: 1001;\n padding: 6px 0;\n animation: ui-ft-fade-in 100ms ease-out;\n }\n\n .ui-filtertable-dropdown-item {\n display: block;\n width: 100%;\n padding: 8px 14px;\n font-size: 13px;\n color: #334155;\n text-align: left;\n border: none;\n background: transparent;\n cursor: pointer;\n transition: background-color 150ms;\n }\n\n .ui-filtertable-dropdown-item:hover {\n background-color: #f1f5f9;\n color: #0f172a;\n }\n\n /* Status Chips */\n .ui-filtertable-chip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n border-radius: 9999px;\n text-transform: capitalize;\n box-shadow: 0 1px 2px rgba(0,0,0,0.02);\n }\n\n .ui-filtertable-chip--success {\n background-color: #d1fae5;\n color: #065f46;\n border: 1px solid #a7f3d0;\n }\n\n .ui-filtertable-chip--error {\n background-color: #fee2e2;\n color: #991b1b;\n border: 1px solid #fecaca;\n }\n\n .ui-filtertable-chip--warning {\n background-color: #fef3c7;\n color: #92400e;\n border: 1px solid #fde68a;\n }\n\n .ui-filtertable-chip--primary {\n background-color: #dbeafe;\n color: #1e40af;\n border: 1px solid #bfdbfe;\n }\n\n .ui-filtertable-chip--default {\n background-color: #f1f5f9;\n color: #475569;\n border: 1px solid #e2e8f0;\n }\n\n /* Pagination Footer */\n .ui-filtertable-pagination {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 20px;\n background: rgba(255, 255, 255, 0.5);\n border: 1px solid rgba(226, 232, 240, 0.8);\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(148, 163, 184, 0.03);\n }\n\n .ui-filtertable-pagination-info {\n font-size: 13px;\n color: #64748b;\n }\n\n .ui-filtertable-pagination-info span {\n font-weight: 600;\n color: #1e293b;\n }\n\n .ui-filtertable-pagination-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .ui-filtertable-pagination-btn {\n height: 32px;\n padding: 0 12px;\n font-size: 12.5px;\n font-weight: 500;\n background-color: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n color: #475569;\n cursor: pointer;\n box-shadow: 0 1px 2px rgba(0,0,0,0.03);\n transition: all 150ms;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .ui-filtertable-pagination-btn:hover:not(:disabled) {\n background-color: #3b82f6;\n color: #ffffff;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-pagination-btn--active {\n background-color: #3b82f6;\n color: #ffffff;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-pagination-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .ui-filtertable-pagination-dots {\n color: #94a3b8;\n padding: 0 4px;\n font-size: 12px;\n }\n\n /* Child Row collapse */\n .ui-filtertable-child-row-tr {\n background-color: #f8fafc;\n }\n\n .ui-filtertable-child-row-collapse {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 250ms cubic-bezier(0.4, 0, 0.2, 1);\n background-color: #f8fafc;\n overflow: hidden;\n }\n\n .ui-filtertable-child-row-collapse--expanded {\n grid-template-rows: 1fr;\n border-bottom: 1px solid #cbd5e1;\n }\n\n .ui-filtertable-child-row-content {\n overflow: hidden;\n padding: 0 20px;\n box-sizing: border-box;\n transition: padding 250ms;\n }\n\n .ui-filtertable-child-row-collapse--expanded .ui-filtertable-child-row-content {\n padding: 16px 20px;\n }\n\n /* Expand Trigger icon rotation */\n .ui-ft-expand-trigger {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 9999px;\n color: #64748b;\n transition: transform 200ms, background-color 150ms;\n }\n\n .ui-ft-expand-trigger:hover {\n background-color: #f1f5f9;\n color: #0f172a;\n }\n\n .ui-ft-expand-trigger--expanded {\n transform: rotate(90deg);\n color: #3b82f6;\n }\n\n /* Core animations */\n @keyframes ui-ft-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes ui-ft-scale-up {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n }\n`;\n\n// Helper component for styled checkbox\nconst CustomCheckbox = ({ \n checked, \n indeterminate = false, \n onChange \n}: { \n checked: boolean; \n indeterminate?: boolean; \n onChange: (e: any) => void; \n}) => {\n return (\n <span \n className=\"ui-filtertable-checkbox-container\" \n onClick={(e) => {\n e.stopPropagation();\n onChange(e);\n }}\n >\n <span className={cn(\n \"ui-filtertable-checkbox-box\",\n checked && \"ui-filtertable-checkbox-box--checked\",\n indeterminate && !checked && \"ui-filtertable-checkbox-box--indeterminate\"\n )}>\n {checked && <IconChecked />}\n {indeterminate && !checked && <span className=\"ui-filtertable-checkbox-inner-dash\" />}\n </span>\n </span>\n );\n};\n\n// =========================================================================\n// MAIN FILTER TABLE COMPONENT\n// =========================================================================\nexport const FilterTable = forwardRef<HTMLDivElement, FilterTableProps>(\n (\n {\n loading = false,\n data = [],\n columns = [],\n pageSize: pageSizeProp,\n pageSizeOptions = [10, 25, 50],\n exportUrl,\n exportFileName = 'export',\n \n onView,\n onEdit,\n onDelete,\n onDownload,\n customActions = [],\n \n page,\n totalPages = 1,\n totalItems = 0,\n setPage,\n \n stickyColumns = 2,\n onFilterChange,\n onSortChange,\n onExport,\n \n isExport = true,\n isDateFilter = true,\n isClearFilter = true,\n isManageColumns = true,\n isSearch = false,\n isCheckbox = false,\n \n selectedIds: selectedIdsProp,\n onSelectionChange,\n onCheckboxSubmit,\n \n renderChildRow,\n moduleName,\n className,\n sx,\n ...props\n },\n ref\n ) => {\n // -------------------------------------------------------------------------\n // LOCAL STATES\n // -------------------------------------------------------------------------\n const [visibleColumns, setVisibleColumns] = useState<string[]>(columns.map((c: Column) => c.key));\n const [openColumnsDialog, setOpenColumnsDialog] = useState(false);\n const [openDateFilterDialog, setOpenDateFilterDialog] = useState(false);\n const [openExportDropdown, setOpenExportDropdown] = useState(false);\n \n const [sortBy, setSortBy] = useState<string | null>(null);\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>('asc');\n \n const [quickFilter, setQuickFilter] = useState('');\n const [localFilters, setLocalFilters] = useState<Record<string, any>>({});\n const [localDateFilter, setLocalDateFilter] = useState<FilterTableDateState>({ option: null });\n \n // Row expansion state for Child Rows\n const [expandedRows, setExpandedRows] = useState<Record<string | number, boolean>>({});\n\n // -------------------------------------------------------------------------\n // CLIENT SIDE SEARCH / FILTER / SORT LOGIC\n // -------------------------------------------------------------------------\n const filteredAndSortedData = React.useMemo(() => {\n // If server-side handles it (callbacks provided), we just return data as is\n if (onFilterChange || onSortChange) {\n return data;\n }\n\n let result = [...data];\n\n // 1. Quick Search Filter\n if (quickFilter) {\n const query = quickFilter.toLowerCase();\n result = result.filter(row => \n Object.values(row).some(val => \n val != null && String(val).toLowerCase().includes(query)\n )\n );\n }\n\n // 2. Column Text / Select Filters\n Object.keys(localFilters).forEach(key => {\n const query = localFilters[key];\n if (query != null && String(query).trim() !== '') {\n const lowerQuery = String(query).toLowerCase();\n result = result.filter(row => {\n const val = row[key];\n return val != null && String(val).toLowerCase().includes(lowerQuery);\n });\n }\n });\n\n // 3. Column Date Range Filter\n if (localDateFilter.option) {\n const now = new Date();\n const startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n result = result.filter(row => {\n const dateVal = row.created_at || row.createdAt || row.date;\n if (!dateVal) return true;\n const d = new Date(dateVal);\n if (isNaN(d.getTime())) return true;\n\n switch (localDateFilter.option) {\n case 'Today':\n return d >= startOfToday;\n case 'Yesterday': {\n const yest = new Date(startOfToday);\n yest.setDate(yest.getDate() - 1);\n return d >= yest && d < startOfToday;\n }\n case 'Weekly': {\n const weekAgo = new Date(startOfToday);\n weekAgo.setDate(weekAgo.getDate() - 7);\n return d >= weekAgo;\n }\n case 'Monthly': {\n const monthAgo = new Date(startOfToday);\n monthAgo.setMonth(monthAgo.getMonth() - 1);\n return d >= monthAgo;\n }\n case 'Yearly': {\n const yearAgo = new Date(startOfToday);\n yearAgo.setFullYear(yearAgo.getFullYear() - 1);\n return d >= yearAgo;\n }\n case 'Custom': {\n const fromD = localDateFilter.from ? new Date(localDateFilter.from) : null;\n const toD = localDateFilter.to ? new Date(localDateFilter.to) : null;\n if (fromD && d < fromD) return false;\n if (toD && d > toD) return false;\n return true;\n }\n default:\n return true;\n }\n });\n }\n\n // 4. Client Side Sorting\n if (sortBy) {\n result.sort((a, b) => {\n const aVal = a[sortBy];\n const bVal = b[sortBy];\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n const aStr = String(aVal);\n const bStr = String(bVal);\n \n const numA = Number(aVal);\n const numB = Number(bVal);\n if (!isNaN(numA) && !isNaN(numB)) {\n return sortDir === 'asc' ? numA - numB : numB - numA;\n }\n\n return sortDir === 'asc' \n ? aStr.localeCompare(bStr) \n : bStr.localeCompare(aStr);\n });\n }\n\n return result;\n }, [data, quickFilter, localFilters, localDateFilter, sortBy, sortDir, onFilterChange, onSortChange]);\n\n // -------------------------------------------------------------------------\n // PAGINATION INTEGRATION (CLIENT & SERVER SUPPORT)\n // -------------------------------------------------------------------------\n const isServerSidePagination = page !== undefined && setPage !== undefined;\n \n // Internal client-side states as fallback\n const [localPage, setLocalPage] = useState(1);\n \n // PageSize state (controlled or uncontrolled fallback)\n const [pageSizeState, setPageSizeState] = useState(pageSizeProp !== undefined ? pageSizeProp : 10);\n const isPageSizeControlled = pageSizeProp !== undefined && props.onPageSizeChange !== undefined;\n const activePageSize = isPageSizeControlled ? pageSizeProp : pageSizeState;\n\n // Sync props to state if parent updates them\n useEffect(() => {\n if (pageSizeProp !== undefined) {\n setPageSizeState(pageSizeProp);\n }\n }, [pageSizeProp]);\n\n const activePage = isServerSidePagination ? page! : localPage;\n\n // Reset local page if data size changes\n useEffect(() => {\n if (!isServerSidePagination) {\n setLocalPage(1);\n }\n }, [data.length, isServerSidePagination]);\n\n // Calculate total rows, total pages\n const totalRows = isServerSidePagination ? (totalItems || data.length) : filteredAndSortedData.length;\n const activeTotalPages = isServerSidePagination ? totalPages : Math.ceil(totalRows / activePageSize);\n\n const changePage = (p: number) => {\n if (isServerSidePagination && setPage) {\n setPage(p);\n } else {\n setLocalPage(p);\n }\n };\n\n const handlePageSizeChange = (newSize: number) => {\n if (!isPageSizeControlled) {\n setPageSizeState(newSize);\n }\n if (!isServerSidePagination) {\n setLocalPage(1);\n }\n if (props.onPageSizeChange) {\n props.onPageSizeChange(newSize);\n }\n };\n\n // Slice rows for rendering on Client Side only\n const renderedRows = isServerSidePagination \n ? data \n : filteredAndSortedData.slice((activePage - 1) * activePageSize, activePage * activePageSize);\n\n const startIdx = totalRows === 0 ? 0 : (activePage - 1) * activePageSize + 1;\n const endIdx = isServerSidePagination \n ? Math.min(activePage * activePageSize, totalRows) \n : Math.min(activePage * activePageSize, filteredAndSortedData.length);\n\n // Controlled vs Uncontrolled Row Selections\n const [selectedIdsState, setSelectedIdsState] = useState<(string | number)[]>([]);\n const isSelectionControlled = selectedIdsProp !== undefined;\n const selectedIds = isSelectionControlled ? selectedIdsProp : selectedIdsState;\n\n // Drag to scroll ref & states\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [startX, setStartX] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n\n const dateOptions: FilterTableDateOption[] = ['Today', 'Yesterday', 'Weekly', 'Monthly', 'Yearly', 'Custom'];\n\n // Pinned columns state (max 4 columns)\n const [pinnedColumns, setPinnedColumns] = useState<string[]>([]);\n\n const handleTogglePin = (columnKey: string) => {\n const firstColKey = visibleColumns[0];\n if (columnKey === firstColKey) {\n alert(\"First column is always fixed by default.\");\n return;\n }\n\n if (pinnedColumns.includes(columnKey)) {\n setPinnedColumns(pinnedColumns.filter(k => k !== columnKey));\n } else {\n if (pinnedColumns.length >= 4) {\n alert(\"You can pin a maximum of 4 columns.\");\n return;\n }\n setPinnedColumns([...pinnedColumns, columnKey]);\n }\n };\n\n const isColumnFixed = (columnKey: string, colIdx: number) => {\n if (colIdx === 0) return true;\n return pinnedColumns.includes(columnKey);\n };\n\n const getFixedLeftOffset = (colIdx: number) => {\n let offset = 0;\n if (renderChildRow) {\n offset += 40;\n }\n if (isCheckbox) {\n offset += 50;\n }\n for (let i = 0; i < colIdx; i++) {\n const prevKey = visibleColumns[i];\n if (isColumnFixed(prevKey, i)) {\n const prevCol = columns.find((column: Column) => column.key === prevKey);\n if (prevCol) {\n offset += getColumnWidthNumber(prevCol);\n }\n }\n }\n return `${offset}px`;\n };\n\n // Dummy Action wrappers\n const handleView = (id: string | number, row: Row) => {\n if (onView) {\n onView(id, row);\n } else {\n alert(`Dummy View Action:\\nRow ID: ${id}\\nData:\\n${JSON.stringify(row, null, 2)}`);\n }\n };\n\n const handleEdit = (id: string | number, row: Row) => {\n if (onEdit) {\n onEdit(id, row);\n } else {\n alert(`Dummy Edit Action:\\nRow ID: ${id}\\nData:\\n${JSON.stringify(row, null, 2)}`);\n }\n };\n\n const handleDelete = (id: string | number, row: Row) => {\n if (onDelete) {\n onDelete(id, row);\n } else {\n alert(`Dummy Delete Action:\\nRow ID: ${id}\\nData:\\n${JSON.stringify(row, null, 2)}`);\n }\n };\n\n\n // -------------------------------------------------------------------------\n // DRAG TO SCROLL HANDLERS\n // -------------------------------------------------------------------------\n const startDrag = (e: MouseEvent | TouchEvent) => {\n // Only drag if scrolling is needed\n const container = scrollContainerRef.current;\n if (!container || container.scrollWidth <= container.clientWidth) return;\n \n setIsDragging(true);\n const x = 'pageX' in e ? e.pageX : e.touches[0].pageX;\n setStartX(x - container.offsetLeft);\n setScrollLeft(container.scrollLeft);\n };\n\n const onDrag = (e: MouseEvent | TouchEvent) => {\n if (!isDragging || !scrollContainerRef.current) return;\n if ('touches' in e) e.preventDefault();\n \n const x = 'pageX' in e ? e.pageX : e.touches[0].pageX;\n const walk = (x - scrollContainerRef.current.offsetLeft - startX) * 1.5; // Drag speed multiplier\n scrollContainerRef.current.scrollLeft = scrollLeft - walk;\n };\n\n const endDrag = () => setIsDragging(false);\n\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const mouseDown = (e: MouseEvent) => startDrag(e);\n const mouseMove = (e: MouseEvent) => { if (isDragging) onDrag(e); };\n const mouseUp = () => endDrag();\n\n container.addEventListener('mousedown', mouseDown);\n container.addEventListener('mousemove', mouseMove);\n container.addEventListener('mouseup', mouseUp);\n container.addEventListener('mouseleave', mouseUp);\n\n return () => {\n container.removeEventListener('mousedown', mouseDown);\n container.removeEventListener('mousemove', mouseMove);\n container.removeEventListener('mouseup', mouseUp);\n container.removeEventListener('mouseleave', mouseUp);\n };\n }, [isDragging, startX, scrollLeft]);\n\n // -------------------------------------------------------------------------\n // UTILITY METHODS\n // -------------------------------------------------------------------------\n const toggleColumn = (key: string) => {\n setVisibleColumns(prev => \n prev.includes(key) ? prev.filter(k => k !== key) : [...prev, key]\n );\n };\n\n const getColumnWidth = (col: Column): string => {\n if (col.width) {\n if (col.width.endsWith('px')) return col.width;\n if (col.width.startsWith('min-w-[')) {\n return col.width.replace('min-w-[', '').replace(']', '');\n }\n return `${col.width}px`;\n }\n return '150px';\n };\n\n const getColumnWidthNumber = (col: Column): number => {\n const w = getColumnWidth(col);\n return parseInt(w.replace('px', ''), 10) || 150;\n };\n\n const toggleRowExpand = (id: string | number, e: React.MouseEvent) => {\n e.stopPropagation();\n setExpandedRows(prev => ({\n ...prev,\n [id]: !prev[id]\n }));\n };\n\n const handleTextFilterBlur = (key: string, value: string) => {\n if (value.length >= 3 || value.length === 0) {\n setLocalFilters(prev => ({ ...prev, [key]: value }));\n }\n };\n\n const filterSubmit = () => {\n const hasValidFilter = Object.values(localFilters).some(val => val && String(val).length >= 1) || !!localDateFilter.option;\n if (hasValidFilter) {\n onFilterChange?.({\n ...localFilters,\n dateFilter: localDateFilter.option === 'Custom' ? { from: localDateFilter.from, to: localDateFilter.to } : localDateFilter.option\n });\n changePage(1);\n } else {\n handleClearFilters();\n }\n };\n\n const handleClearFilters = () => {\n setLocalFilters({});\n setLocalDateFilter({ option: null });\n setQuickFilter('');\n onFilterChange?.({});\n changePage(1);\n };\n\n const changeSort = (key: string) => {\n let newDir: 'asc' | 'desc' = 'asc';\n if (sortBy === key) {\n newDir = sortDir === 'asc' ? 'desc' : 'asc';\n }\n setSortBy(key);\n setSortDir(newDir);\n onSortChange?.(key, newDir);\n };\n\n const handleSelect = (type: 'excel' | 'csv') => {\n if (onExport) {\n onExport(type);\n return;\n }\n exportCSV();\n };\n\n const exportCSV = () => {\n const keys = columns.filter((c: Column) => visibleColumns.includes(c.key));\n const header = keys.map((k: Column) => `\"${k.title || k.key}\"`).join(',');\n\n const targetRows = isServerSidePagination ? data : filteredAndSortedData;\n const rows = targetRows.map((r: Row) =>\n keys\n .map((k: Column) => {\n const v = r[k.key];\n if (v == null) return '\"\"';\n const s = String(k.render ? k.render(v, r) : v);\n return '\"' + s.replace(/\"/g, '\"\"') + '\"';\n })\n .join(',')\n );\n\n const csv = [header, ...rows].join('\\n');\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${exportFileName}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const getStatusColorClass = (status: string) => {\n switch (status?.toLowerCase()) {\n case 'active':\n case 'paid':\n case 'payment completed':\n return 'ui-filtertable-chip--success';\n case 'inactive':\n case 'rejected':\n case 'cancelled':\n return 'ui-filtertable-chip--error';\n case 'pending':\n case 'payment pending':\n return 'ui-filtertable-chip--warning';\n case 'waiting for payment':\n return 'ui-filtertable-chip--primary';\n default:\n return 'ui-filtertable-chip--default';\n }\n };\n\n const handleSelectAll = () => {\n const targetRows = isServerSidePagination ? data : filteredAndSortedData;\n if (selectedIds.length === targetRows.length) {\n if (isSelectionControlled) {\n onSelectionChange?.([]);\n } else {\n setSelectedIdsState([]);\n }\n } else {\n const allIds = targetRows.map((r: Row) => r.id);\n if (isSelectionControlled) {\n onSelectionChange?.(allIds);\n } else {\n setSelectedIdsState(allIds);\n }\n }\n };\n\n const handleSelectRow = (id: string | number) => {\n const nextSelection = selectedIds.includes(id) \n ? selectedIds.filter((selectedId: string | number) => selectedId !== id)\n : [...selectedIds, id];\n \n if (isSelectionControlled) {\n onSelectionChange?.(nextSelection);\n } else {\n setSelectedIdsState(nextSelection);\n }\n };\n\n // Action column trigger validation\n const hasActions = onView || onEdit || onDelete || onDownload || (customActions && customActions.length > 0);\n\n return (\n <div \n ref={ref}\n className={cn(\"ui-filtertable-container\", className)}\n style={{\n ...handleSx(sx),\n ...props.style\n }}\n {...props}\n >\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n\n {/* ========================================================================= */}\n {/* TOP TOOLBAR CONTROLS */}\n {/* ========================================================================= */}\n <div className=\"ui-filtertable-toolbar\">\n <div className=\"ui-filtertable-toolbar-left\">\n {isSearch && (\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <input\n type=\"text\"\n placeholder=\"Quick search...\"\n value={quickFilter}\n onChange={(e) => {\n setQuickFilter(e.target.value);\n changePage(1);\n }}\n className=\"ui-filtertable-text-input\"\n style={{ width: '220px', height: '34px', paddingLeft: '32px' }}\n />\n <span style={{ position: 'absolute', left: '10px', color: '#94a3b8' }}>\n <IconSearch />\n </span>\n </div>\n )}\n </div>\n\n <div className=\"ui-filtertable-toolbar-right\">\n {isCheckbox && onCheckboxSubmit && (\n <Tooltip title=\"Submit Selection\" placement=\"top\" arrow>\n <button\n disabled={selectedIds.length === 0}\n onClick={() => onCheckboxSubmit(selectedIds)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n style={{\n width: '38px',\n height: '38px',\n borderColor: 'transparent',\n background: selectedIds.length === 0 ? '#cbd5e1' : 'linear-gradient(135deg, #3b82f6, #1d4ed8)',\n color: 'white',\n cursor: selectedIds.length === 0 ? 'not-allowed' : 'pointer'\n }}\n >\n <IconCircleCheck />\n </button>\n </Tooltip>\n )}\n\n {isExport && (\n <div style={{ position: 'relative' }}>\n <Tooltip title=\"Export Data\" placement=\"top\" arrow>\n <button \n onClick={() => setOpenExportDropdown(!openExportDropdown)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n >\n <IconTableExport />\n </button>\n </Tooltip>\n {openExportDropdown && (\n <>\n <div className=\"ui-filtertable-dropdown-backdrop\" onClick={() => setOpenExportDropdown(false)} />\n <div className=\"ui-filtertable-dropdown-menu\">\n <button className=\"ui-filtertable-dropdown-item\" onClick={() => { handleSelect('excel'); setOpenExportDropdown(false); }}>\n Export as Excel\n </button>\n <button className=\"ui-filtertable-dropdown-item\" onClick={() => { handleSelect('csv'); setOpenExportDropdown(false); }}>\n Export as CSV\n </button>\n </div>\n </>\n )}\n </div>\n )}\n\n {isDateFilter && (\n <Tooltip title=\"Date Filter\" placement=\"top\" arrow>\n <button \n onClick={() => setOpenDateFilterDialog(true)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n >\n <IconFilter />\n </button>\n </Tooltip>\n )}\n\n {isClearFilter && (\n <Tooltip title=\"Clear Filters\" placement=\"top\" arrow>\n <button \n onClick={handleClearFilters}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--error\"\n >\n <IconWashDrycleanOff />\n </button>\n </Tooltip>\n )}\n\n {columns.some((c: Column) => c.filterable) && (\n <Tooltip title=\"Submit Filters\" placement=\"top\" arrow>\n <button\n onClick={filterSubmit}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n style={{\n background: 'linear-gradient(135deg, #10b981, #059669)',\n color: 'white',\n borderColor: 'transparent'\n }}\n >\n <IconBrandTelegram />\n </button>\n </Tooltip>\n )}\n\n {isManageColumns && (\n <Tooltip title=\"Manage Columns\" placement=\"top\" arrow>\n <button \n onClick={() => setOpenColumnsDialog(true)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--success\"\n >\n <IconColumns />\n </button>\n </Tooltip>\n )}\n </div>\n </div>\n\n {/* ========================================================================= */}\n {/* INTERACTIVE TABLE BODY PANEL */}\n {/* ========================================================================= */}\n <TableContainer className=\"ui-filtertable-wrapper\" ref={scrollContainerRef}>\n <Table className=\"ui-filtertable-table\">\n <TableHead>\n <TableRow>\n {/* Expand Chevron Column */}\n {renderChildRow && (\n <TableCell \n variant=\"head\"\n className=\"ui-filtertable-th ui-filtertable-sticky-left\" \n style={{ width: '40px', minWidth: '40px', left: '0px' }} \n />\n )}\n\n {/* Multiselect Checkbox Column */}\n {isCheckbox && (\n <TableCell \n variant=\"head\"\n className=\"ui-filtertable-th ui-filtertable-sticky-left\" \n style={{ width: '50px', minWidth: '50px', left: renderChildRow ? '40px' : '0px' }}\n >\n <CustomCheckbox\n checked={data.length > 0 && selectedIds.length === data.length}\n indeterminate={selectedIds.length > 0 && selectedIds.length < data.length}\n onChange={handleSelectAll}\n />\n </TableCell>\n )}\n\n {/* Main Data Column Headers */}\n {columns\n .filter((c: Column) => visibleColumns.includes(c.key))\n .map((col: Column, idx: number) => {\n const isSticky = isColumnFixed(col.key, idx);\n const leftOffset = isSticky ? getFixedLeftOffset(idx) : undefined;\n\n return (\n <TableCell\n variant=\"head\"\n key={col.key}\n className={cn(\n \"ui-filtertable-th\",\n isSticky && \"ui-filtertable-sticky-left\"\n )}\n style={{\n minWidth: getColumnWidth(col),\n width: getColumnWidth(col),\n left: leftOffset,\n cursor: col.sortable ? 'pointer' : 'default'\n }}\n onClick={() => col.sortable && changeSort(col.key)}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: col.filterable ? '8px' : '0' }}>\n <span>{col.title}</span>\n {sortBy === col.key && (\n <span style={{ fontSize: '11px', color: '#3b82f6', fontWeight: 900 }}>\n {sortDir === 'asc' ? ' ▲' : ' ▼'}\n </span>\n )}\n </div>\n\n {/* Column Specific Filter Section */}\n {col.filterable && (\n <div onClick={(e) => e.stopPropagation()}>\n {col.filterType === 'select' && col.filterOptions ? (\n <select\n value={localFilters[col.key] || ''}\n onChange={(e) => {\n const val = e.target.value;\n setLocalFilters(prev => ({ ...prev, [col.key]: val }));\n onFilterChange?.({ ...localFilters, [col.key]: val });\n changePage(1);\n }}\n className=\"ui-filtertable-select-input\"\n >\n <option value=\"\">Filter {col.title}</option>\n {col.filterOptions.map((opt: { label: string; value: string }) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n type={col.fieldType || 'text'}\n placeholder={`Filter ${col.title}`}\n value={localFilters[col.key] || ''}\n onChange={(e) => setLocalFilters(prev => ({ ...prev, [col.key]: e.target.value }))}\n onBlur={(e) => handleTextFilterBlur(col.key, e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') filterSubmit();\n }}\n className=\"ui-filtertable-text-input\"\n />\n )}\n </div>\n )}\n </TableCell>\n );\n })}\n\n {/* Actions Headers */}\n {hasActions && (\n <TableCell \n variant=\"head\"\n className=\"ui-filtertable-th ui-filtertable-sticky-right\"\n style={{ textAlign: 'center', verticalAlign: 'middle' }}\n >\n <span>Actions</span>\n </TableCell>\n )}\n </TableRow>\n </TableHead>\n\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell \n colSpan={visibleColumns.length + (isCheckbox ? 1 : 0) + (renderChildRow ? 1 : 0) + (hasActions ? 1 : 0)} \n style={{ textAlign: 'center', padding: '32px', color: '#64748b' }}\n >\n Loading data...\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell \n colSpan={visibleColumns.length + (isCheckbox ? 1 : 0) + (renderChildRow ? 1 : 0) + (hasActions ? 1 : 0)} \n style={{ textAlign: 'center', padding: '32px', color: '#64748b' }}\n >\n No rows data found\n </TableCell>\n </TableRow>\n ) : (\n renderedRows.map((row: Row, idx: number) => {\n const isExpanded = !!expandedRows[row.id];\n\n return (\n <React.Fragment key={row.id || idx}>\n {/* Main Primary Row */}\n <TableRow className=\"ui-filtertable-row\">\n \n {/* Chevron Expand Column */}\n {renderChildRow && (\n <TableCell \n className=\"ui-filtertable-td ui-filtertable-sticky-left\" \n style={{ width: '40px', minWidth: '40px', textAlign: 'center', left: '0px' }}\n >\n <span \n className={cn(\n \"ui-ft-expand-trigger\",\n isExpanded && \"ui-ft-expand-trigger--expanded\"\n )}\n onClick={(e) => toggleRowExpand(row.id, e)}\n >\n <IconChevronRight />\n </span>\n </TableCell>\n )}\n\n {/* Multi-Select checkbox Column */}\n {isCheckbox && (\n <TableCell \n className=\"ui-filtertable-td ui-filtertable-sticky-left\" \n style={{ width: '50px', minWidth: '50px', left: renderChildRow ? '40px' : '0px' }}\n >\n <CustomCheckbox\n checked={selectedIds.includes(row.id)}\n onChange={() => handleSelectRow(row.id)}\n />\n </TableCell>\n )}\n\n {/* Visible Data Cells */}\n {columns\n .filter((c: Column) => visibleColumns.includes(c.key))\n .map((col: Column, colIdx: number) => {\n const isSticky = isColumnFixed(col.key, colIdx);\n const leftOffset = isSticky ? getFixedLeftOffset(colIdx) : undefined;\n\n const cellVal = row[col.key];\n const formatted = col.render ? col.render(cellVal, row) : cellVal;\n\n return (\n <TableCell\n key={col.key}\n className={cn(\n \"ui-filtertable-td\",\n isSticky && \"ui-filtertable-sticky-left\"\n )}\n style={{\n left: leftOffset,\n textOverflow: 'ellipsis',\n overflow: 'hidden'\n }}\n >\n {col.key === 'status' ? (\n <span className={cn(\"ui-filtertable-chip\", getStatusColorClass(String(cellVal)))}>\n {String(cellVal)}\n </span>\n ) : (\n formatted ?? 'N/A'\n )}\n </TableCell>\n );\n })}\n\n {/* Custom and standard actions column */}\n {hasActions && (\n <TableCell className=\"ui-filtertable-td ui-filtertable-sticky-right\">\n <div style={{ display: 'flex', gap: '6px', justifyContent: 'center' }}>\n \n {/* Custom Actions passed as array */}\n {customActions && customActions.map((action: CustomAction) => {\n const isHidden = action.hidden?.(row);\n const isDisabled = action.disabled?.(row);\n if (isHidden) return null;\n\n return (\n <Tooltip key={action.key} title={action.title} placement=\"top\" arrow>\n <button\n onClick={() => action.onClick(row)}\n disabled={isDisabled}\n className={cn(\n \"ui-filtertable-icon-btn\",\n isDisabled && \"ui-filtertable-icon-btn--disabled\"\n )}\n style={{ color: action.color }}\n >\n {action.icon}\n </button>\n </Tooltip>\n );\n })}\n\n {/* Standard onView */}\n <Tooltip title=\"View\" placement=\"top\" arrow>\n <button \n onClick={() => handleView(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n >\n <IconEye />\n </button>\n </Tooltip>\n\n {/* Standard onEdit */}\n <Tooltip title=\"Edit\" placement=\"top\" arrow>\n <button \n onClick={() => handleEdit(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--success\"\n >\n <IconEdit />\n </button>\n </Tooltip>\n\n {/* Standard onDelete */}\n <Tooltip title=\"Delete\" placement=\"top\" arrow>\n <button \n onClick={() => handleDelete(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--error\"\n >\n <IconTrash />\n </button>\n </Tooltip>\n\n {/* Standard onDownload */}\n {onDownload && row.status !== 'Pending' && row.status !== 'Cancelled' && (\n <Tooltip title=\"Download\" placement=\"top\" arrow>\n <button \n onClick={() => onDownload(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--success\"\n style={{ color: '#16a34a' }}\n >\n <IconDownload />\n </button>\n </Tooltip>\n )}\n\n\n\n </div>\n </TableCell>\n )}\n </TableRow>\n\n {/* Collapsible Child Row Detail */}\n {renderChildRow && (\n <TableRow className=\"ui-filtertable-child-row-tr\" style={{ display: isExpanded ? 'table-row' : 'none' }}>\n <TableCell \n colSpan={visibleColumns.length + (isCheckbox ? 1 : 0) + (renderChildRow ? 1 : 0) + (hasActions ? 1 : 0)} \n style={{ padding: 0, border: 0 }}\n >\n <div className={cn(\n \"ui-filtertable-child-row-collapse\",\n isExpanded && \"ui-filtertable-child-row-collapse--expanded\"\n )}>\n <div className=\"ui-filtertable-child-row-content\">\n {renderChildRow(row)}\n </div>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n );\n })\n )}\n </TableBody>\n </Table>\n </TableContainer>\n\n {/* ========================================================================= */}\n {/* PREMIUM PAGINATION FOOTER */}\n {/* ========================================================================= */}\n <div className=\"ui-filtertable-pagination\">\n <div className=\"ui-filtertable-pagination-info\">\n Showing <span>{startIdx}</span> - <span>{endIdx}</span> of <span>{totalRows}</span>\n <div className=\"ui-filtertable-pagesize-select-container\" style={{ display: 'inline-flex', alignItems: 'center', gap: '8px', marginLeft: '20px' }}>\n <span style={{ color: '#64748b', fontSize: '13px' }}>Rows per page:</span>\n <select\n value={activePageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n className=\"ui-filtertable-select-input\"\n style={{ \n height: '28px', \n padding: '2px 8px', \n fontSize: '12px', \n width: '70px', \n minWidth: '70px',\n borderRadius: '6px',\n border: '1px solid #cbd5e1',\n backgroundColor: '#ffffff',\n color: '#334155',\n cursor: 'pointer'\n }}\n >\n {pageSizeOptions.map((opt: number) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"ui-filtertable-pagination-controls\">\n <Pagination\n count={activeTotalPages}\n page={activePage}\n onChange={(e, p) => changePage(p)}\n color=\"primary\"\n variant=\"outlined\"\n shape=\"rounded\"\n size=\"medium\"\n />\n </div>\n </div>\n\n {/* ========================================================================= */}\n {/* DIALOG 1: MANAGE COLUMN VISIBILITIES */}\n {/* ========================================================================= */}\n {openColumnsDialog && (\n <div className=\"ui-filtertable-dialog-backdrop\" onClick={() => setOpenColumnsDialog(false)}>\n <div className=\"ui-filtertable-dialog-box\" onClick={e => e.stopPropagation()}>\n <div className=\"ui-filtertable-dialog-header\">\n <span>Choose Columns</span>\n <button className=\"ui-filtertable-dialog-close\" onClick={() => setOpenColumnsDialog(false)}>\n <IconCancel />\n </button>\n </div>\n <div className=\"ui-filtertable-dialog-body\">\n <div className=\"ui-filtertable-columns-grid\">\n {columns.map((c: Column) => {\n const isPinned = pinnedColumns.includes(c.key);\n const isFirst = visibleColumns[0] === c.key;\n return (\n <div \n key={c.key} \n style={{ \n display: 'flex', \n alignItems: 'center', \n justifyContent: 'space-between',\n padding: '6px 8px',\n borderRadius: '6px',\n backgroundColor: '#f8fafc',\n border: '1px solid #e2e8f0'\n }}\n >\n <label className=\"ui-filtertable-column-checkbox-label\" style={{ display: 'flex', alignItems: 'center', gap: '8px', cursor: 'pointer', flex: 1, margin: 0 }}>\n <input\n type=\"checkbox\"\n checked={visibleColumns.includes(c.key)}\n onChange={() => toggleColumn(c.key)}\n className=\"ui-filtertable-text-input\"\n style={{ width: '16px', height: '16px', cursor: 'pointer', margin: 0 }}\n />\n <span style={{ fontSize: '13px', fontWeight: 500, color: '#334155' }}>{c.title}</span>\n </label>\n \n <button\n onClick={() => handleTogglePin(c.key)}\n style={{\n background: 'transparent',\n border: 'none',\n cursor: isFirst ? 'not-allowed' : 'pointer',\n padding: '4px',\n color: isFirst ? '#94a3b8' : (isPinned ? '#3b82f6' : '#cbd5e1'),\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '4px',\n transition: 'all 150ms'\n }}\n title={isFirst ? \"Fixed by default\" : (isPinned ? \"Unpin Column\" : \"Pin Column\")}\n >\n {isPinned || isFirst ? <IconPinFilled /> : <IconPin />}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <div className=\"ui-filtertable-dialog-footer\">\n <button \n className=\"ui-filtertable-pagination-btn ui-filtertable-pagination-btn--active\" \n onClick={() => setOpenColumnsDialog(false)}\n style={{ height: '36px', padding: '0 20px' }}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* ========================================================================= */}\n {/* DIALOG 2: SELECT DATE FILTER RANGE */}\n {/* ========================================================================= */}\n {openDateFilterDialog && (\n <div className=\"ui-filtertable-dialog-backdrop\" onClick={() => setOpenDateFilterDialog(false)}>\n <div className=\"ui-filtertable-dialog-box\" onClick={e => e.stopPropagation()}>\n <div className=\"ui-filtertable-dialog-header\">\n <span>Date Filter</span>\n <button className=\"ui-filtertable-dialog-close\" onClick={() => setOpenDateFilterDialog(false)}>\n <IconCancel />\n </button>\n </div>\n <div className=\"ui-filtertable-dialog-body\" style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <div className=\"ui-filtertable-form-group\">\n <label className=\"ui-filtertable-form-label\">Select Range</label>\n <select\n value={localDateFilter.option || ''}\n onChange={e => setLocalDateFilter({ option: (e.target.value || null) as FilterTableDateOption })}\n className=\"ui-filtertable-select-input\"\n style={{ height: '34px' }}\n >\n <option value=\"\">Select Range</option>\n {dateOptions.map(opt => (\n <option key={opt} value={opt || ''}>{opt}</option>\n ))}\n </select>\n </div>\n\n {localDateFilter.option === 'Custom' && (\n <div style={{ display: 'flex', gap: '12px' }}>\n <div className=\"ui-filtertable-form-group\" style={{ flex: 1 }}>\n <label className=\"ui-filtertable-form-label\">From Date</label>\n <input\n type=\"date\"\n value={localDateFilter.from || ''}\n max={new Date().toISOString().split('T')[0]}\n onChange={e => setLocalDateFilter(prev => ({ ...prev, from: e.target.value }))}\n className=\"ui-filtertable-text-input\"\n style={{ height: '34px' }}\n />\n </div>\n <div className=\"ui-filtertable-form-group\" style={{ flex: 1 }}>\n <label className=\"ui-filtertable-form-label\">To Date</label>\n <input\n type=\"date\"\n value={localDateFilter.to || ''}\n min={localDateFilter.from || undefined}\n onChange={e => setLocalDateFilter(prev => ({ ...prev, to: e.target.value }))}\n className=\"ui-filtertable-text-input\"\n style={{ height: '34px' }}\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"ui-filtertable-dialog-footer\">\n <button \n className=\"ui-filtertable-pagination-btn\" \n onClick={() => setOpenDateFilterDialog(false)}\n style={{ height: '36px' }}\n >\n Cancel\n </button>\n <button\n className=\"ui-filtertable-pagination-btn ui-filtertable-pagination-btn--active\"\n onClick={() => {\n onFilterChange?.({\n ...localFilters,\n dateFilter: localDateFilter.option === 'Custom' ? { from: localDateFilter.from, to: localDateFilter.to } : localDateFilter.option\n });\n setPage(1);\n setOpenDateFilterDialog(false);\n }}\n style={{ height: '36px', padding: '0 20px' }}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n )}\n\n </div>\n );\n }\n);\n\nFilterTable.displayName = 'FilterTable';\n"]}
1
+ {"version":3,"sources":["../src/components/FilterTable/FilterTable.tsx"],"names":["IconSearch","jsx","IconEye","jsxs","IconEdit","IconTrash","IconCancel","IconCircleCheck","IconDownload","IconTableExport","IconFilter","IconWashDrycleanOff","IconColumns","IconChevronRight","IconBrandTelegram","IconChecked","IconPin","IconPinFilled","STYLES","CustomCheckbox","checked","indeterminate","onChange","e","cn","FilterTable","forwardRef","loading","data","columns","pageSizeProp","pageSizeOptions","exportUrl","exportFileName","onView","onEdit","onDelete","onDownload","customActions","page","totalPages","totalItems","setPage","stickyColumns","onFilterChange","onSortChange","onExport","isExport","isDateFilter","isClearFilter","isManageColumns","isSearch","isCheckbox","selectedIdsProp","onSelectionChange","onCheckboxSubmit","renderChildRow","moduleName","className","sx","props","ref","visibleColumns","setVisibleColumns","useState","c","openColumnsDialog","setOpenColumnsDialog","openDateFilterDialog","setOpenDateFilterDialog","openExportDropdown","setOpenExportDropdown","sortBy","setSortBy","sortDir","setSortDir","quickFilter","setQuickFilter","localFilters","setLocalFilters","localDateFilter","setLocalDateFilter","expandedRows","setExpandedRows","filteredAndSortedData","React","result","query","row","val","key","lowerQuery","now","startOfToday","dateVal","d","yest","weekAgo","monthAgo","yearAgo","fromD","toD","a","b","aVal","bVal","aStr","bStr","numA","numB","isServerSidePagination","localPage","setLocalPage","pageSizeState","setPageSizeState","isPageSizeControlled","activePageSize","useEffect","activePage","totalRows","activeTotalPages","changePage","p","handlePageSizeChange","newSize","renderedRows","startIdx","endIdx","selectedIdsState","setSelectedIdsState","isSelectionControlled","selectedIds","scrollContainerRef","useRef","isDragging","setIsDragging","startX","setStartX","scrollLeft","setScrollLeft","dateOptions","pinnedColumns","setPinnedColumns","handleTogglePin","columnKey","firstColKey","k","isColumnFixed","colIdx","getFixedLeftOffset","offset","i","prevKey","prevCol","column","getColumnWidthNumber","handleView","id","handleEdit","handleDelete","startDrag","container","x","onDrag","walk","endDrag","mouseDown","mouseMove","mouseUp","toggleColumn","prev","getColumnWidth","col","w","toggleRowExpand","handleTextFilterBlur","value","filterSubmit","handleClearFilters","changeSort","newDir","handleSelect","type","exportCSV","keys","header","rows","r","v","csv","blob","url","getStatusColorClass","status","handleSelectAll","targetRows","allIds","handleSelectRow","nextSelection","selectedId","hasActions","handleSx","Tooltip","Fragment","TableContainer","Table","TableHead","TableRow","TableCell","idx","isSticky","leftOffset","opt","TableBody","isExpanded","cellVal","formatted","action","isHidden","isDisabled","Pagination","isPinned","isFirst"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;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","file":"chunk-2OAU53K6.mjs","sourcesContent":["'use client';\n\nimport React, { forwardRef, useState, useEffect, useRef, SyntheticEvent } from 'react';\nimport { cn } from '../../utils/cn';\nimport { handleSx } from '../../utils/handleSx';\nimport { \n FilterTableProps, \n Column, \n Row, \n CustomAction,\n FilterTableDateOption, \n FilterTableDateState \n} from './FilterTable.types';\nimport { Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from '../Table';\nimport { Pagination } from '../Pagination';\nimport { Tooltip } from '../Tooltip';\n\n// =========================================================================\n// CUSTOM CRISP SVG ICONS (NO OUTSIDE DEPENDENCIES)\n// =========================================================================\nconst IconSearch = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"></path>\n </svg>\n);\n\nconst IconEye = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z\"></path>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"></path>\n </svg>\n);\n\nconst IconEdit = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10\"></path>\n </svg>\n);\n\nconst IconTrash = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0\"></path>\n </svg>\n);\n\nconst IconCancel = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n </svg>\n);\n\nconst IconCircleCheck = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n </svg>\n);\n\nconst IconCircleX = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n </svg>\n);\n\nconst IconDownload = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3\"></path>\n </svg>\n);\n\nconst IconFileText = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"></path>\n </svg>\n);\n\nconst IconTableExport = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" />\n </svg>\n);\n\nconst IconFilter = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v3.022c0 .385-.122.759-.347 1.067L15 13.988v5.262c0 .379-.214.725-.55.898l-3.5 1.75a.5.5 0 01-.7-.447v-7.463L4.35 8.863C4.12 8.555 4 8.18 4 7.796V4.774c0-.54.384-1.006.917-1.096A50.064 50.064 0 0112 3z\"></path>\n </svg>\n);\n\nconst IconWashDrycleanOff = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636\"></path>\n </svg>\n);\n\nconst IconColumns = () => (\n <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 4.5v15m6-15v15m-12-3h18c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v12.75c0 .621.504 1.125 1.125 1.125z\"></path>\n </svg>\n);\n\nconst IconChevronRight = () => (\n <svg width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\"></path>\n </svg>\n);\n\nconst IconBrandTelegram = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 12L3.269 3.126A59.768 59.768 0 0121.485 12 59.77 59.77 0 013.27 20.876L5.999 12zm0 0h7.5\"></path>\n </svg>\n);\n\nconst IconChecked = () => (\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" viewBox=\"0 0 24 24\" style={{ color: 'white' }}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"></path>\n </svg>\n);\n\nconst IconPin = () => (\n <svg width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 17v5M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.89A.5.5 0 0 0 6.34 14h11.32a.5.5 0 0 0 .43-.56l-.32-2.18A2 2 0 0 1 17 9.47V5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v4.47Z\" />\n </svg>\n);\n\nconst IconPinFilled = () => (\n <svg width=\"14\" height=\"14\" fill=\"currentColor\" viewBox=\"0 0 24 24\" className=\"ui-ft-icon\">\n <path d=\"M12 17v5M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.89A.5.5 0 0 0 6.34 14h11.32a.5.5 0 0 0 .43-.56l-.32-2.18A2 2 0 0 1 17 9.47V5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v4.47Z\" />\n </svg>\n);\n\n\n// =========================================================================\n// PURE VANILLA CSS REGISTRY\n// =========================================================================\nconst STYLES = `\n .ui-filtertable-container {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 12px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n padding: 24px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 16px;\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n /* Toolbar Controls */\n .ui-filtertable-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n }\n\n .ui-filtertable-toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .ui-filtertable-toolbar-right {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n }\n\n /* Table Card Wrapper */\n .ui-filtertable-wrapper {\n width: 100%;\n overflow: auto;\n border-radius: 8px;\n border: 1px solid #e2e8f0;\n background-color: #ffffff;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n }\n\n /* Native Styled Table */\n .ui-filtertable-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n text-align: left;\n }\n\n .ui-filtertable-th {\n background: #f8fafc;\n color: #475569;\n font-size: 13px;\n font-weight: 600;\n padding: 10px 16px;\n border-bottom: 1px solid #e2e8f0;\n letter-spacing: 0.2px;\n box-sizing: border-box;\n vertical-align: middle;\n }\n\n .ui-filtertable-td {\n padding: 10px 16px;\n font-size: 13.5px;\n color: #334155;\n border-bottom: 1px solid #f1f5f9;\n box-sizing: border-box;\n vertical-align: middle;\n white-space: nowrap;\n background-color: #ffffff;\n transition: background-color 150ms;\n }\n\n .ui-filtertable-row:hover .ui-filtertable-td {\n background-color: #f8fafc;\n }\n\n /* Sticky Styles */\n .ui-filtertable-sticky-left {\n position: sticky;\n z-index: 3;\n border-right: 1px solid #e2e8f0;\n }\n\n .ui-filtertable-sticky-right {\n position: sticky;\n right: 0;\n z-index: 3;\n border-left: 1px solid #e2e8f0;\n }\n\n .ui-filtertable-th.ui-filtertable-sticky-left,\n .ui-filtertable-th.ui-filtertable-sticky-right {\n background: #f8fafc !important;\n }\n\n /* Form Fields */\n .ui-filtertable-text-input {\n width: 100%;\n height: 32px;\n padding: 4px 8px;\n font-size: 13px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n background-color: #f8fafc;\n color: #334155;\n box-sizing: border-box;\n transition: all 150ms;\n }\n\n .ui-filtertable-text-input:focus {\n border-color: #3b82f6;\n background-color: #ffffff;\n outline: none;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);\n }\n\n .ui-filtertable-select-input {\n width: 100%;\n height: 32px;\n padding: 0 8px;\n font-size: 13px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n background-color: #f8fafc;\n color: #334155;\n box-sizing: border-box;\n transition: all 150ms;\n outline: none;\n }\n\n .ui-filtertable-select-input:focus {\n border-color: #3b82f6;\n background-color: #ffffff;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);\n }\n\n /* Buttons & Icon Buttons */\n .ui-filtertable-icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: #64748b;\n cursor: pointer;\n transition: all 150ms;\n }\n\n .ui-filtertable-icon-btn svg {\n width: 16px;\n height: 16px;\n }\n\n .ui-filtertable-icon-btn:hover {\n background-color: #f1f5f9;\n color: #0f172a;\n }\n\n .ui-filtertable-icon-btn--primary:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #3b82f6 !important;\n }\n\n .ui-filtertable-icon-btn--success:hover {\n background-color: rgba(16, 185, 129, 0.1);\n color: #10b981 !important;\n }\n\n .ui-filtertable-icon-btn--error:hover {\n background-color: rgba(239, 68, 68, 0.1);\n color: #ef4444 !important;\n }\n\n .ui-filtertable-icon-btn--warning:hover {\n background-color: rgba(245, 158, 11, 0.1);\n color: #f59e0b !important;\n }\n\n .ui-filtertable-icon-btn--disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* Dialog Overlay */\n .ui-filtertable-dialog-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(15, 23, 42, 0.4);\n backdrop-filter: blur(8px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n animation: ui-ft-fade-in 150ms ease-out;\n }\n\n .ui-filtertable-dialog-box {\n background: #ffffff;\n border: 1px solid rgba(226, 232, 240, 0.8);\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 460px;\n width: 90%;\n overflow: hidden;\n animation: ui-ft-scale-up 150ms cubic-bezier(0.34, 1.56, 0.64, 1);\n }\n\n .ui-filtertable-dialog-header {\n padding: 16px 20px;\n border-bottom: 1px solid #f1f5f9;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 700;\n font-size: 16px;\n color: #1e293b;\n }\n\n .ui-filtertable-dialog-close {\n background: transparent;\n border: none;\n color: #64748b;\n cursor: pointer;\n padding: 4px;\n border-radius: 9999px;\n }\n\n .ui-filtertable-dialog-body {\n padding: 20px;\n max-height: 350px;\n overflow-y: auto;\n }\n\n .ui-filtertable-dialog-footer {\n padding: 14px 20px;\n border-top: 1px solid #f1f5f9;\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n background-color: #f8fafc;\n }\n\n /* Form Elements inside Modal */\n .ui-filtertable-form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .ui-filtertable-form-label {\n font-size: 12.5px;\n font-weight: 600;\n color: #475569;\n }\n\n .ui-filtertable-columns-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n }\n\n .ui-filtertable-column-checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #334155;\n cursor: pointer;\n user-select: none;\n }\n\n /* Checkbox designs */\n .ui-filtertable-checkbox-container {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n }\n\n .ui-filtertable-checkbox-box {\n width: 18px;\n height: 18px;\n border-radius: 4px;\n border: 2px solid #cbd5e1;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 150ms;\n background-color: #ffffff;\n }\n\n .ui-filtertable-checkbox-box--checked {\n background-color: #3b82f6;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-checkbox-box--indeterminate {\n background-color: #3b82f6;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-checkbox-inner-dash {\n width: 10px;\n height: 2px;\n background-color: white;\n border-radius: 1px;\n }\n\n /* Drops down menus */\n .ui-filtertable-dropdown-backdrop {\n position: fixed;\n inset: 0;\n z-index: 1000;\n }\n\n .ui-filtertable-dropdown-menu {\n position: absolute;\n right: 0;\n top: 110%;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n min-width: 150px;\n z-index: 1001;\n padding: 6px 0;\n animation: ui-ft-fade-in 100ms ease-out;\n }\n\n .ui-filtertable-dropdown-item {\n display: block;\n width: 100%;\n padding: 8px 14px;\n font-size: 13px;\n color: #334155;\n text-align: left;\n border: none;\n background: transparent;\n cursor: pointer;\n transition: background-color 150ms;\n }\n\n .ui-filtertable-dropdown-item:hover {\n background-color: #f1f5f9;\n color: #0f172a;\n }\n\n /* Status Chips */\n .ui-filtertable-chip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n border-radius: 9999px;\n text-transform: capitalize;\n box-shadow: 0 1px 2px rgba(0,0,0,0.02);\n }\n\n .ui-filtertable-chip--success {\n background-color: #d1fae5;\n color: #065f46;\n border: 1px solid #a7f3d0;\n }\n\n .ui-filtertable-chip--error {\n background-color: #fee2e2;\n color: #991b1b;\n border: 1px solid #fecaca;\n }\n\n .ui-filtertable-chip--warning {\n background-color: #fef3c7;\n color: #92400e;\n border: 1px solid #fde68a;\n }\n\n .ui-filtertable-chip--primary {\n background-color: #dbeafe;\n color: #1e40af;\n border: 1px solid #bfdbfe;\n }\n\n .ui-filtertable-chip--default {\n background-color: #f1f5f9;\n color: #475569;\n border: 1px solid #e2e8f0;\n }\n\n /* Pagination Footer */\n .ui-filtertable-pagination {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 20px;\n background: rgba(255, 255, 255, 0.5);\n border: 1px solid rgba(226, 232, 240, 0.8);\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(148, 163, 184, 0.03);\n }\n\n .ui-filtertable-pagination-info {\n font-size: 13px;\n color: #64748b;\n }\n\n .ui-filtertable-pagination-info span {\n font-weight: 600;\n color: #1e293b;\n }\n\n .ui-filtertable-pagination-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .ui-filtertable-pagination-btn {\n height: 32px;\n padding: 0 12px;\n font-size: 12.5px;\n font-weight: 500;\n background-color: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n color: #475569;\n cursor: pointer;\n box-shadow: 0 1px 2px rgba(0,0,0,0.03);\n transition: all 150ms;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .ui-filtertable-pagination-btn:hover:not(:disabled) {\n background-color: #3b82f6;\n color: #ffffff;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-pagination-btn--active {\n background-color: #3b82f6;\n color: #ffffff;\n border-color: #3b82f6;\n }\n\n .ui-filtertable-pagination-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .ui-filtertable-pagination-dots {\n color: #94a3b8;\n padding: 0 4px;\n font-size: 12px;\n }\n\n /* Child Row collapse */\n .ui-filtertable-child-row-tr {\n background-color: #f8fafc;\n }\n\n .ui-filtertable-child-row-collapse {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 250ms cubic-bezier(0.4, 0, 0.2, 1);\n background-color: #f8fafc;\n overflow: hidden;\n }\n\n .ui-filtertable-child-row-collapse--expanded {\n grid-template-rows: 1fr;\n border-bottom: 1px solid #cbd5e1;\n }\n\n .ui-filtertable-child-row-content {\n overflow: hidden;\n padding: 0 20px;\n box-sizing: border-box;\n transition: padding 250ms;\n }\n\n .ui-filtertable-child-row-collapse--expanded .ui-filtertable-child-row-content {\n padding: 16px 20px;\n }\n\n /* Expand Trigger icon rotation */\n .ui-ft-expand-trigger {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 9999px;\n color: #64748b;\n transition: transform 200ms, background-color 150ms;\n }\n\n .ui-ft-expand-trigger:hover {\n background-color: #f1f5f9;\n color: #0f172a;\n }\n\n .ui-ft-expand-trigger--expanded {\n transform: rotate(90deg);\n color: #3b82f6;\n }\n\n /* Core animations */\n @keyframes ui-ft-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes ui-ft-scale-up {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n }\n`;\n\n// Helper component for styled checkbox\nconst CustomCheckbox = ({ \n checked, \n indeterminate = false, \n onChange \n}: { \n checked: boolean; \n indeterminate?: boolean; \n onChange: (e: any) => void; \n}) => {\n return (\n <span \n className=\"ui-filtertable-checkbox-container\" \n onClick={(e) => {\n e.stopPropagation();\n onChange(e);\n }}\n >\n <span className={cn(\n \"ui-filtertable-checkbox-box\",\n checked && \"ui-filtertable-checkbox-box--checked\",\n indeterminate && !checked && \"ui-filtertable-checkbox-box--indeterminate\"\n )}>\n {checked && <IconChecked />}\n {indeterminate && !checked && <span className=\"ui-filtertable-checkbox-inner-dash\" />}\n </span>\n </span>\n );\n};\n\n// =========================================================================\n// MAIN FILTER TABLE COMPONENT\n// =========================================================================\nexport const FilterTable = forwardRef<HTMLDivElement, FilterTableProps>(\n (\n {\n loading = false,\n data = [],\n columns = [],\n pageSize: pageSizeProp,\n pageSizeOptions = [10, 25, 50],\n exportUrl,\n exportFileName = 'export',\n \n onView,\n onEdit,\n onDelete,\n onDownload,\n customActions = [],\n \n page,\n totalPages = 1,\n totalItems = 0,\n setPage,\n \n stickyColumns = 2,\n onFilterChange,\n onSortChange,\n onExport,\n \n isExport = true,\n isDateFilter = true,\n isClearFilter = true,\n isManageColumns = true,\n isSearch = false,\n isCheckbox = false,\n \n selectedIds: selectedIdsProp,\n onSelectionChange,\n onCheckboxSubmit,\n \n renderChildRow,\n moduleName,\n className,\n sx,\n ...props\n },\n ref\n ) => {\n // -------------------------------------------------------------------------\n // LOCAL STATES\n // -------------------------------------------------------------------------\n const [visibleColumns, setVisibleColumns] = useState<string[]>(columns.map((c: Column) => c.key));\n const [openColumnsDialog, setOpenColumnsDialog] = useState(false);\n const [openDateFilterDialog, setOpenDateFilterDialog] = useState(false);\n const [openExportDropdown, setOpenExportDropdown] = useState(false);\n \n const [sortBy, setSortBy] = useState<string | null>(null);\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>('asc');\n \n const [quickFilter, setQuickFilter] = useState('');\n const [localFilters, setLocalFilters] = useState<Record<string, any>>({});\n const [localDateFilter, setLocalDateFilter] = useState<FilterTableDateState>({ option: null });\n \n // Row expansion state for Child Rows\n const [expandedRows, setExpandedRows] = useState<Record<string | number, boolean>>({});\n\n // -------------------------------------------------------------------------\n // CLIENT SIDE SEARCH / FILTER / SORT LOGIC\n // -------------------------------------------------------------------------\n const filteredAndSortedData = React.useMemo(() => {\n // If server-side handles it (callbacks provided), we just return data as is\n if (onFilterChange || onSortChange) {\n return data;\n }\n\n let result = [...data];\n\n // 1. Quick Search Filter\n if (quickFilter) {\n const query = quickFilter.toLowerCase();\n result = result.filter(row => \n Object.values(row).some(val => \n val != null && String(val).toLowerCase().includes(query)\n )\n );\n }\n\n // 2. Column Text / Select Filters\n Object.keys(localFilters).forEach(key => {\n const query = localFilters[key];\n if (query != null && String(query).trim() !== '') {\n const lowerQuery = String(query).toLowerCase();\n result = result.filter(row => {\n const val = row[key];\n return val != null && String(val).toLowerCase().includes(lowerQuery);\n });\n }\n });\n\n // 3. Column Date Range Filter\n if (localDateFilter.option) {\n const now = new Date();\n const startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n result = result.filter(row => {\n const dateVal = row.created_at || row.createdAt || row.date;\n if (!dateVal) return true;\n const d = new Date(dateVal);\n if (isNaN(d.getTime())) return true;\n\n switch (localDateFilter.option) {\n case 'Today':\n return d >= startOfToday;\n case 'Yesterday': {\n const yest = new Date(startOfToday);\n yest.setDate(yest.getDate() - 1);\n return d >= yest && d < startOfToday;\n }\n case 'Weekly': {\n const weekAgo = new Date(startOfToday);\n weekAgo.setDate(weekAgo.getDate() - 7);\n return d >= weekAgo;\n }\n case 'Monthly': {\n const monthAgo = new Date(startOfToday);\n monthAgo.setMonth(monthAgo.getMonth() - 1);\n return d >= monthAgo;\n }\n case 'Yearly': {\n const yearAgo = new Date(startOfToday);\n yearAgo.setFullYear(yearAgo.getFullYear() - 1);\n return d >= yearAgo;\n }\n case 'Custom': {\n const fromD = localDateFilter.from ? new Date(localDateFilter.from) : null;\n const toD = localDateFilter.to ? new Date(localDateFilter.to) : null;\n if (fromD && d < fromD) return false;\n if (toD && d > toD) return false;\n return true;\n }\n default:\n return true;\n }\n });\n }\n\n // 4. Client Side Sorting\n if (sortBy) {\n result.sort((a, b) => {\n const aVal = a[sortBy];\n const bVal = b[sortBy];\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n const aStr = String(aVal);\n const bStr = String(bVal);\n \n const numA = Number(aVal);\n const numB = Number(bVal);\n if (!isNaN(numA) && !isNaN(numB)) {\n return sortDir === 'asc' ? numA - numB : numB - numA;\n }\n\n return sortDir === 'asc' \n ? aStr.localeCompare(bStr) \n : bStr.localeCompare(aStr);\n });\n }\n\n return result;\n }, [data, quickFilter, localFilters, localDateFilter, sortBy, sortDir, onFilterChange, onSortChange]);\n\n // -------------------------------------------------------------------------\n // PAGINATION INTEGRATION (CLIENT & SERVER SUPPORT)\n // -------------------------------------------------------------------------\n const isServerSidePagination = page !== undefined && setPage !== undefined;\n \n // Internal client-side states as fallback\n const [localPage, setLocalPage] = useState(1);\n \n // PageSize state (controlled or uncontrolled fallback)\n const [pageSizeState, setPageSizeState] = useState(pageSizeProp !== undefined ? pageSizeProp : 10);\n const isPageSizeControlled = pageSizeProp !== undefined && props.onPageSizeChange !== undefined;\n const activePageSize = isPageSizeControlled ? pageSizeProp : pageSizeState;\n\n // Sync props to state if parent updates them\n useEffect(() => {\n if (pageSizeProp !== undefined) {\n setPageSizeState(pageSizeProp);\n }\n }, [pageSizeProp]);\n\n const activePage = isServerSidePagination ? page! : localPage;\n\n // Reset local page if data size changes\n useEffect(() => {\n if (!isServerSidePagination) {\n setLocalPage(1);\n }\n }, [data.length, isServerSidePagination]);\n\n // Calculate total rows, total pages\n const totalRows = isServerSidePagination ? (totalItems || data.length) : filteredAndSortedData.length;\n const activeTotalPages = isServerSidePagination ? totalPages : Math.ceil(totalRows / activePageSize);\n\n const changePage = (p: number) => {\n if (isServerSidePagination && setPage) {\n setPage(p);\n } else {\n setLocalPage(p);\n }\n };\n\n const handlePageSizeChange = (newSize: number) => {\n if (!isPageSizeControlled) {\n setPageSizeState(newSize);\n }\n if (!isServerSidePagination) {\n setLocalPage(1);\n }\n if (props.onPageSizeChange) {\n props.onPageSizeChange(newSize);\n }\n };\n\n // Slice rows for rendering on Client Side only\n const renderedRows = isServerSidePagination \n ? data \n : filteredAndSortedData.slice((activePage - 1) * activePageSize, activePage * activePageSize);\n\n const startIdx = totalRows === 0 ? 0 : (activePage - 1) * activePageSize + 1;\n const endIdx = isServerSidePagination \n ? Math.min(activePage * activePageSize, totalRows) \n : Math.min(activePage * activePageSize, filteredAndSortedData.length);\n\n // Controlled vs Uncontrolled Row Selections\n const [selectedIdsState, setSelectedIdsState] = useState<(string | number)[]>([]);\n const isSelectionControlled = selectedIdsProp !== undefined;\n const selectedIds = isSelectionControlled ? selectedIdsProp : selectedIdsState;\n\n // Drag to scroll ref & states\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [startX, setStartX] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n\n const dateOptions: FilterTableDateOption[] = ['Today', 'Yesterday', 'Weekly', 'Monthly', 'Yearly', 'Custom'];\n\n // Pinned columns state (max 4 columns)\n const [pinnedColumns, setPinnedColumns] = useState<string[]>([]);\n\n const handleTogglePin = (columnKey: string) => {\n const firstColKey = visibleColumns[0];\n if (columnKey === firstColKey) {\n alert(\"First column is always fixed by default.\");\n return;\n }\n\n if (pinnedColumns.includes(columnKey)) {\n setPinnedColumns(pinnedColumns.filter(k => k !== columnKey));\n } else {\n if (pinnedColumns.length >= 4) {\n alert(\"You can pin a maximum of 4 columns.\");\n return;\n }\n setPinnedColumns([...pinnedColumns, columnKey]);\n }\n };\n\n const isColumnFixed = (columnKey: string, colIdx: number) => {\n if (colIdx === 0) return true;\n return pinnedColumns.includes(columnKey);\n };\n\n const getFixedLeftOffset = (colIdx: number) => {\n let offset = 0;\n if (renderChildRow) {\n offset += 40;\n }\n if (isCheckbox) {\n offset += 50;\n }\n for (let i = 0; i < colIdx; i++) {\n const prevKey = visibleColumns[i];\n if (isColumnFixed(prevKey, i)) {\n const prevCol = columns.find((column: Column) => column.key === prevKey);\n if (prevCol) {\n offset += getColumnWidthNumber(prevCol);\n }\n }\n }\n return `${offset}px`;\n };\n\n // Dummy Action wrappers\n const handleView = (id: string | number, row: Row) => {\n if (onView) {\n onView(id, row);\n } else {\n alert(`Dummy View Action:\\nRow ID: ${id}\\nData:\\n${JSON.stringify(row, null, 2)}`);\n }\n };\n\n const handleEdit = (id: string | number, row: Row) => {\n if (onEdit) {\n onEdit(id, row);\n } else {\n alert(`Dummy Edit Action:\\nRow ID: ${id}\\nData:\\n${JSON.stringify(row, null, 2)}`);\n }\n };\n\n const handleDelete = (id: string | number, row: Row) => {\n if (onDelete) {\n onDelete(id, row);\n } else {\n alert(`Dummy Delete Action:\\nRow ID: ${id}\\nData:\\n${JSON.stringify(row, null, 2)}`);\n }\n };\n\n\n // -------------------------------------------------------------------------\n // DRAG TO SCROLL HANDLERS\n // -------------------------------------------------------------------------\n const startDrag = (e: MouseEvent | TouchEvent) => {\n // Only drag if scrolling is needed\n const container = scrollContainerRef.current;\n if (!container || container.scrollWidth <= container.clientWidth) return;\n \n setIsDragging(true);\n const x = 'pageX' in e ? e.pageX : e.touches[0].pageX;\n setStartX(x - container.offsetLeft);\n setScrollLeft(container.scrollLeft);\n };\n\n const onDrag = (e: MouseEvent | TouchEvent) => {\n if (!isDragging || !scrollContainerRef.current) return;\n if ('touches' in e) e.preventDefault();\n \n const x = 'pageX' in e ? e.pageX : e.touches[0].pageX;\n const walk = (x - scrollContainerRef.current.offsetLeft - startX) * 1.5; // Drag speed multiplier\n scrollContainerRef.current.scrollLeft = scrollLeft - walk;\n };\n\n const endDrag = () => setIsDragging(false);\n\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const mouseDown = (e: MouseEvent) => startDrag(e);\n const mouseMove = (e: MouseEvent) => { if (isDragging) onDrag(e); };\n const mouseUp = () => endDrag();\n\n container.addEventListener('mousedown', mouseDown);\n container.addEventListener('mousemove', mouseMove);\n container.addEventListener('mouseup', mouseUp);\n container.addEventListener('mouseleave', mouseUp);\n\n return () => {\n container.removeEventListener('mousedown', mouseDown);\n container.removeEventListener('mousemove', mouseMove);\n container.removeEventListener('mouseup', mouseUp);\n container.removeEventListener('mouseleave', mouseUp);\n };\n }, [isDragging, startX, scrollLeft]);\n\n // -------------------------------------------------------------------------\n // UTILITY METHODS\n // -------------------------------------------------------------------------\n const toggleColumn = (key: string) => {\n setVisibleColumns(prev => \n prev.includes(key) ? prev.filter(k => k !== key) : [...prev, key]\n );\n };\n\n const getColumnWidth = (col: Column): string => {\n if (col.width) {\n if (col.width.endsWith('px')) return col.width;\n if (col.width.startsWith('min-w-[')) {\n return col.width.replace('min-w-[', '').replace(']', '');\n }\n return `${col.width}px`;\n }\n return '150px';\n };\n\n const getColumnWidthNumber = (col: Column): number => {\n const w = getColumnWidth(col);\n return parseInt(w.replace('px', ''), 10) || 150;\n };\n\n const toggleRowExpand = (id: string | number, e: React.MouseEvent) => {\n e.stopPropagation();\n setExpandedRows(prev => ({\n ...prev,\n [id]: !prev[id]\n }));\n };\n\n const handleTextFilterBlur = (key: string, value: string) => {\n if (value.length >= 3 || value.length === 0) {\n setLocalFilters(prev => ({ ...prev, [key]: value }));\n }\n };\n\n const filterSubmit = () => {\n const hasValidFilter = Object.values(localFilters).some(val => val && String(val).length >= 1) || !!localDateFilter.option;\n if (hasValidFilter) {\n onFilterChange?.({\n ...localFilters,\n dateFilter: localDateFilter.option === 'Custom' ? { from: localDateFilter.from, to: localDateFilter.to } : localDateFilter.option\n });\n changePage(1);\n } else {\n handleClearFilters();\n }\n };\n\n const handleClearFilters = () => {\n setLocalFilters({});\n setLocalDateFilter({ option: null });\n setQuickFilter('');\n onFilterChange?.({});\n changePage(1);\n };\n\n const changeSort = (key: string) => {\n let newDir: 'asc' | 'desc' = 'asc';\n if (sortBy === key) {\n newDir = sortDir === 'asc' ? 'desc' : 'asc';\n }\n setSortBy(key);\n setSortDir(newDir);\n onSortChange?.(key, newDir);\n };\n\n const handleSelect = (type: 'excel' | 'csv') => {\n if (onExport) {\n onExport(type);\n return;\n }\n exportCSV();\n };\n\n const exportCSV = () => {\n const keys = columns.filter((c: Column) => visibleColumns.includes(c.key));\n const header = keys.map((k: Column) => `\"${k.title || k.key}\"`).join(',');\n\n const targetRows = isServerSidePagination ? data : filteredAndSortedData;\n const rows = targetRows.map((r: Row) =>\n keys\n .map((k: Column) => {\n const v = r[k.key];\n if (v == null) return '\"\"';\n const s = String(k.render ? k.render(v, r) : v);\n return '\"' + s.replace(/\"/g, '\"\"') + '\"';\n })\n .join(',')\n );\n\n const csv = [header, ...rows].join('\\n');\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${exportFileName}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const getStatusColorClass = (status: string) => {\n switch (status?.toLowerCase()) {\n case 'active':\n case 'paid':\n case 'payment completed':\n return 'ui-filtertable-chip--success';\n case 'inactive':\n case 'rejected':\n case 'cancelled':\n return 'ui-filtertable-chip--error';\n case 'pending':\n case 'payment pending':\n return 'ui-filtertable-chip--warning';\n case 'waiting for payment':\n return 'ui-filtertable-chip--primary';\n default:\n return 'ui-filtertable-chip--default';\n }\n };\n\n const handleSelectAll = () => {\n const targetRows = isServerSidePagination ? data : filteredAndSortedData;\n if (selectedIds.length === targetRows.length) {\n if (isSelectionControlled) {\n onSelectionChange?.([]);\n } else {\n setSelectedIdsState([]);\n }\n } else {\n const allIds = targetRows.map((r: Row) => r.id);\n if (isSelectionControlled) {\n onSelectionChange?.(allIds);\n } else {\n setSelectedIdsState(allIds);\n }\n }\n };\n\n const handleSelectRow = (id: string | number) => {\n const nextSelection = selectedIds.includes(id) \n ? selectedIds.filter((selectedId: string | number) => selectedId !== id)\n : [...selectedIds, id];\n \n if (isSelectionControlled) {\n onSelectionChange?.(nextSelection);\n } else {\n setSelectedIdsState(nextSelection);\n }\n };\n\n // Action column trigger validation\n const hasActions = onView || onEdit || onDelete || onDownload || (customActions && customActions.length > 0);\n\n return (\n <div \n ref={ref}\n className={cn(\"ui-filtertable-container\", className)}\n style={{\n ...handleSx(sx),\n ...props.style\n }}\n {...props}\n >\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n\n {/* ========================================================================= */}\n {/* TOP TOOLBAR CONTROLS */}\n {/* ========================================================================= */}\n <div className=\"ui-filtertable-toolbar\">\n <div className=\"ui-filtertable-toolbar-left\">\n {isSearch && (\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <input\n type=\"text\"\n placeholder=\"Quick search...\"\n value={quickFilter}\n onChange={(e) => {\n setQuickFilter(e.target.value);\n changePage(1);\n }}\n className=\"ui-filtertable-text-input\"\n style={{ width: '220px', height: '34px', paddingLeft: '32px' }}\n />\n <span style={{ position: 'absolute', left: '10px', color: '#94a3b8' }}>\n <IconSearch />\n </span>\n </div>\n )}\n </div>\n\n <div className=\"ui-filtertable-toolbar-right\">\n {isCheckbox && onCheckboxSubmit && (\n <Tooltip title=\"Submit Selection\" placement=\"top\" arrow>\n <button\n disabled={selectedIds.length === 0}\n onClick={() => onCheckboxSubmit(selectedIds)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n style={{\n width: '38px',\n height: '38px',\n borderColor: 'transparent',\n background: selectedIds.length === 0 ? '#cbd5e1' : 'linear-gradient(135deg, #3b82f6, #1d4ed8)',\n color: 'white',\n cursor: selectedIds.length === 0 ? 'not-allowed' : 'pointer'\n }}\n >\n <IconCircleCheck />\n </button>\n </Tooltip>\n )}\n\n {isExport && (\n <div style={{ position: 'relative' }}>\n <Tooltip title=\"Export Data\" placement=\"top\" arrow>\n <button \n onClick={() => setOpenExportDropdown(!openExportDropdown)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n >\n <IconTableExport />\n </button>\n </Tooltip>\n {openExportDropdown && (\n <>\n <div className=\"ui-filtertable-dropdown-backdrop\" onClick={() => setOpenExportDropdown(false)} />\n <div className=\"ui-filtertable-dropdown-menu\">\n <button className=\"ui-filtertable-dropdown-item\" onClick={() => { handleSelect('excel'); setOpenExportDropdown(false); }}>\n Export as Excel\n </button>\n <button className=\"ui-filtertable-dropdown-item\" onClick={() => { handleSelect('csv'); setOpenExportDropdown(false); }}>\n Export as CSV\n </button>\n </div>\n </>\n )}\n </div>\n )}\n\n {isDateFilter && (\n <Tooltip title=\"Date Filter\" placement=\"top\" arrow>\n <button \n onClick={() => setOpenDateFilterDialog(true)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n >\n <IconFilter />\n </button>\n </Tooltip>\n )}\n\n {isClearFilter && (\n <Tooltip title=\"Clear Filters\" placement=\"top\" arrow>\n <button \n onClick={handleClearFilters}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--error\"\n >\n <IconWashDrycleanOff />\n </button>\n </Tooltip>\n )}\n\n {columns.some((c: Column) => c.filterable) && (\n <Tooltip title=\"Submit Filters\" placement=\"top\" arrow>\n <button\n onClick={filterSubmit}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n style={{\n background: 'linear-gradient(135deg, #10b981, #059669)',\n color: 'white',\n borderColor: 'transparent'\n }}\n >\n <IconBrandTelegram />\n </button>\n </Tooltip>\n )}\n\n {isManageColumns && (\n <Tooltip title=\"Manage Columns\" placement=\"top\" arrow>\n <button \n onClick={() => setOpenColumnsDialog(true)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--success\"\n >\n <IconColumns />\n </button>\n </Tooltip>\n )}\n </div>\n </div>\n\n {/* ========================================================================= */}\n {/* INTERACTIVE TABLE BODY PANEL */}\n {/* ========================================================================= */}\n <TableContainer className=\"ui-filtertable-wrapper\" ref={scrollContainerRef}>\n <Table className=\"ui-filtertable-table\">\n <TableHead>\n <TableRow>\n {/* Expand Chevron Column */}\n {renderChildRow && (\n <TableCell \n variant=\"head\"\n className=\"ui-filtertable-th ui-filtertable-sticky-left\" \n style={{ width: '40px', minWidth: '40px', left: '0px' }} \n />\n )}\n\n {/* Multiselect Checkbox Column */}\n {isCheckbox && (\n <TableCell \n variant=\"head\"\n className=\"ui-filtertable-th ui-filtertable-sticky-left\" \n style={{ width: '50px', minWidth: '50px', left: renderChildRow ? '40px' : '0px' }}\n >\n <CustomCheckbox\n checked={data.length > 0 && selectedIds.length === data.length}\n indeterminate={selectedIds.length > 0 && selectedIds.length < data.length}\n onChange={handleSelectAll}\n />\n </TableCell>\n )}\n\n {/* Main Data Column Headers */}\n {columns\n .filter((c: Column) => visibleColumns.includes(c.key))\n .map((col: Column, idx: number) => {\n const isSticky = isColumnFixed(col.key, idx);\n const leftOffset = isSticky ? getFixedLeftOffset(idx) : undefined;\n\n return (\n <TableCell\n variant=\"head\"\n key={col.key}\n className={cn(\n \"ui-filtertable-th\",\n isSticky && \"ui-filtertable-sticky-left\"\n )}\n style={{\n minWidth: getColumnWidth(col),\n width: getColumnWidth(col),\n left: leftOffset,\n cursor: col.sortable ? 'pointer' : 'default'\n }}\n onClick={() => col.sortable && changeSort(col.key)}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: col.filterable ? '8px' : '0' }}>\n <span>{col.title}</span>\n {sortBy === col.key && (\n <span style={{ fontSize: '11px', color: '#3b82f6', fontWeight: 900 }}>\n {sortDir === 'asc' ? ' ▲' : ' ▼'}\n </span>\n )}\n </div>\n\n {/* Column Specific Filter Section */}\n {col.filterable && (\n <div onClick={(e) => e.stopPropagation()}>\n {col.filterType === 'select' && col.filterOptions ? (\n <select\n value={localFilters[col.key] || ''}\n onChange={(e) => {\n const val = e.target.value;\n setLocalFilters(prev => ({ ...prev, [col.key]: val }));\n onFilterChange?.({ ...localFilters, [col.key]: val });\n changePage(1);\n }}\n className=\"ui-filtertable-select-input\"\n >\n <option value=\"\">Filter {col.title}</option>\n {col.filterOptions.map((opt: { label: string; value: string }) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n type={col.fieldType || 'text'}\n placeholder={`Filter ${col.title}`}\n value={localFilters[col.key] || ''}\n onChange={(e) => setLocalFilters(prev => ({ ...prev, [col.key]: e.target.value }))}\n onBlur={(e) => handleTextFilterBlur(col.key, e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') filterSubmit();\n }}\n className=\"ui-filtertable-text-input\"\n />\n )}\n </div>\n )}\n </TableCell>\n );\n })}\n\n {/* Actions Headers */}\n {hasActions && (\n <TableCell \n variant=\"head\"\n className=\"ui-filtertable-th ui-filtertable-sticky-right\"\n style={{ textAlign: 'center', verticalAlign: 'middle' }}\n >\n <span>Actions</span>\n </TableCell>\n )}\n </TableRow>\n </TableHead>\n\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell \n colSpan={visibleColumns.length + (isCheckbox ? 1 : 0) + (renderChildRow ? 1 : 0) + (hasActions ? 1 : 0)} \n style={{ textAlign: 'center', padding: '32px', color: '#64748b' }}\n >\n Loading data...\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell \n colSpan={visibleColumns.length + (isCheckbox ? 1 : 0) + (renderChildRow ? 1 : 0) + (hasActions ? 1 : 0)} \n style={{ textAlign: 'center', padding: '32px', color: '#64748b' }}\n >\n No rows data found\n </TableCell>\n </TableRow>\n ) : (\n renderedRows.map((row: Row, idx: number) => {\n const isExpanded = !!expandedRows[row.id];\n\n return (\n <React.Fragment key={row.id || idx}>\n {/* Main Primary Row */}\n <TableRow className=\"ui-filtertable-row\">\n \n {/* Chevron Expand Column */}\n {renderChildRow && (\n <TableCell \n className=\"ui-filtertable-td ui-filtertable-sticky-left\" \n style={{ width: '40px', minWidth: '40px', textAlign: 'center', left: '0px' }}\n >\n <span \n className={cn(\n \"ui-ft-expand-trigger\",\n isExpanded && \"ui-ft-expand-trigger--expanded\"\n )}\n onClick={(e) => toggleRowExpand(row.id, e)}\n >\n <IconChevronRight />\n </span>\n </TableCell>\n )}\n\n {/* Multi-Select checkbox Column */}\n {isCheckbox && (\n <TableCell \n className=\"ui-filtertable-td ui-filtertable-sticky-left\" \n style={{ width: '50px', minWidth: '50px', left: renderChildRow ? '40px' : '0px' }}\n >\n <CustomCheckbox\n checked={selectedIds.includes(row.id)}\n onChange={() => handleSelectRow(row.id)}\n />\n </TableCell>\n )}\n\n {/* Visible Data Cells */}\n {columns\n .filter((c: Column) => visibleColumns.includes(c.key))\n .map((col: Column, colIdx: number) => {\n const isSticky = isColumnFixed(col.key, colIdx);\n const leftOffset = isSticky ? getFixedLeftOffset(colIdx) : undefined;\n\n const cellVal = row[col.key];\n const formatted = col.render ? col.render(cellVal, row) : cellVal;\n\n return (\n <TableCell\n key={col.key}\n className={cn(\n \"ui-filtertable-td\",\n isSticky && \"ui-filtertable-sticky-left\"\n )}\n style={{\n left: leftOffset,\n textOverflow: 'ellipsis',\n overflow: 'hidden'\n }}\n >\n {col.key === 'status' ? (\n <span className={cn(\"ui-filtertable-chip\", getStatusColorClass(String(cellVal)))}>\n {String(cellVal)}\n </span>\n ) : (\n formatted ?? 'N/A'\n )}\n </TableCell>\n );\n })}\n\n {/* Custom and standard actions column */}\n {hasActions && (\n <TableCell className=\"ui-filtertable-td ui-filtertable-sticky-right\">\n <div style={{ display: 'flex', gap: '6px', justifyContent: 'center' }}>\n \n {/* Custom Actions passed as array */}\n {customActions && customActions.map((action: CustomAction) => {\n const isHidden = action.hidden?.(row);\n const isDisabled = action.disabled?.(row);\n if (isHidden) return null;\n\n return (\n <Tooltip key={action.key} title={action.title} placement=\"top\" arrow>\n <button\n onClick={() => action.onClick(row)}\n disabled={isDisabled}\n className={cn(\n \"ui-filtertable-icon-btn\",\n isDisabled && \"ui-filtertable-icon-btn--disabled\"\n )}\n style={{ color: action.color }}\n >\n {action.icon}\n </button>\n </Tooltip>\n );\n })}\n\n {/* Standard onView */}\n <Tooltip title=\"View\" placement=\"top\" arrow>\n <button \n onClick={() => handleView(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--primary\"\n >\n <IconEye />\n </button>\n </Tooltip>\n\n {/* Standard onEdit */}\n <Tooltip title=\"Edit\" placement=\"top\" arrow>\n <button \n onClick={() => handleEdit(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--success\"\n >\n <IconEdit />\n </button>\n </Tooltip>\n\n {/* Standard onDelete */}\n <Tooltip title=\"Delete\" placement=\"top\" arrow>\n <button \n onClick={() => handleDelete(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--error\"\n >\n <IconTrash />\n </button>\n </Tooltip>\n\n {/* Standard onDownload */}\n {onDownload && row.status !== 'Pending' && row.status !== 'Cancelled' && (\n <Tooltip title=\"Download\" placement=\"top\" arrow>\n <button \n onClick={() => onDownload(row.id, row)}\n className=\"ui-filtertable-icon-btn ui-filtertable-icon-btn--success\"\n style={{ color: '#16a34a' }}\n >\n <IconDownload />\n </button>\n </Tooltip>\n )}\n\n\n\n </div>\n </TableCell>\n )}\n </TableRow>\n\n {/* Collapsible Child Row Detail */}\n {renderChildRow && (\n <TableRow className=\"ui-filtertable-child-row-tr\" style={{ display: isExpanded ? 'table-row' : 'none' }}>\n <TableCell \n colSpan={visibleColumns.length + (isCheckbox ? 1 : 0) + (renderChildRow ? 1 : 0) + (hasActions ? 1 : 0)} \n style={{ padding: 0, border: 0 }}\n >\n <div className={cn(\n \"ui-filtertable-child-row-collapse\",\n isExpanded && \"ui-filtertable-child-row-collapse--expanded\"\n )}>\n <div className=\"ui-filtertable-child-row-content\">\n {renderChildRow(row)}\n </div>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n );\n })\n )}\n </TableBody>\n </Table>\n </TableContainer>\n\n {/* ========================================================================= */}\n {/* PREMIUM PAGINATION FOOTER */}\n {/* ========================================================================= */}\n <div className=\"ui-filtertable-pagination\">\n <div className=\"ui-filtertable-pagination-info\">\n Showing <span>{startIdx}</span> - <span>{endIdx}</span> of <span>{totalRows}</span>\n <div className=\"ui-filtertable-pagesize-select-container\" style={{ display: 'inline-flex', alignItems: 'center', gap: '8px', marginLeft: '20px' }}>\n <span style={{ color: '#64748b', fontSize: '13px' }}>Rows per page:</span>\n <select\n value={activePageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n className=\"ui-filtertable-select-input\"\n style={{ \n height: '28px', \n padding: '2px 8px', \n fontSize: '12px', \n width: '70px', \n minWidth: '70px',\n borderRadius: '6px',\n border: '1px solid #cbd5e1',\n backgroundColor: '#ffffff',\n color: '#334155',\n cursor: 'pointer'\n }}\n >\n {pageSizeOptions.map((opt: number) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"ui-filtertable-pagination-controls\">\n <Pagination\n count={activeTotalPages}\n page={activePage}\n onChange={(e, p) => changePage(p)}\n color=\"primary\"\n variant=\"outlined\"\n shape=\"rounded\"\n size=\"medium\"\n />\n </div>\n </div>\n\n {/* ========================================================================= */}\n {/* DIALOG 1: MANAGE COLUMN VISIBILITIES */}\n {/* ========================================================================= */}\n {openColumnsDialog && (\n <div className=\"ui-filtertable-dialog-backdrop\" onClick={() => setOpenColumnsDialog(false)}>\n <div className=\"ui-filtertable-dialog-box\" onClick={e => e.stopPropagation()}>\n <div className=\"ui-filtertable-dialog-header\">\n <span>Choose Columns</span>\n <button className=\"ui-filtertable-dialog-close\" onClick={() => setOpenColumnsDialog(false)}>\n <IconCancel />\n </button>\n </div>\n <div className=\"ui-filtertable-dialog-body\">\n <div className=\"ui-filtertable-columns-grid\">\n {columns.map((c: Column) => {\n const isPinned = pinnedColumns.includes(c.key);\n const isFirst = visibleColumns[0] === c.key;\n return (\n <div \n key={c.key} \n style={{ \n display: 'flex', \n alignItems: 'center', \n justifyContent: 'space-between',\n padding: '6px 8px',\n borderRadius: '6px',\n backgroundColor: '#f8fafc',\n border: '1px solid #e2e8f0'\n }}\n >\n <label className=\"ui-filtertable-column-checkbox-label\" style={{ display: 'flex', alignItems: 'center', gap: '8px', cursor: 'pointer', flex: 1, margin: 0 }}>\n <input\n type=\"checkbox\"\n checked={visibleColumns.includes(c.key)}\n onChange={() => toggleColumn(c.key)}\n className=\"ui-filtertable-text-input\"\n style={{ width: '16px', height: '16px', cursor: 'pointer', margin: 0 }}\n />\n <span style={{ fontSize: '13px', fontWeight: 500, color: '#334155' }}>{c.title}</span>\n </label>\n \n <button\n onClick={() => handleTogglePin(c.key)}\n style={{\n background: 'transparent',\n border: 'none',\n cursor: isFirst ? 'not-allowed' : 'pointer',\n padding: '4px',\n color: isFirst ? '#94a3b8' : (isPinned ? '#3b82f6' : '#cbd5e1'),\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '4px',\n transition: 'all 150ms'\n }}\n title={isFirst ? \"Fixed by default\" : (isPinned ? \"Unpin Column\" : \"Pin Column\")}\n >\n {isPinned || isFirst ? <IconPinFilled /> : <IconPin />}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <div className=\"ui-filtertable-dialog-footer\">\n <button \n className=\"ui-filtertable-pagination-btn ui-filtertable-pagination-btn--active\" \n onClick={() => setOpenColumnsDialog(false)}\n style={{ height: '36px', padding: '0 20px' }}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* ========================================================================= */}\n {/* DIALOG 2: SELECT DATE FILTER RANGE */}\n {/* ========================================================================= */}\n {openDateFilterDialog && (\n <div className=\"ui-filtertable-dialog-backdrop\" onClick={() => setOpenDateFilterDialog(false)}>\n <div className=\"ui-filtertable-dialog-box\" onClick={e => e.stopPropagation()}>\n <div className=\"ui-filtertable-dialog-header\">\n <span>Date Filter</span>\n <button className=\"ui-filtertable-dialog-close\" onClick={() => setOpenDateFilterDialog(false)}>\n <IconCancel />\n </button>\n </div>\n <div className=\"ui-filtertable-dialog-body\" style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <div className=\"ui-filtertable-form-group\">\n <label className=\"ui-filtertable-form-label\">Select Range</label>\n <select\n value={localDateFilter.option || ''}\n onChange={e => setLocalDateFilter({ option: (e.target.value || null) as FilterTableDateOption })}\n className=\"ui-filtertable-select-input\"\n style={{ height: '34px' }}\n >\n <option value=\"\">Select Range</option>\n {dateOptions.map(opt => (\n <option key={opt} value={opt || ''}>{opt}</option>\n ))}\n </select>\n </div>\n\n {localDateFilter.option === 'Custom' && (\n <div style={{ display: 'flex', gap: '12px' }}>\n <div className=\"ui-filtertable-form-group\" style={{ flex: 1 }}>\n <label className=\"ui-filtertable-form-label\">From Date</label>\n <input\n type=\"date\"\n value={localDateFilter.from || ''}\n max={new Date().toISOString().split('T')[0]}\n onChange={e => setLocalDateFilter(prev => ({ ...prev, from: e.target.value }))}\n className=\"ui-filtertable-text-input\"\n style={{ height: '34px' }}\n />\n </div>\n <div className=\"ui-filtertable-form-group\" style={{ flex: 1 }}>\n <label className=\"ui-filtertable-form-label\">To Date</label>\n <input\n type=\"date\"\n value={localDateFilter.to || ''}\n min={localDateFilter.from || undefined}\n onChange={e => setLocalDateFilter(prev => ({ ...prev, to: e.target.value }))}\n className=\"ui-filtertable-text-input\"\n style={{ height: '34px' }}\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"ui-filtertable-dialog-footer\">\n <button \n className=\"ui-filtertable-pagination-btn\" \n onClick={() => setOpenDateFilterDialog(false)}\n style={{ height: '36px' }}\n >\n Cancel\n </button>\n <button\n className=\"ui-filtertable-pagination-btn ui-filtertable-pagination-btn--active\"\n onClick={() => {\n onFilterChange?.({\n ...localFilters,\n dateFilter: localDateFilter.option === 'Custom' ? { from: localDateFilter.from, to: localDateFilter.to } : localDateFilter.option\n });\n setPage(1);\n setOpenDateFilterDialog(false);\n }}\n style={{ height: '36px', padding: '0 20px' }}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n )}\n\n </div>\n );\n }\n);\n\nFilterTable.displayName = 'FilterTable';\n"]}