@startdownnotez404/ui 1.0.0 → 1.3.5

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 (439) hide show
  1. package/README.md +110 -0
  2. package/dist/AutocompleteField-ZKNU2IRR.mjs +181 -0
  3. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +1 -0
  4. package/dist/AvatarField-SAODT3CZ.mjs +275 -0
  5. package/dist/AvatarField-SAODT3CZ.mjs.map +1 -0
  6. package/dist/CodeEditor-JF55ZNVD.mjs +34 -0
  7. package/dist/CodeEditor-JF55ZNVD.mjs.map +1 -0
  8. package/dist/DateField-ZYMZFHL4.mjs +82 -0
  9. package/dist/DateField-ZYMZFHL4.mjs.map +1 -0
  10. package/dist/DateTimeField-TPTJ7YIZ.mjs +65 -0
  11. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +1 -0
  12. package/dist/FileUploadField-NTMWBJER.mjs +78 -0
  13. package/dist/FileUploadField-NTMWBJER.mjs.map +1 -0
  14. package/dist/JSONEditorField-TMRWGXVR.mjs +64 -0
  15. package/dist/JSONEditorField-TMRWGXVR.mjs.map +1 -0
  16. package/dist/PopperMenu-LJ36RPBW.mjs +416 -0
  17. package/dist/PopperMenu-LJ36RPBW.mjs.map +1 -0
  18. package/dist/TelField-LOGRVZ4I.mjs +88 -0
  19. package/dist/TelField-LOGRVZ4I.mjs.map +1 -0
  20. package/dist/alert.d.mts +202 -0
  21. package/dist/alert.d.ts +202 -0
  22. package/dist/alert.js +784 -0
  23. package/dist/alert.js.map +1 -0
  24. package/dist/alert.mjs +47 -0
  25. package/dist/alert.mjs.map +1 -0
  26. package/dist/appBar.d.mts +21 -0
  27. package/dist/appBar.d.ts +21 -0
  28. package/dist/appBar.js +64 -0
  29. package/dist/appBar.js.map +1 -0
  30. package/dist/appBar.mjs +12 -0
  31. package/dist/appBar.mjs.map +1 -0
  32. package/dist/autocomplete.d.mts +121 -0
  33. package/dist/autocomplete.d.ts +121 -0
  34. package/dist/autocomplete.js +2052 -0
  35. package/dist/autocomplete.js.map +1 -0
  36. package/dist/autocomplete.mjs +21 -0
  37. package/dist/autocomplete.mjs.map +1 -0
  38. package/dist/avatar.d.mts +253 -0
  39. package/dist/avatar.d.ts +253 -0
  40. package/dist/avatar.js +992 -0
  41. package/dist/avatar.js.map +1 -0
  42. package/dist/avatar.mjs +41 -0
  43. package/dist/avatar.mjs.map +1 -0
  44. package/dist/badge.d.mts +123 -0
  45. package/dist/badge.d.ts +123 -0
  46. package/dist/badge.js +151 -0
  47. package/dist/badge.js.map +1 -0
  48. package/dist/badge.mjs +10 -0
  49. package/dist/badge.mjs.map +1 -0
  50. package/dist/box.d.mts +36 -0
  51. package/dist/box.d.ts +36 -0
  52. package/dist/box.js +199 -0
  53. package/dist/box.js.map +1 -0
  54. package/dist/box.mjs +14 -0
  55. package/dist/box.mjs.map +1 -0
  56. package/dist/button.d.mts +230 -52
  57. package/dist/button.d.ts +230 -52
  58. package/dist/button.js +392 -60
  59. package/dist/button.js.map +1 -1
  60. package/dist/button.mjs +14 -8
  61. package/dist/card.d.mts +47 -0
  62. package/dist/card.d.ts +47 -0
  63. package/dist/card.js +135 -0
  64. package/dist/card.js.map +1 -0
  65. package/dist/card.mjs +24 -0
  66. package/dist/card.mjs.map +1 -0
  67. package/dist/chart.d.mts +40 -0
  68. package/dist/chart.d.ts +40 -0
  69. package/dist/chart.js +1234 -0
  70. package/dist/chart.js.map +1 -0
  71. package/dist/chart.mjs +10 -0
  72. package/dist/chart.mjs.map +1 -0
  73. package/dist/checkbox.d.mts +62 -0
  74. package/dist/checkbox.d.ts +62 -0
  75. package/dist/checkbox.js +299 -0
  76. package/dist/checkbox.js.map +1 -0
  77. package/dist/checkbox.mjs +14 -0
  78. package/dist/checkbox.mjs.map +1 -0
  79. package/dist/chip.d.mts +96 -0
  80. package/dist/chip.d.ts +96 -0
  81. package/dist/chip.js +112 -0
  82. package/dist/chip.js.map +1 -0
  83. package/dist/chip.mjs +10 -0
  84. package/dist/chip.mjs.map +1 -0
  85. package/dist/chunk-24XDGNJ6.mjs +1450 -0
  86. package/dist/chunk-24XDGNJ6.mjs.map +1 -0
  87. package/dist/chunk-27KYFU7R.mjs +30 -0
  88. package/dist/chunk-27KYFU7R.mjs.map +1 -0
  89. package/dist/chunk-2FFLT5VP.mjs +7 -0
  90. package/dist/chunk-2FFLT5VP.mjs.map +1 -0
  91. package/dist/chunk-2ZZJTBTE.mjs +148 -0
  92. package/dist/chunk-2ZZJTBTE.mjs.map +1 -0
  93. package/dist/chunk-3DQINB57.mjs +15 -0
  94. package/dist/chunk-3DQINB57.mjs.map +1 -0
  95. package/dist/chunk-3VUAM2GY.mjs +52 -0
  96. package/dist/chunk-3VUAM2GY.mjs.map +1 -0
  97. package/dist/chunk-4Q54P737.mjs +19 -0
  98. package/dist/chunk-4Q54P737.mjs.map +1 -0
  99. package/dist/chunk-4RPFRNXG.mjs +62 -0
  100. package/dist/chunk-4RPFRNXG.mjs.map +1 -0
  101. package/dist/chunk-56TI2ZBT.mjs +114 -0
  102. package/dist/chunk-56TI2ZBT.mjs.map +1 -0
  103. package/dist/chunk-6REEQBJI.mjs +62 -0
  104. package/dist/chunk-6REEQBJI.mjs.map +1 -0
  105. package/dist/chunk-AAH2O24U.mjs +325 -0
  106. package/dist/chunk-AAH2O24U.mjs.map +1 -0
  107. package/dist/chunk-B7DAB22K.mjs +16 -0
  108. package/dist/chunk-B7DAB22K.mjs.map +1 -0
  109. package/dist/chunk-BGB7JHIU.mjs +222 -0
  110. package/dist/chunk-BGB7JHIU.mjs.map +1 -0
  111. package/dist/chunk-CRYIEYZZ.mjs +756 -0
  112. package/dist/chunk-CRYIEYZZ.mjs.map +1 -0
  113. package/dist/chunk-CWFWRZWU.mjs +23 -0
  114. package/dist/chunk-CWFWRZWU.mjs.map +1 -0
  115. package/dist/chunk-DELCADNF.mjs +1926 -0
  116. package/dist/chunk-DELCADNF.mjs.map +1 -0
  117. package/dist/chunk-E3I2VDHZ.mjs +292 -0
  118. package/dist/chunk-E3I2VDHZ.mjs.map +1 -0
  119. package/dist/chunk-EEH7HACG.mjs +249 -0
  120. package/dist/chunk-EEH7HACG.mjs.map +1 -0
  121. package/dist/chunk-EKPULYPU.mjs +497 -0
  122. package/dist/chunk-EKPULYPU.mjs.map +1 -0
  123. package/dist/chunk-EW4DTFH3.mjs +69 -0
  124. package/dist/chunk-EW4DTFH3.mjs.map +1 -0
  125. package/dist/chunk-FJ6ZGZIA.mjs +43 -0
  126. package/dist/chunk-FJ6ZGZIA.mjs.map +1 -0
  127. package/dist/chunk-HE7MY3RT.mjs +23 -0
  128. package/dist/chunk-HE7MY3RT.mjs.map +1 -0
  129. package/dist/chunk-HR3A4H4E.mjs +1289 -0
  130. package/dist/chunk-HR3A4H4E.mjs.map +1 -0
  131. package/dist/chunk-I5JWS4Z7.mjs +91 -0
  132. package/dist/chunk-I5JWS4Z7.mjs.map +1 -0
  133. package/dist/chunk-IN3O4R7Q.mjs +932 -0
  134. package/dist/chunk-IN3O4R7Q.mjs.map +1 -0
  135. package/dist/chunk-JIU5GVM7.mjs +414 -0
  136. package/dist/chunk-JIU5GVM7.mjs.map +1 -0
  137. package/dist/chunk-JWANK42G.mjs +170 -0
  138. package/dist/chunk-JWANK42G.mjs.map +1 -0
  139. package/dist/chunk-MDAUF7IL.mjs +9 -0
  140. package/dist/chunk-MDAUF7IL.mjs.map +1 -0
  141. package/dist/chunk-MI64T62E.mjs +26 -0
  142. package/dist/chunk-MI64T62E.mjs.map +1 -0
  143. package/dist/chunk-NJYNJLT7.mjs +172 -0
  144. package/dist/chunk-NJYNJLT7.mjs.map +1 -0
  145. package/dist/chunk-NLBDBJ3R.mjs +97 -0
  146. package/dist/chunk-NLBDBJ3R.mjs.map +1 -0
  147. package/dist/chunk-OGNGPI3M.mjs +333 -0
  148. package/dist/chunk-OGNGPI3M.mjs.map +1 -0
  149. package/dist/chunk-OJV6V7YZ.mjs +552 -0
  150. package/dist/chunk-OJV6V7YZ.mjs.map +1 -0
  151. package/dist/chunk-ONQMRE2G.mjs +26 -0
  152. package/dist/chunk-ONQMRE2G.mjs.map +1 -0
  153. package/dist/chunk-OP6LKXPA.mjs +75 -0
  154. package/dist/chunk-OP6LKXPA.mjs.map +1 -0
  155. package/dist/chunk-QFF3HTHL.mjs +14 -0
  156. package/dist/chunk-QFF3HTHL.mjs.map +1 -0
  157. package/dist/chunk-QKGCW37O.mjs +1175 -0
  158. package/dist/chunk-QKGCW37O.mjs.map +1 -0
  159. package/dist/chunk-R5MKQN6D.mjs +227 -0
  160. package/dist/chunk-R5MKQN6D.mjs.map +1 -0
  161. package/dist/chunk-RXBQ7KXF.mjs +652 -0
  162. package/dist/chunk-RXBQ7KXF.mjs.map +1 -0
  163. package/dist/chunk-S6EZVRZC.mjs +161 -0
  164. package/dist/chunk-S6EZVRZC.mjs.map +1 -0
  165. package/dist/chunk-SGCUDWO3.mjs +396 -0
  166. package/dist/chunk-SGCUDWO3.mjs.map +1 -0
  167. package/dist/chunk-SRWPHN2N.mjs +188 -0
  168. package/dist/chunk-SRWPHN2N.mjs.map +1 -0
  169. package/dist/chunk-T34IULP5.mjs +242 -0
  170. package/dist/chunk-T34IULP5.mjs.map +1 -0
  171. package/dist/chunk-T4X375IG.mjs +100 -0
  172. package/dist/chunk-T4X375IG.mjs.map +1 -0
  173. package/dist/chunk-T6AMRENK.mjs +376 -0
  174. package/dist/chunk-T6AMRENK.mjs.map +1 -0
  175. package/dist/chunk-TDRA5EZI.mjs +325 -0
  176. package/dist/chunk-TDRA5EZI.mjs.map +1 -0
  177. package/dist/chunk-UDREPVEY.mjs +356 -0
  178. package/dist/chunk-UDREPVEY.mjs.map +1 -0
  179. package/dist/chunk-UGMRJMFZ.mjs +172 -0
  180. package/dist/chunk-UGMRJMFZ.mjs.map +1 -0
  181. package/dist/chunk-UMJ5SCIQ.mjs +438 -0
  182. package/dist/chunk-UMJ5SCIQ.mjs.map +1 -0
  183. package/dist/chunk-UTVSYS6S.mjs +270 -0
  184. package/dist/chunk-UTVSYS6S.mjs.map +1 -0
  185. package/dist/chunk-V26V2S3W.mjs +197 -0
  186. package/dist/chunk-V26V2S3W.mjs.map +1 -0
  187. package/dist/chunk-VYD3PDBB.mjs +38 -0
  188. package/dist/chunk-VYD3PDBB.mjs.map +1 -0
  189. package/dist/chunk-WYYP3Y34.mjs +55 -0
  190. package/dist/chunk-WYYP3Y34.mjs.map +1 -0
  191. package/dist/chunk-XIMFP6RB.mjs +161 -0
  192. package/dist/chunk-XIMFP6RB.mjs.map +1 -0
  193. package/dist/chunk-XJ2SXC2Q.mjs +558 -0
  194. package/dist/chunk-XJ2SXC2Q.mjs.map +1 -0
  195. package/dist/chunk-Y74ALKBL.mjs +565 -0
  196. package/dist/chunk-Y74ALKBL.mjs.map +1 -0
  197. package/dist/chunk-ZG3NQI77.mjs +353 -0
  198. package/dist/chunk-ZG3NQI77.mjs.map +1 -0
  199. package/dist/chunk-ZVFYOXDE.mjs +297 -0
  200. package/dist/chunk-ZVFYOXDE.mjs.map +1 -0
  201. package/dist/collapse.d.mts +10 -0
  202. package/dist/collapse.d.ts +10 -0
  203. package/dist/collapse.js +53 -0
  204. package/dist/collapse.js.map +1 -0
  205. package/dist/collapse.mjs +10 -0
  206. package/dist/collapse.mjs.map +1 -0
  207. package/dist/datePicker.d.mts +133 -0
  208. package/dist/datePicker.d.ts +133 -0
  209. package/dist/datePicker.js +482 -0
  210. package/dist/datePicker.js.map +1 -0
  211. package/dist/datePicker.mjs +29 -0
  212. package/dist/datePicker.mjs.map +1 -0
  213. package/dist/displayFile.d.mts +95 -0
  214. package/dist/displayFile.d.ts +95 -0
  215. package/dist/displayFile.js +357 -0
  216. package/dist/displayFile.js.map +1 -0
  217. package/dist/displayFile.mjs +19 -0
  218. package/dist/displayFile.mjs.map +1 -0
  219. package/dist/divider.d.mts +9 -0
  220. package/dist/divider.d.ts +9 -0
  221. package/dist/divider.js +52 -0
  222. package/dist/divider.js.map +1 -0
  223. package/dist/divider.mjs +10 -0
  224. package/dist/divider.mjs.map +1 -0
  225. package/dist/fileUploader.d.mts +86 -0
  226. package/dist/fileUploader.d.ts +86 -0
  227. package/dist/fileUploader.js +722 -0
  228. package/dist/fileUploader.js.map +1 -0
  229. package/dist/fileUploader.mjs +16 -0
  230. package/dist/fileUploader.mjs.map +1 -0
  231. package/dist/flowMap.d.mts +353 -0
  232. package/dist/flowMap.d.ts +353 -0
  233. package/dist/flowMap.js +94806 -0
  234. package/dist/flowMap.js.map +1 -0
  235. package/dist/flowMap.mjs +94585 -0
  236. package/dist/flowMap.mjs.map +1 -0
  237. package/dist/form.d.mts +84 -0
  238. package/dist/form.d.ts +84 -0
  239. package/dist/form.js +144 -0
  240. package/dist/form.js.map +1 -0
  241. package/dist/form.mjs +24 -0
  242. package/dist/form.mjs.map +1 -0
  243. package/dist/icons.d.mts +160 -0
  244. package/dist/icons.d.ts +160 -0
  245. package/dist/icons.js +540 -0
  246. package/dist/icons.js.map +1 -0
  247. package/dist/icons.mjs +306 -0
  248. package/dist/icons.mjs.map +1 -0
  249. package/dist/image.d.mts +49 -0
  250. package/dist/image.d.ts +49 -0
  251. package/dist/image.js +1348 -0
  252. package/dist/image.js.map +1 -0
  253. package/dist/image.mjs +19 -0
  254. package/dist/image.mjs.map +1 -0
  255. package/dist/index.d.ts +46 -0
  256. package/dist/index.js +20198 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/index.mjs +912 -0
  259. package/dist/index.mjs.map +1 -0
  260. package/dist/input.d.mts +195 -0
  261. package/dist/input.d.ts +195 -0
  262. package/dist/input.js +1101 -0
  263. package/dist/input.js.map +1 -0
  264. package/dist/input.mjs +32 -0
  265. package/dist/input.mjs.map +1 -0
  266. package/dist/jsonEditor.d.mts +13 -0
  267. package/dist/jsonEditor.d.ts +13 -0
  268. package/dist/jsonEditor.js +247 -0
  269. package/dist/jsonEditor.js.map +1 -0
  270. package/dist/jsonEditor.mjs +9 -0
  271. package/dist/jsonEditor.mjs.map +1 -0
  272. package/dist/list.d.mts +83 -0
  273. package/dist/list.d.ts +83 -0
  274. package/dist/list.js +564 -0
  275. package/dist/list.js.map +1 -0
  276. package/dist/list.mjs +39 -0
  277. package/dist/list.mjs.map +1 -0
  278. package/dist/loading.d.mts +48 -0
  279. package/dist/loading.d.ts +48 -0
  280. package/dist/loading.js +383 -0
  281. package/dist/loading.js.map +1 -0
  282. package/dist/loading.mjs +23 -0
  283. package/dist/loading.mjs.map +1 -0
  284. package/dist/markdown.d.mts +14 -0
  285. package/dist/markdown.d.ts +14 -0
  286. package/dist/markdown.js +25927 -0
  287. package/dist/markdown.js.map +1 -0
  288. package/dist/markdown.mjs +25623 -0
  289. package/dist/markdown.mjs.map +1 -0
  290. package/dist/menu.d.mts +368 -0
  291. package/dist/menu.d.ts +368 -0
  292. package/dist/menu.js +1571 -0
  293. package/dist/menu.js.map +1 -0
  294. package/dist/menu.mjs +43 -0
  295. package/dist/menu.mjs.map +1 -0
  296. package/dist/modal.d.mts +90 -0
  297. package/dist/modal.d.ts +90 -0
  298. package/dist/modal.js +883 -0
  299. package/dist/modal.js.map +1 -0
  300. package/dist/modal.mjs +25 -0
  301. package/dist/modal.mjs.map +1 -0
  302. package/dist/overlay.d.mts +2 -0
  303. package/dist/overlay.d.ts +2 -0
  304. package/dist/overlay.js +46 -0
  305. package/dist/overlay.js.map +1 -0
  306. package/dist/overlay.mjs +10 -0
  307. package/dist/overlay.mjs.map +1 -0
  308. package/dist/paper.d.mts +38 -0
  309. package/dist/paper.d.ts +38 -0
  310. package/dist/paper.js +90 -0
  311. package/dist/paper.js.map +1 -0
  312. package/dist/paper.mjs +12 -0
  313. package/dist/paper.mjs.map +1 -0
  314. package/dist/patterns.d.mts +133 -0
  315. package/dist/patterns.d.ts +133 -0
  316. package/dist/patterns.js +483 -0
  317. package/dist/patterns.js.map +1 -0
  318. package/dist/patterns.mjs +46 -0
  319. package/dist/patterns.mjs.map +1 -0
  320. package/dist/process.d.mts +125 -0
  321. package/dist/process.d.ts +125 -0
  322. package/dist/process.js +1471 -0
  323. package/dist/process.js.map +1 -0
  324. package/dist/process.mjs +30 -0
  325. package/dist/process.mjs.map +1 -0
  326. package/dist/progress.d.mts +44 -0
  327. package/dist/progress.d.ts +44 -0
  328. package/dist/progress.js +94 -0
  329. package/dist/progress.js.map +1 -0
  330. package/dist/progress.mjs +14 -0
  331. package/dist/progress.mjs.map +1 -0
  332. package/dist/resizablePanel.d.mts +297 -0
  333. package/dist/resizablePanel.d.ts +297 -0
  334. package/dist/resizablePanel.js +122 -0
  335. package/dist/resizablePanel.js.map +1 -0
  336. package/dist/resizablePanel.mjs +22 -0
  337. package/dist/resizablePanel.mjs.map +1 -0
  338. package/dist/scrollToLoad.d.mts +41 -0
  339. package/dist/scrollToLoad.d.ts +41 -0
  340. package/dist/scrollToLoad.js +256 -0
  341. package/dist/scrollToLoad.js.map +1 -0
  342. package/dist/scrollToLoad.mjs +16 -0
  343. package/dist/scrollToLoad.mjs.map +1 -0
  344. package/dist/select.d.mts +50 -0
  345. package/dist/select.d.ts +50 -0
  346. package/dist/select.js +426 -0
  347. package/dist/select.js.map +1 -0
  348. package/dist/select.mjs +24 -0
  349. package/dist/select.mjs.map +1 -0
  350. package/dist/skeleton.d.mts +13 -0
  351. package/dist/skeleton.d.ts +13 -0
  352. package/dist/skeleton.js +68 -0
  353. package/dist/skeleton.js.map +1 -0
  354. package/dist/skeleton.mjs +11 -0
  355. package/dist/skeleton.mjs.map +1 -0
  356. package/dist/slider.d.mts +65 -0
  357. package/dist/slider.d.ts +65 -0
  358. package/dist/slider.js +106 -0
  359. package/dist/slider.js.map +1 -0
  360. package/dist/slider.mjs +10 -0
  361. package/dist/slider.mjs.map +1 -0
  362. package/dist/stepper.d.mts +98 -0
  363. package/dist/stepper.d.ts +98 -0
  364. package/dist/stepper.js +313 -0
  365. package/dist/stepper.js.map +1 -0
  366. package/dist/stepper.mjs +38 -0
  367. package/dist/stepper.mjs.map +1 -0
  368. package/dist/switch.d.mts +151 -0
  369. package/dist/switch.d.ts +151 -0
  370. package/dist/switch.js +289 -0
  371. package/dist/switch.js.map +1 -0
  372. package/dist/switch.mjs +17 -0
  373. package/dist/switch.mjs.map +1 -0
  374. package/dist/tab.d.mts +182 -0
  375. package/dist/tab.d.ts +182 -0
  376. package/dist/tab.js +1418 -0
  377. package/dist/tab.js.map +1 -0
  378. package/dist/tab.mjs +34 -0
  379. package/dist/tab.mjs.map +1 -0
  380. package/dist/table.d.mts +720 -0
  381. package/dist/table.d.ts +720 -0
  382. package/dist/table.js +10882 -0
  383. package/dist/table.js.map +1 -0
  384. package/dist/table.mjs +63 -0
  385. package/dist/table.mjs.map +1 -0
  386. package/dist/theme.d.mts +30 -4
  387. package/dist/theme.d.ts +30 -4
  388. package/dist/theme.js +3210 -170
  389. package/dist/theme.js.map +1 -1
  390. package/dist/theme.mjs +52 -230
  391. package/dist/theme.mjs.map +1 -1
  392. package/dist/timeline.d.mts +30 -0
  393. package/dist/timeline.d.ts +30 -0
  394. package/dist/timeline.js +273 -0
  395. package/dist/timeline.js.map +1 -0
  396. package/dist/timeline.mjs +14 -0
  397. package/dist/timeline.mjs.map +1 -0
  398. package/dist/toggleButtonGroup.d.mts +125 -0
  399. package/dist/toggleButtonGroup.d.ts +125 -0
  400. package/dist/toggleButtonGroup.js +190 -0
  401. package/dist/toggleButtonGroup.js.map +1 -0
  402. package/dist/toggleButtonGroup.mjs +15 -0
  403. package/dist/toggleButtonGroup.mjs.map +1 -0
  404. package/dist/tooltip.d.mts +13 -0
  405. package/dist/tooltip.d.ts +13 -0
  406. package/dist/tooltip.js +56 -0
  407. package/dist/tooltip.js.map +1 -0
  408. package/dist/tooltip.mjs +10 -0
  409. package/dist/tooltip.mjs.map +1 -0
  410. package/dist/typography.d.mts +21 -23
  411. package/dist/typography.d.ts +21 -23
  412. package/dist/typography.js +37 -63
  413. package/dist/typography.js.map +1 -1
  414. package/dist/typography.mjs +2 -1
  415. package/dist/useForm.d.mts +588 -0
  416. package/dist/useForm.d.ts +588 -0
  417. package/dist/useForm.js +8743 -0
  418. package/dist/useForm.js.map +1 -0
  419. package/dist/useForm.mjs +45 -0
  420. package/dist/useForm.mjs.map +1 -0
  421. package/dist/useSearch.d.mts +126 -0
  422. package/dist/useSearch.d.ts +126 -0
  423. package/dist/useSearch.js +1125 -0
  424. package/dist/useSearch.js.map +1 -0
  425. package/dist/useSearch.mjs +42 -0
  426. package/dist/useSearch.mjs.map +1 -0
  427. package/dist/variablesRenderer.d.mts +45 -0
  428. package/dist/variablesRenderer.d.ts +45 -0
  429. package/dist/variablesRenderer.js +511 -0
  430. package/dist/variablesRenderer.js.map +1 -0
  431. package/dist/variablesRenderer.mjs +21 -0
  432. package/dist/variablesRenderer.mjs.map +1 -0
  433. package/package.json +109 -15
  434. package/dist/chunk-PKADXEAD.mjs +0 -116
  435. package/dist/chunk-PKADXEAD.mjs.map +0 -1
  436. package/dist/chunk-YGBJCPUS.mjs +0 -88
  437. package/dist/chunk-YGBJCPUS.mjs.map +0 -1
  438. package/dist/theme.css +0 -44
  439. package/dist/theme.css.map +0 -1
@@ -0,0 +1,1926 @@
1
+ import {
2
+ FormModalRenderer,
3
+ useConfiguredForm
4
+ } from "./chunk-24XDGNJ6.mjs";
5
+ import {
6
+ default as default18
7
+ } from "./chunk-VYD3PDBB.mjs";
8
+ import {
9
+ MenuPopper,
10
+ useMenu
11
+ } from "./chunk-HR3A4H4E.mjs";
12
+ import {
13
+ default as default16
14
+ } from "./chunk-3DQINB57.mjs";
15
+ import {
16
+ default as default17
17
+ } from "./chunk-BGB7JHIU.mjs";
18
+ import {
19
+ MuiFormControlLabel,
20
+ default3 as default15
21
+ } from "./chunk-T4X375IG.mjs";
22
+ import {
23
+ MuiPaper
24
+ } from "./chunk-3VUAM2GY.mjs";
25
+ import {
26
+ CircularProgress
27
+ } from "./chunk-WYYP3Y34.mjs";
28
+ import {
29
+ Button,
30
+ IconButton_default
31
+ } from "./chunk-JIU5GVM7.mjs";
32
+ import {
33
+ default as default5
34
+ } from "./chunk-4Q54P737.mjs";
35
+ import {
36
+ default109 as default6,
37
+ default110 as default7,
38
+ default111 as default8,
39
+ default112 as default9,
40
+ default113 as default10,
41
+ default114 as default11,
42
+ default115 as default12,
43
+ default116 as default13,
44
+ default117 as default14
45
+ } from "./chunk-ZVFYOXDE.mjs";
46
+ import {
47
+ default as default4
48
+ } from "./chunk-4RPFRNXG.mjs";
49
+ import {
50
+ default as default2,
51
+ default2 as default3
52
+ } from "./chunk-S6EZVRZC.mjs";
53
+
54
+ // src/components/compound/Table/src/Table.tsx
55
+ import React9 from "react";
56
+
57
+ // src/components/compound/Table/src/utils/expanded.ts
58
+ function toggleRowExpanded(table, rowId) {
59
+ table.setExpanded((old) => {
60
+ const state = old;
61
+ const exists = state === true ? true : !!(state && state[rowId]);
62
+ if (exists) {
63
+ if (state === true) {
64
+ const ret2 = {};
65
+ Object.keys(table.getRowModel().rowsById).forEach((id) => {
66
+ if (id !== rowId) {
67
+ ret2[id] = true;
68
+ }
69
+ });
70
+ return ret2;
71
+ }
72
+ const ret = {};
73
+ if (state && typeof state === "object") {
74
+ for (const k in state) {
75
+ if (k !== rowId) {
76
+ ret[k] = state[k];
77
+ }
78
+ }
79
+ }
80
+ return ret;
81
+ }
82
+ if (state === true) {
83
+ return state;
84
+ }
85
+ return { ...state || {}, [rowId]: true };
86
+ });
87
+ }
88
+
89
+ // src/components/compound/Table/src/render/cell/RowControlsCell.tsx
90
+ import { jsx, jsxs } from "react/jsx-runtime";
91
+ function RowControlsCell({
92
+ row,
93
+ table,
94
+ isExpandable,
95
+ enableRowSelection,
96
+ renderExpandedRow
97
+ }) {
98
+ const isGroupedRow = row.getIsGrouped();
99
+ const isRowChecked = isGroupedRow ? row.getIsAllSubRowsSelected() : row.getIsSelected();
100
+ const isRowIndeterminate = isGroupedRow ? row.getIsSomeSelected() && !row.getIsAllSubRowsSelected() : row.getIsSomeSelected();
101
+ const canToggleSelection = isGroupedRow ? row.getLeafRows().length > 0 : row.getCanSelect();
102
+ const hasGroupChildren = !!(row.subRows && row.subRows.length > 0);
103
+ const canShowRowDetailExpand = !!renderExpandedRow && !hasGroupChildren;
104
+ const canExpand = row.getCanExpand();
105
+ const shouldShowExpandControl = canExpand && (hasGroupChildren || canShowRowDetailExpand);
106
+ const handleRowSelectionChange = () => {
107
+ if (isGroupedRow) {
108
+ const shouldSelectAllLeaves = !row.getIsAllSubRowsSelected();
109
+ table.setRowSelection((previous) => {
110
+ const next = { ...previous };
111
+ row.getLeafRows().forEach((leafRow) => {
112
+ if (shouldSelectAllLeaves) {
113
+ next[leafRow.id] = true;
114
+ } else {
115
+ delete next[leafRow.id];
116
+ }
117
+ });
118
+ return next;
119
+ });
120
+ return;
121
+ }
122
+ row.toggleSelected();
123
+ };
124
+ return /* @__PURE__ */ jsxs(default2, { sx: { display: "flex", justifyContent: "center", alignItems: "center", width: "100%", gap: 1 }, children: [
125
+ isExpandable ? shouldShowExpandControl ? /* @__PURE__ */ jsx(
126
+ IconButton_default,
127
+ {
128
+ size: "small",
129
+ className: isGroupedRow ? "parent-expand-button" : "child-expand-button",
130
+ onClick: (e) => {
131
+ e.stopPropagation();
132
+ toggleRowExpanded(table, row.id);
133
+ },
134
+ sx: {
135
+ p: 0.5,
136
+ color: "text.secondary"
137
+ },
138
+ children: row.getIsExpanded() ? /* @__PURE__ */ jsx(default6, { sx: { fontSize: "12px" } }) : /* @__PURE__ */ jsx(default7, { sx: { fontSize: "12px" } })
139
+ }
140
+ ) : enableRowSelection ? /* @__PURE__ */ jsx(default2, { sx: { width: 28 } }) : null : null,
141
+ enableRowSelection ? /* @__PURE__ */ jsx(
142
+ default17,
143
+ {
144
+ size: "small",
145
+ checked: isRowChecked,
146
+ indeterminate: isRowIndeterminate,
147
+ disabled: !canToggleSelection,
148
+ onChange: handleRowSelectionChange,
149
+ sx: { p: 0.5 }
150
+ }
151
+ ) : null
152
+ ] });
153
+ }
154
+
155
+ // src/components/compound/Table/src/Table.tsx
156
+ import {
157
+ createColumnHelper,
158
+ getFacetedRowModel,
159
+ getFacetedUniqueValues,
160
+ getCoreRowModel,
161
+ getFilteredRowModel,
162
+ getExpandedRowModel,
163
+ getGroupedRowModel,
164
+ getPaginationRowModel,
165
+ getSortedRowModel,
166
+ useReactTable
167
+ } from "@tanstack/react-table";
168
+
169
+ // src/components/compound/Table/src/_types.ts
170
+ var COL_ID_CONTROLS = "__controls__";
171
+ var COL_ID_ACTIONS = "__actions__";
172
+
173
+ // src/components/elemental/Table/src/index.ts
174
+ import { default as default19 } from "@mui/material/Table";
175
+ import { default as default20 } from "@mui/material/TableBody";
176
+ import { default as default21 } from "@mui/material/TableCell";
177
+ import { default as default22 } from "@mui/material/TableContainer";
178
+ import { default as default23 } from "@mui/material/TableHead";
179
+ import { default as default24 } from "@mui/material/TablePagination";
180
+ import { default as default25 } from "@mui/material/TableRow";
181
+ import { default as default26 } from "@mui/material/TableSortLabel";
182
+
183
+ // src/components/compound/Table/src/render/controls/PaginationControl.tsx
184
+ import { jsx as jsx2 } from "react/jsx-runtime";
185
+ function PaginationControl({
186
+ count,
187
+ pagination,
188
+ pageSizeOptions,
189
+ onChange
190
+ }) {
191
+ return /* @__PURE__ */ jsx2(
192
+ default24,
193
+ {
194
+ component: "div",
195
+ count,
196
+ page: pagination.pageIndex,
197
+ rowsPerPage: pagination.pageSize,
198
+ rowsPerPageOptions: pageSizeOptions,
199
+ onPageChange: (_, page) => {
200
+ onChange({
201
+ ...pagination,
202
+ pageIndex: page
203
+ });
204
+ },
205
+ onRowsPerPageChange: (event) => {
206
+ const pageSize = Number(event.target.value);
207
+ onChange({
208
+ pageIndex: 0,
209
+ pageSize
210
+ });
211
+ }
212
+ }
213
+ );
214
+ }
215
+
216
+ // src/components/compound/Table/src/form/FormActionDialog.tsx
217
+ import React from "react";
218
+ import { useFormState } from "react-hook-form";
219
+ import { jsx as jsx3 } from "react/jsx-runtime";
220
+ var resolveConfig = (action, context) => {
221
+ const baseConfig = typeof action.form.config === "function" ? action.form.config(context) : action.form.config;
222
+ if (!action.form.getDefaultValues) {
223
+ return baseConfig;
224
+ }
225
+ return {
226
+ ...baseConfig,
227
+ defaultValues: {
228
+ ...baseConfig.defaultValues ?? {},
229
+ ...action.form.getDefaultValues(context)
230
+ }
231
+ };
232
+ };
233
+ function FormActionDialog({
234
+ open,
235
+ action,
236
+ context,
237
+ onClose
238
+ }) {
239
+ if (!open || !action || !context) {
240
+ return null;
241
+ }
242
+ return /* @__PURE__ */ jsx3(
243
+ FormActionDialogForm,
244
+ {
245
+ action,
246
+ context,
247
+ onClose
248
+ }
249
+ );
250
+ }
251
+ function FormActionDialogForm({
252
+ action,
253
+ context,
254
+ onClose
255
+ }) {
256
+ const formConfig = resolveConfig(action, context);
257
+ const { methods, config: resolvedConfig } = useConfiguredForm({ config: formConfig });
258
+ const { dirtyFields } = useFormState({ control: methods.control });
259
+ const openProps = React.useMemo(() => [
260
+ true,
261
+ (nextOpen) => {
262
+ const resolvedOpen = typeof nextOpen === "function" ? nextOpen(true) : nextOpen;
263
+ if (!resolvedOpen) {
264
+ onClose();
265
+ }
266
+ }
267
+ ], [onClose]);
268
+ const extraButtonsElement = /* @__PURE__ */ jsx3(default2, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: typeof action.form.extraButtons === "function" ? action.form.extraButtons(methods) : action.form.extraButtons });
269
+ return /* @__PURE__ */ jsx3(
270
+ FormModalRenderer,
271
+ {
272
+ openProps,
273
+ title: typeof action.form.title === "string" ? action.form.title : "Action Form",
274
+ methods,
275
+ config: resolvedConfig,
276
+ extraButtons: extraButtonsElement,
277
+ maxWidth: "960px",
278
+ slotProps: {
279
+ modal: {
280
+ size: { w: "100%", h: "auto" }
281
+ }
282
+ },
283
+ onSubmit: (values) => {
284
+ void action.form.onSubmit({
285
+ values,
286
+ dirtyFields,
287
+ context,
288
+ close: onClose
289
+ });
290
+ },
291
+ children: action.form.description ? /* @__PURE__ */ jsx3(default4, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: action.form.description }) : null
292
+ }
293
+ );
294
+ }
295
+
296
+ // src/components/compound/Table/src/form/ConfirmDialog.tsx
297
+ import React2 from "react";
298
+ import { Fragment, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
299
+ function ConfirmDialog({
300
+ open,
301
+ confirm,
302
+ onCancel,
303
+ onConfirm
304
+ }) {
305
+ const [checked, setChecked] = React2.useState(false);
306
+ const [error, setError] = React2.useState(false);
307
+ const config = React2.useMemo(() => ({ schema: [] }), []);
308
+ const { methods } = useConfiguredForm({ config });
309
+ const openProps = React2.useMemo(() => [
310
+ open,
311
+ (nextOpen) => {
312
+ const resolvedOpen = typeof nextOpen === "function" ? nextOpen(open) : nextOpen;
313
+ if (!resolvedOpen) {
314
+ setChecked(false);
315
+ setError(false);
316
+ onCancel();
317
+ }
318
+ }
319
+ ], [open, onCancel]);
320
+ const title = confirm?.title ?? "Confirm action";
321
+ const description = confirm?.description ?? "Are you sure you want to continue?";
322
+ return /* @__PURE__ */ jsxs2(
323
+ FormModalRenderer,
324
+ {
325
+ openProps,
326
+ title,
327
+ methods,
328
+ config,
329
+ maxWidth: "420px",
330
+ showUndo: false,
331
+ showClear: false,
332
+ onSubmit: () => {
333
+ if (confirm?.requireCheckLabel && !checked) {
334
+ setError(true);
335
+ return;
336
+ }
337
+ onConfirm();
338
+ },
339
+ children: [
340
+ /* @__PURE__ */ jsx4(default4, { variant: "body2", color: "text.secondary", sx: { mb: 1 }, children: description }),
341
+ confirm?.requireCheckLabel ? /* @__PURE__ */ jsxs2(Fragment, { children: [
342
+ /* @__PURE__ */ jsx4(
343
+ MuiFormControlLabel,
344
+ {
345
+ sx: { mt: 1 },
346
+ control: /* @__PURE__ */ jsx4(
347
+ default17,
348
+ {
349
+ size: "small",
350
+ checked,
351
+ onChange: (event) => {
352
+ const isChecked = event.target.checked;
353
+ setChecked(isChecked);
354
+ if (isChecked) {
355
+ setError(false);
356
+ }
357
+ }
358
+ }
359
+ ),
360
+ label: confirm.requireCheckLabel
361
+ }
362
+ ),
363
+ error ? /* @__PURE__ */ jsx4(default4, { variant: "caption", color: "error", sx: { display: "block" }, children: "Please check the confirmation box to continue." }) : null
364
+ ] }) : null
365
+ ]
366
+ }
367
+ );
368
+ }
369
+
370
+ // src/components/compound/Table/src/render/utils/columnSizing.ts
371
+ var COLUMN_SIZE_VAR_PREFIX = "--table-col-size-";
372
+ var sanitizeColumnId = (columnId) => columnId.replace(/[^a-zA-Z0-9_-]/g, "_");
373
+ var getColumnSizeVarName = (columnId) => `${COLUMN_SIZE_VAR_PREFIX}${sanitizeColumnId(columnId)}`;
374
+
375
+ // src/components/compound/Table/src/theme.ts
376
+ import { styled } from "@mui/material";
377
+ var TableStyledWrapper = styled(default2)({
378
+ "--table-bg": "var(--mui-palette-background-paper)",
379
+ "--table-divider-color": "var(--mui-palette-divider)",
380
+ "--table-pinned-shadow-left": `1px 0 0 var(--mui-palette-divider)`,
381
+ "--table-pinned-shadow-right": `-1px 0 0 var(--mui-palette-divider)`,
382
+ "--table-pinned-header-z-index": 4,
383
+ "--table-pinned-cell-z-index": 2,
384
+ "--table-header-font-weight": "var(--mui-typography-fontWeightBold)",
385
+ "--table-sort-label-active-color": "var(--mui-palette-text-primary)",
386
+ "--table-sort-label-icon-color": "var(--mui-palette-error-light)",
387
+ "--table-dragger-bar-hover-color": "var(--mui-palette-focus-1)",
388
+ "--table-drragger-bar-hover-width": "4px",
389
+ "--table-empty-min-height": "200px",
390
+ "--table-empty-icon-color": "var(--mui-palette-text-disabled)",
391
+ "--table-empty-text-color": "var(--mui-palette-text-secondary)",
392
+ "--table-empty-description-color": "var(--mui-palette-text-disabled)"
393
+ });
394
+ var tableTheme = {
395
+ styleOverrides: {
396
+ root: {
397
+ borderCollapse: "separate",
398
+ borderSpacing: 0,
399
+ tableLayout: "fixed",
400
+ backgroundColor: "var(--table-bg, var(--mui-palette-background-paper))"
401
+ }
402
+ }
403
+ };
404
+ var tableContainerTheme = {
405
+ styleOverrides: {
406
+ root: {
407
+ width: "100%",
408
+ overflowX: "auto",
409
+ containerType: "inline-size",
410
+ containerName: "sdui-table"
411
+ }
412
+ }
413
+ };
414
+ var tableHeadTheme = {
415
+ styleOverrides: {
416
+ root: {
417
+ backgroundColor: "var(--table-bg, var(--mui-palette-background-paper))"
418
+ }
419
+ }
420
+ };
421
+ var tableSortLabelTheme = {
422
+ styleOverrides: {
423
+ root: {
424
+ "&.Mui-active": {
425
+ color: "var(--table-sort-label-active-color)",
426
+ "& .MuiTableSortLabel-icon": {
427
+ color: "var(--table-sort-label-icon-color)"
428
+ }
429
+ },
430
+ "& .MuiTableSortLabel-icon": {
431
+ color: "var(--table-sort-label-icon-color)"
432
+ }
433
+ }
434
+ }
435
+ };
436
+ var tableCellTheme = {
437
+ defaultProps: {
438
+ size: "small"
439
+ },
440
+ styleOverrides: {
441
+ root: {
442
+ whiteSpace: "nowrap",
443
+ overflow: "hidden",
444
+ textOverflow: "ellipsis",
445
+ verticalAlign: "middle",
446
+ borderBottomColor: "var(--table-divider-color, var(--mui-palette-divider))",
447
+ backgroundColor: "transparent"
448
+ },
449
+ head: {
450
+ fontWeight: "var(--table-header-font-weight, 700)",
451
+ backgroundColor: "var(--table-bg, var(--mui-palette-background-paper))",
452
+ "& [data-table-filter-trigger]": {
453
+ transition: "opacity 120ms ease"
454
+ },
455
+ "@media (hover: hover) and (pointer: fine)": {
456
+ "& [data-table-filter-trigger]": {
457
+ opacity: 0
458
+ },
459
+ "&:hover [data-table-filter-trigger]": {
460
+ opacity: 1
461
+ },
462
+ "& [data-table-filter-trigger]:focus-visible": {
463
+ opacity: 1
464
+ },
465
+ '& [data-table-filter-trigger][data-active="true"]': {
466
+ opacity: 1
467
+ }
468
+ }
469
+ }
470
+ }
471
+ };
472
+ var tablePaginationTheme = {
473
+ styleOverrides: {
474
+ root: {
475
+ borderTop: "1px solid var(--table-divider-color, var(--mui-palette-divider))"
476
+ },
477
+ actions: ({ theme }) => ({
478
+ display: "flex",
479
+ gap: theme.spacing(1),
480
+ marginRight: theme.spacing(0.5)
481
+ })
482
+ }
483
+ };
484
+ var tableEmptyCellSx = {
485
+ p: 0,
486
+ width: "100%",
487
+ borderBottom: "none",
488
+ whiteSpace: "normal",
489
+ overflow: "visible",
490
+ textAlign: "center",
491
+ verticalAlign: "middle"
492
+ };
493
+ var TablePlaceholderRoot = styled(default2)({
494
+ position: "sticky",
495
+ left: 0,
496
+ boxSizing: "border-box",
497
+ width: "100cqi",
498
+ maxWidth: "100%",
499
+ minHeight: "var(--table-empty-min-height)",
500
+ display: "flex",
501
+ flexDirection: "column",
502
+ alignItems: "center",
503
+ justifyContent: "center",
504
+ gap: 8,
505
+ padding: "32px 24px",
506
+ textAlign: "center",
507
+ whiteSpace: "normal"
508
+ });
509
+
510
+ // src/components/compound/Table/src/utils/filters.ts
511
+ var createExcelColumnFilterFn = () => (row, columnId, filterValue) => {
512
+ const raw = row.getValue(columnId);
513
+ const text = String(raw ?? "").toLowerCase();
514
+ if (!filterValue || typeof filterValue !== "object") {
515
+ return true;
516
+ }
517
+ const typed = filterValue;
518
+ const query = (typed.query ?? "").toLowerCase().trim();
519
+ const selectedValues = Array.isArray(typed.selectedValues) ? typed.selectedValues : [];
520
+ if (query && !text.includes(query)) {
521
+ return false;
522
+ }
523
+ if (selectedValues.length > 0) {
524
+ return selectedValues.map((value) => value.toLowerCase()).includes(text);
525
+ }
526
+ return true;
527
+ };
528
+
529
+ // src/components/compound/Table/src/hooks/useTableState.ts
530
+ import React3 from "react";
531
+ var DEFAULT_PAGINATION = {
532
+ pageIndex: 0,
533
+ pageSize: 10
534
+ };
535
+ var DEFAULT_COLUMN_PINNING = {
536
+ left: [],
537
+ right: []
538
+ };
539
+ var DEFAULT_COLUMN_FILTERS = [];
540
+ var DEFAULT_COLUMN_SIZING = {};
541
+ var DEFAULT_GROUPING = [];
542
+ var DEFAULT_ROW_SELECTION = {};
543
+ var DEFAULT_EXPANDED = {};
544
+ var DEFAULT_PAGE_SIZE_OPTIONS = [5, 10, 25, 50];
545
+ var resolveUpdater = (updater, previous) => {
546
+ if (typeof updater === "function") {
547
+ return updater(previous);
548
+ }
549
+ return updater;
550
+ };
551
+ function useTableState(props) {
552
+ const {
553
+ sorting,
554
+ defaultSorting = [],
555
+ onSortingChange,
556
+ globalFilter,
557
+ defaultGlobalFilter = "",
558
+ onGlobalFilterChange,
559
+ columnFilters,
560
+ defaultColumnFilters = DEFAULT_COLUMN_FILTERS,
561
+ onColumnFiltersChange,
562
+ grouping,
563
+ defaultGrouping = DEFAULT_GROUPING,
564
+ onGroupingChange,
565
+ pagination,
566
+ defaultPagination = DEFAULT_PAGINATION,
567
+ onPaginationChange,
568
+ columnPinning,
569
+ defaultColumnPinning = DEFAULT_COLUMN_PINNING,
570
+ onColumnPinningChange,
571
+ columnSizing,
572
+ defaultColumnSizing = DEFAULT_COLUMN_SIZING,
573
+ onColumnSizingChange,
574
+ rowSelection,
575
+ defaultRowSelection = DEFAULT_ROW_SELECTION,
576
+ onRowSelectionChange,
577
+ expanded,
578
+ defaultExpanded = DEFAULT_EXPANDED,
579
+ onExpandedChange
580
+ } = props;
581
+ const [internalSorting, setInternalSorting] = React3.useState(defaultSorting);
582
+ const [internalGlobalFilter, setInternalGlobalFilter] = React3.useState(defaultGlobalFilter);
583
+ const [internalColumnFilters, setInternalColumnFilters] = React3.useState(defaultColumnFilters);
584
+ const [internalGrouping, setInternalGrouping] = React3.useState(defaultGrouping);
585
+ const [internalPagination, setInternalPagination] = React3.useState(defaultPagination);
586
+ const [internalColumnPinning, setInternalColumnPinning] = React3.useState(defaultColumnPinning);
587
+ const [internalColumnSizing, setInternalColumnSizing] = React3.useState(defaultColumnSizing);
588
+ const [internalRowSelection, setInternalRowSelection] = React3.useState(defaultRowSelection);
589
+ const [internalExpanded, setInternalExpanded] = React3.useState(defaultExpanded);
590
+ const resolvedSorting = sorting ?? internalSorting;
591
+ const resolvedGlobalFilter = globalFilter ?? internalGlobalFilter;
592
+ const resolvedColumnFilters = columnFilters ?? internalColumnFilters;
593
+ const resolvedGrouping = grouping ?? internalGrouping;
594
+ const resolvedPagination = pagination ?? internalPagination;
595
+ const resolvedColumnPinning = columnPinning ?? internalColumnPinning;
596
+ const resolvedColumnSizing = columnSizing ?? internalColumnSizing;
597
+ const resolvedRowSelection = rowSelection ?? internalRowSelection;
598
+ const resolvedExpanded = expanded ?? internalExpanded;
599
+ const deferredGlobalFilter = React3.useDeferredValue(resolvedGlobalFilter);
600
+ const handleSortingChange = React3.useCallback((updater) => {
601
+ if (sorting === void 0) {
602
+ setInternalSorting((previous) => {
603
+ const next2 = resolveUpdater(updater, previous);
604
+ onSortingChange?.(next2);
605
+ return next2;
606
+ });
607
+ return;
608
+ }
609
+ const next = resolveUpdater(updater, resolvedSorting);
610
+ onSortingChange?.(next);
611
+ }, [onSortingChange, resolvedSorting, sorting]);
612
+ const handlePaginationChange = React3.useCallback((updater) => {
613
+ if (pagination === void 0) {
614
+ setInternalPagination((previous) => {
615
+ const next2 = resolveUpdater(updater, previous);
616
+ onPaginationChange?.(next2);
617
+ return next2;
618
+ });
619
+ return;
620
+ }
621
+ const next = resolveUpdater(updater, resolvedPagination);
622
+ onPaginationChange?.(next);
623
+ }, [onPaginationChange, pagination, resolvedPagination]);
624
+ const handleGroupingChange = React3.useCallback((updater) => {
625
+ if (grouping === void 0) {
626
+ setInternalGrouping((previous) => {
627
+ const next2 = resolveUpdater(updater, previous);
628
+ onGroupingChange?.(next2);
629
+ return next2;
630
+ });
631
+ return;
632
+ }
633
+ const next = resolveUpdater(updater, resolvedGrouping);
634
+ onGroupingChange?.(next);
635
+ }, [grouping, onGroupingChange, resolvedGrouping]);
636
+ const handleGlobalFilterChange = React3.useCallback((updater) => {
637
+ if (globalFilter === void 0) {
638
+ setInternalGlobalFilter((previous) => {
639
+ const next2 = resolveUpdater(updater, previous);
640
+ onGlobalFilterChange?.(next2);
641
+ return next2;
642
+ });
643
+ return;
644
+ }
645
+ const next = resolveUpdater(updater, resolvedGlobalFilter);
646
+ onGlobalFilterChange?.(next);
647
+ }, [globalFilter, onGlobalFilterChange, resolvedGlobalFilter]);
648
+ const handleColumnFiltersChange = React3.useCallback((updater) => {
649
+ if (columnFilters === void 0) {
650
+ setInternalColumnFilters((previous) => {
651
+ const next2 = resolveUpdater(updater, previous);
652
+ onColumnFiltersChange?.(next2);
653
+ return next2;
654
+ });
655
+ return;
656
+ }
657
+ const next = resolveUpdater(updater, resolvedColumnFilters);
658
+ onColumnFiltersChange?.(next);
659
+ }, [columnFilters, onColumnFiltersChange, resolvedColumnFilters]);
660
+ const handleColumnPinningChange = React3.useCallback((updater) => {
661
+ if (columnPinning === void 0) {
662
+ setInternalColumnPinning((previous) => {
663
+ const next2 = resolveUpdater(updater, previous);
664
+ onColumnPinningChange?.(next2);
665
+ return next2;
666
+ });
667
+ return;
668
+ }
669
+ const next = resolveUpdater(updater, resolvedColumnPinning);
670
+ onColumnPinningChange?.(next);
671
+ }, [columnPinning, onColumnPinningChange, resolvedColumnPinning]);
672
+ const handleRowSelectionChange = React3.useCallback((updater) => {
673
+ if (rowSelection === void 0) {
674
+ setInternalRowSelection((previous) => {
675
+ const next2 = resolveUpdater(updater, previous);
676
+ onRowSelectionChange?.(next2);
677
+ return next2;
678
+ });
679
+ return;
680
+ }
681
+ const next = resolveUpdater(updater, resolvedRowSelection);
682
+ onRowSelectionChange?.(next);
683
+ }, [onRowSelectionChange, resolvedRowSelection, rowSelection]);
684
+ const handleColumnSizingChange = React3.useCallback((updater) => {
685
+ if (columnSizing === void 0) {
686
+ setInternalColumnSizing((previous) => {
687
+ const next2 = resolveUpdater(updater, previous);
688
+ onColumnSizingChange?.(next2);
689
+ return next2;
690
+ });
691
+ return;
692
+ }
693
+ const next = resolveUpdater(updater, resolvedColumnSizing);
694
+ onColumnSizingChange?.(next);
695
+ }, [columnSizing, onColumnSizingChange, resolvedColumnSizing]);
696
+ const handleExpandedChange = React3.useCallback((updater) => {
697
+ if (expanded === void 0) {
698
+ setInternalExpanded((previous) => {
699
+ const next2 = resolveUpdater(updater, previous);
700
+ onExpandedChange?.(next2);
701
+ return next2;
702
+ });
703
+ return;
704
+ }
705
+ const next = resolveUpdater(updater, resolvedExpanded);
706
+ onExpandedChange?.(next);
707
+ }, [expanded, onExpandedChange, resolvedExpanded]);
708
+ return {
709
+ state: {
710
+ sorting: resolvedSorting,
711
+ globalFilter: resolvedGlobalFilter,
712
+ columnFilters: resolvedColumnFilters,
713
+ grouping: resolvedGrouping,
714
+ rowSelection: resolvedRowSelection,
715
+ expanded: resolvedExpanded,
716
+ pagination: resolvedPagination,
717
+ columnPinning: resolvedColumnPinning,
718
+ columnSizing: resolvedColumnSizing
719
+ },
720
+ deferredGlobalFilter,
721
+ handlers: {
722
+ onSortingChange: handleSortingChange,
723
+ onGlobalFilterChange: handleGlobalFilterChange,
724
+ onColumnFiltersChange: handleColumnFiltersChange,
725
+ onGroupingChange: handleGroupingChange,
726
+ onRowSelectionChange: handleRowSelectionChange,
727
+ onExpandedChange: handleExpandedChange,
728
+ onPaginationChange: handlePaginationChange,
729
+ onColumnPinningChange: handleColumnPinningChange,
730
+ onColumnSizingChange: handleColumnSizingChange
731
+ }
732
+ };
733
+ }
734
+
735
+ // src/components/compound/Table/src/render/actions/ActionButtons.tsx
736
+ import React4 from "react";
737
+ import { Fragment as Fragment2, jsx as jsx5 } from "react/jsx-runtime";
738
+ var resolveBoolean = (value, context) => {
739
+ if (typeof value === "function") {
740
+ return value(context);
741
+ }
742
+ return Boolean(value);
743
+ };
744
+ function ActionButtons({
745
+ actions,
746
+ context,
747
+ onOpenFormAction,
748
+ onRequestConfirm
749
+ }) {
750
+ const [loadingMap, setLoadingMap] = React4.useState({});
751
+ const runAction = React4.useCallback(async (action, key) => {
752
+ try {
753
+ setLoadingMap((previous) => ({ ...previous, [key]: true }));
754
+ await action.onClick(context);
755
+ } finally {
756
+ setLoadingMap((previous) => ({ ...previous, [key]: false }));
757
+ }
758
+ }, [context]);
759
+ const visibleActions = actions.filter((action) => !resolveBoolean(action.visibility, context));
760
+ if (visibleActions.length === 0) {
761
+ return null;
762
+ }
763
+ return /* @__PURE__ */ jsx5(Fragment2, { children: /* @__PURE__ */ jsx5(default2, { sx: { display: "flex", alignItems: "center", gap: 1, flexWrap: "wrap" }, children: visibleActions.map((action) => {
764
+ const key = `${action.id}-${context.rowIndex ?? "table"}`;
765
+ const actionLoading = loadingMap[key] || resolveBoolean(action.loading, context);
766
+ const actionDisabled = actionLoading || resolveBoolean(action.disabled, context);
767
+ const handleClick = () => {
768
+ if (action.kind === "form") {
769
+ onOpenFormAction(action, context);
770
+ return;
771
+ }
772
+ if (action.confirm) {
773
+ onRequestConfirm?.({
774
+ action,
775
+ context,
776
+ key,
777
+ proceed: () => runAction(action, key)
778
+ });
779
+ return;
780
+ }
781
+ void runAction(action, key);
782
+ };
783
+ if (action.iconOnly && action.icon) {
784
+ const content = /* @__PURE__ */ jsx5(
785
+ IconButton_default,
786
+ {
787
+ color: action.intent ?? "primary",
788
+ size: "small",
789
+ disabled: actionDisabled,
790
+ onClick: handleClick,
791
+ children: actionLoading ? /* @__PURE__ */ jsx5(CircularProgress, { size: 14, color: "inherit" }) : action.icon
792
+ },
793
+ key
794
+ );
795
+ return action.label ? /* @__PURE__ */ jsx5(default5, { title: action.label, children: content }, key) : content;
796
+ }
797
+ return /* @__PURE__ */ jsx5(
798
+ Button,
799
+ {
800
+ variant: action.variant ?? "outlined",
801
+ color: action.intent ?? "primary",
802
+ size: "small",
803
+ disabled: actionDisabled,
804
+ startIcon: actionLoading ? /* @__PURE__ */ jsx5(CircularProgress, { size: 14, color: "inherit" }) : action.icon,
805
+ onClick: handleClick,
806
+ children: action.label
807
+ },
808
+ key
809
+ );
810
+ }) }) });
811
+ }
812
+
813
+ // src/components/compound/Table/src/render/controls/GlobalFilterControl.tsx
814
+ import React5 from "react";
815
+ import { jsx as jsx6 } from "react/jsx-runtime";
816
+ var GLOBAL_FILTER_DEBOUNCE_MS = 180;
817
+ function GlobalFilterControlComponent({ value, onChange, placeholder }) {
818
+ const [draftValue, setDraftValue] = React5.useState(value);
819
+ React5.useEffect(() => {
820
+ setDraftValue(value);
821
+ }, [value]);
822
+ React5.useEffect(() => {
823
+ if (draftValue === value) {
824
+ return;
825
+ }
826
+ const timeout = window.setTimeout(() => {
827
+ onChange(draftValue);
828
+ }, GLOBAL_FILTER_DEBOUNCE_MS);
829
+ return () => {
830
+ window.clearTimeout(timeout);
831
+ };
832
+ }, [draftValue, onChange, value]);
833
+ return /* @__PURE__ */ jsx6(
834
+ default18,
835
+ {
836
+ size: "small",
837
+ value: draftValue,
838
+ placeholder,
839
+ onChange: (event) => setDraftValue(event.target.value),
840
+ variant: "outlined",
841
+ slotProps: {
842
+ input: {
843
+ startAdornment: /* @__PURE__ */ jsx6(default15, { position: "start", children: /* @__PURE__ */ jsx6(default8, { fontSize: "small", color: "action" }) }),
844
+ endAdornment: draftValue ? /* @__PURE__ */ jsx6(default15, { position: "end", children: /* @__PURE__ */ jsx6(default5, { title: "Clear", children: /* @__PURE__ */ jsx6(
845
+ IconButton_default,
846
+ {
847
+ size: "small",
848
+ "aria-label": "Clear filter",
849
+ onClick: () => {
850
+ setDraftValue("");
851
+ onChange("");
852
+ },
853
+ sx: { borderColor: "transparent", padding: 0 },
854
+ children: /* @__PURE__ */ jsx6(default9, { fontSize: "small" })
855
+ }
856
+ ) }) }) : null
857
+ }
858
+ },
859
+ sx: {
860
+ width: 220,
861
+ maxWidth: "100%",
862
+ minWidth: { sm: 220 },
863
+ "& .MuiOutlinedInput-root": {
864
+ borderRadius: 1.5,
865
+ backgroundColor: "var(--table-bg)",
866
+ transition: (theme) => theme.transitions.create(["box-shadow", "border-color"]),
867
+ minHeight: 34,
868
+ "&:hover": {
869
+ boxShadow: "var(--shadow-outset-1)"
870
+ },
871
+ "&.Mui-focused": {
872
+ boxShadow: "var(--shadow-outset-1)"
873
+ }
874
+ },
875
+ "& .MuiOutlinedInput-input": {
876
+ py: 0.5,
877
+ fontSize: "0.85rem"
878
+ }
879
+ }
880
+ }
881
+ );
882
+ }
883
+ var GlobalFilterControl = React5.memo(GlobalFilterControlComponent);
884
+
885
+ // src/components/compound/Table/src/render/TableToolbar.tsx
886
+ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
887
+ function TableToolbar({
888
+ table,
889
+ tableActions,
890
+ enableFiltering,
891
+ globalFilter,
892
+ filterPlaceholder,
893
+ onGlobalFilterChange,
894
+ onOpenFormAction,
895
+ onRequestConfirm
896
+ }) {
897
+ if (tableActions.length === 0 && !enableFiltering) {
898
+ return null;
899
+ }
900
+ return /* @__PURE__ */ jsx7(default2, { sx: { p: 1.25, borderBottom: "1px solid var(--table-divider-color)" }, children: /* @__PURE__ */ jsxs3(
901
+ default3,
902
+ {
903
+ direction: { xs: "column", sm: "row" },
904
+ spacing: 1.25,
905
+ alignItems: { xs: "stretch", sm: "center" },
906
+ justifyContent: "space-between",
907
+ useFlexGap: true,
908
+ children: [
909
+ tableActions.length > 0 ? /* @__PURE__ */ jsx7(default2, { sx: { minWidth: 0, flex: 1 }, children: /* @__PURE__ */ jsx7(
910
+ ActionButtons,
911
+ {
912
+ actions: tableActions,
913
+ context: { table },
914
+ onOpenFormAction,
915
+ onRequestConfirm
916
+ }
917
+ ) }) : null,
918
+ enableFiltering ? /* @__PURE__ */ jsx7(default2, { sx: { width: { xs: "100%", sm: "auto" }, ml: { sm: "auto" } }, children: /* @__PURE__ */ jsx7(
919
+ GlobalFilterControl,
920
+ {
921
+ value: globalFilter,
922
+ placeholder: filterPlaceholder,
923
+ onChange: onGlobalFilterChange
924
+ }
925
+ ) }) : null
926
+ ]
927
+ }
928
+ ) });
929
+ }
930
+
931
+ // src/components/compound/Table/src/render/Header.tsx
932
+ import { flexRender } from "@tanstack/react-table";
933
+
934
+ // src/components/compound/Table/src/render/controls/ColumnFilterDropdown/ColumnFilterDropdown.tsx
935
+ import React7 from "react";
936
+
937
+ // src/components/compound/Table/src/render/controls/ColumnFilterDropdown/useColumnFilterDropdown.ts
938
+ import React6 from "react";
939
+
940
+ // src/components/compound/Table/src/render/controls/ColumnFilterDropdown/utils.ts
941
+ var toFilterValue = (value) => {
942
+ if (!value || typeof value !== "object") {
943
+ return { query: "", selectedValues: [] };
944
+ }
945
+ const casted = value;
946
+ const rawSelectedValues = Array.isArray(casted.selectedValues) ? casted.selectedValues : [];
947
+ return {
948
+ query: casted.query ?? "",
949
+ selectedValues: rawSelectedValues.map((selectedValue) => String(selectedValue ?? "")).filter((selectedValue) => selectedValue.length > 0)
950
+ };
951
+ };
952
+ var getMenuValuesSnapshot = (valueMap) => {
953
+ return Array.from(valueMap.keys()).map((value) => String(value ?? "")).filter((value) => value.length > 0).sort((a, b) => a.localeCompare(b));
954
+ };
955
+
956
+ // src/components/compound/Table/src/render/controls/ColumnFilterDropdown/useColumnFilterDropdown.ts
957
+ var QUERY_COMMIT_DEBOUNCE_MS = 180;
958
+ var useColumnFilterDropdown = (column) => {
959
+ const openMenuProps = useMenu({});
960
+ const current = toFilterValue(column.getFilterValue());
961
+ const [queryDraft, setQueryDraft] = React6.useState(current.query ?? "");
962
+ const deferredQueryDraft = React6.useDeferredValue(queryDraft);
963
+ const [menuValuesSnapshot, setMenuValuesSnapshot] = React6.useState([]);
964
+ const [localSelectedValues, setLocalSelectedValues] = React6.useState(null);
965
+ const [, startTransition] = React6.useTransition();
966
+ const open = Boolean(openMenuProps.anchorEl);
967
+ React6.useEffect(() => {
968
+ if (!open) {
969
+ setLocalSelectedValues(null);
970
+ return;
971
+ }
972
+ const snapshot = getMenuValuesSnapshot(column.getFacetedUniqueValues()).map((value) => ({
973
+ value,
974
+ normalized: value.toLowerCase()
975
+ }));
976
+ const latest = toFilterValue(column.getFilterValue());
977
+ setMenuValuesSnapshot(snapshot);
978
+ setQueryDraft(latest.query ?? "");
979
+ setLocalSelectedValues(latest.selectedValues ?? []);
980
+ }, [column, open]);
981
+ const uniqueValues = React6.useMemo(() => {
982
+ if (!deferredQueryDraft) {
983
+ return menuValuesSnapshot.map((entry) => entry.value);
984
+ }
985
+ const lower = deferredQueryDraft.toLowerCase();
986
+ return menuValuesSnapshot.filter((entry) => entry.normalized.includes(lower)).map((entry) => entry.value);
987
+ }, [deferredQueryDraft, menuValuesSnapshot]);
988
+ const selectedValues = current.selectedValues ?? [];
989
+ const selectedValuesForUi = localSelectedValues ?? selectedValues;
990
+ const selectedValuesSet = React6.useMemo(() => new Set(selectedValuesForUi), [selectedValuesForUi]);
991
+ const setFilterValue = React6.useCallback((next) => {
992
+ column.setFilterValue((previous) => {
993
+ const resolvedPrevious = toFilterValue(previous);
994
+ const resolvedNext = typeof next === "function" ? next(resolvedPrevious) : next;
995
+ const normalizedNext = {
996
+ query: resolvedNext.query ?? "",
997
+ selectedValues: Array.isArray(resolvedNext.selectedValues) ? resolvedNext.selectedValues.map((selectedValue) => String(selectedValue ?? "")).filter((selectedValue) => selectedValue.length > 0) : []
998
+ };
999
+ if (!normalizedNext.query && (!normalizedNext.selectedValues || normalizedNext.selectedValues.length === 0)) {
1000
+ return void 0;
1001
+ }
1002
+ return normalizedNext;
1003
+ });
1004
+ }, [column]);
1005
+ const commitDraftFilters = React6.useCallback((overrides) => {
1006
+ const nextQuery = overrides?.query ?? queryDraft;
1007
+ const nextSelectedValues = overrides?.selectedValues ?? selectedValuesForUi;
1008
+ startTransition(() => {
1009
+ setFilterValue({
1010
+ query: nextQuery,
1011
+ selectedValues: nextSelectedValues
1012
+ });
1013
+ });
1014
+ }, [queryDraft, selectedValuesForUi, setFilterValue]);
1015
+ const openMenu = openMenuProps.onTriggerClickHandler;
1016
+ const closeMenu = React6.useCallback(() => {
1017
+ openMenuProps.closeHandler();
1018
+ }, [openMenuProps]);
1019
+ const applyQuery = React6.useCallback((nextQuery) => {
1020
+ setQueryDraft(nextQuery);
1021
+ }, []);
1022
+ React6.useEffect(() => {
1023
+ if (!open) {
1024
+ return;
1025
+ }
1026
+ if (queryDraft === current.query) {
1027
+ return;
1028
+ }
1029
+ const timeout = window.setTimeout(() => {
1030
+ commitDraftFilters({ query: queryDraft });
1031
+ }, QUERY_COMMIT_DEBOUNCE_MS);
1032
+ return () => {
1033
+ window.clearTimeout(timeout);
1034
+ };
1035
+ }, [commitDraftFilters, current.query, open, queryDraft]);
1036
+ const commitSelectedValues = React6.useCallback((nextSelectedValues) => {
1037
+ setLocalSelectedValues(nextSelectedValues);
1038
+ commitDraftFilters({ selectedValues: nextSelectedValues });
1039
+ }, [commitDraftFilters]);
1040
+ const toggleValue = React6.useCallback((value) => {
1041
+ const nextSet = new Set(selectedValuesForUi);
1042
+ if (nextSet.has(value)) {
1043
+ nextSet.delete(value);
1044
+ } else {
1045
+ nextSet.add(value);
1046
+ }
1047
+ commitSelectedValues(Array.from(nextSet));
1048
+ }, [commitSelectedValues, selectedValuesForUi]);
1049
+ const toggleAllValues = React6.useCallback(() => {
1050
+ const currentSet = new Set(selectedValuesForUi);
1051
+ const areAllVisibleSelected = uniqueValues.length > 0 && uniqueValues.every((value) => currentSet.has(value));
1052
+ if (areAllVisibleSelected) {
1053
+ commitSelectedValues(selectedValuesForUi.filter((value) => !uniqueValues.includes(value)));
1054
+ return;
1055
+ }
1056
+ uniqueValues.forEach((value) => currentSet.add(value));
1057
+ commitSelectedValues(Array.from(currentSet));
1058
+ }, [commitSelectedValues, selectedValuesForUi, uniqueValues]);
1059
+ const clearFilters = React6.useCallback(() => {
1060
+ setQueryDraft("");
1061
+ setLocalSelectedValues([]);
1062
+ commitDraftFilters({ query: "", selectedValues: [] });
1063
+ closeMenu();
1064
+ }, [closeMenu, commitDraftFilters]);
1065
+ const allChecked = uniqueValues.length > 0 && uniqueValues.every((value) => selectedValuesSet.has(value));
1066
+ const someChecked = uniqueValues.some((value) => selectedValuesSet.has(value));
1067
+ return {
1068
+ open,
1069
+ openMenuProps,
1070
+ queryDraft,
1071
+ uniqueValues,
1072
+ selectedValuesSet,
1073
+ allChecked,
1074
+ someChecked,
1075
+ openMenu,
1076
+ closeMenu,
1077
+ applyQuery,
1078
+ clearFilters,
1079
+ toggleValue,
1080
+ toggleAllValues
1081
+ };
1082
+ };
1083
+
1084
+ // src/components/compound/Table/src/render/controls/ColumnFilterDropdown/ColumnFilterDropdown.tsx
1085
+ import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
1086
+ function ColumnFilterDropdown({
1087
+ column,
1088
+ placeholder
1089
+ }) {
1090
+ const sortedState = column.getIsSorted();
1091
+ const {
1092
+ openMenuProps,
1093
+ queryDraft,
1094
+ uniqueValues,
1095
+ selectedValuesSet,
1096
+ allChecked,
1097
+ someChecked,
1098
+ openMenu,
1099
+ closeMenu,
1100
+ applyQuery,
1101
+ clearFilters,
1102
+ toggleValue,
1103
+ toggleAllValues
1104
+ } = useColumnFilterDropdown(column);
1105
+ const selectedSortOptionIds = React7.useMemo(() => {
1106
+ if (sortedState === "asc") {
1107
+ return ["__sort_asc__"];
1108
+ }
1109
+ if (sortedState === "desc") {
1110
+ return ["__sort_desc__"];
1111
+ }
1112
+ return [];
1113
+ }, [sortedState]);
1114
+ const optionHeader = React7.useMemo(
1115
+ () => /* @__PURE__ */ jsxs4(default2, { children: [
1116
+ /* @__PURE__ */ jsx8(default2, { sx: { px: 1.25, pb: 1, pt: 1 }, children: /* @__PURE__ */ jsx8(
1117
+ default18,
1118
+ {
1119
+ size: "small",
1120
+ fullWidth: true,
1121
+ placeholder,
1122
+ value: queryDraft,
1123
+ onChange: (event) => applyQuery(event.target.value),
1124
+ onKeyDown: (event) => {
1125
+ event.stopPropagation();
1126
+ },
1127
+ slotProps: {
1128
+ input: {
1129
+ startAdornment: /* @__PURE__ */ jsx8(default8, { fontSize: "small", color: "action" })
1130
+ }
1131
+ }
1132
+ }
1133
+ ) }),
1134
+ /* @__PURE__ */ jsx8(default16, { sx: { my: 0.5 } })
1135
+ ] }),
1136
+ [applyQuery, placeholder, queryDraft]
1137
+ );
1138
+ const menuOptions = React7.useMemo(() => [
1139
+ {
1140
+ id: "__sort_asc__",
1141
+ icon: /* @__PURE__ */ jsx8(default10, { fontSize: "small" }),
1142
+ label: "Sort A to Z",
1143
+ onClick: () => {
1144
+ if (!column.getCanSort()) {
1145
+ return;
1146
+ }
1147
+ column.toggleSorting(false);
1148
+ closeMenu();
1149
+ }
1150
+ },
1151
+ {
1152
+ id: "__sort_desc__",
1153
+ icon: /* @__PURE__ */ jsx8(default10, { fontSize: "small", sx: { transform: "scaleY(-1)" } }),
1154
+ label: "Sort Z to A",
1155
+ onClick: () => {
1156
+ if (!column.getCanSort()) {
1157
+ return;
1158
+ }
1159
+ column.toggleSorting(true);
1160
+ closeMenu();
1161
+ }
1162
+ },
1163
+ {
1164
+ id: "__clear__",
1165
+ icon: /* @__PURE__ */ jsx8(default14, { fontSize: "small" }),
1166
+ label: "Clear Filter",
1167
+ onClick: () => {
1168
+ if (!column.getIsFiltered()) {
1169
+ return;
1170
+ }
1171
+ clearFilters();
1172
+ }
1173
+ },
1174
+ {
1175
+ id: "__select_all__",
1176
+ icon: /* @__PURE__ */ jsx8(
1177
+ default17,
1178
+ {
1179
+ size: "small",
1180
+ disableRipple: true,
1181
+ sx: { p: 0, pointerEvents: "none" },
1182
+ checked: allChecked,
1183
+ indeterminate: !allChecked && someChecked
1184
+ }
1185
+ ),
1186
+ label: "(Select All)",
1187
+ onClick: toggleAllValues
1188
+ },
1189
+ ...uniqueValues.map((value) => {
1190
+ const isSelected = selectedValuesSet.has(value);
1191
+ return {
1192
+ id: value,
1193
+ icon: /* @__PURE__ */ jsx8(
1194
+ default17,
1195
+ {
1196
+ size: "small",
1197
+ disableRipple: true,
1198
+ sx: { p: 0, pointerEvents: "none" },
1199
+ checked: isSelected
1200
+ }
1201
+ ),
1202
+ label: value,
1203
+ onClick: () => toggleValue(value)
1204
+ };
1205
+ })
1206
+ ], [
1207
+ allChecked,
1208
+ clearFilters,
1209
+ closeMenu,
1210
+ column,
1211
+ selectedValuesSet,
1212
+ someChecked,
1213
+ toggleAllValues,
1214
+ toggleValue,
1215
+ uniqueValues
1216
+ ]);
1217
+ const isFiltered = column.getIsFiltered();
1218
+ const isMenuOpen = Boolean(openMenuProps.anchorEl);
1219
+ return /* @__PURE__ */ jsxs4(Fragment3, { children: [
1220
+ /* @__PURE__ */ jsx8(
1221
+ IconButton_default,
1222
+ {
1223
+ size: "small",
1224
+ onClick: openMenu,
1225
+ color: isFiltered ? "error" : void 0,
1226
+ "aria-label": `Filter ${column.id}`,
1227
+ "data-table-filter-trigger": "",
1228
+ "data-active": isFiltered || isMenuOpen ? "true" : void 0,
1229
+ sx: { padding: 0 },
1230
+ children: /* @__PURE__ */ jsx8(default11, { fontSize: "small" })
1231
+ }
1232
+ ),
1233
+ /* @__PURE__ */ jsx8(
1234
+ MenuPopper,
1235
+ {
1236
+ openMenuProps: {
1237
+ ...openMenuProps,
1238
+ sorted: false,
1239
+ initSelected: selectedSortOptionIds
1240
+ },
1241
+ optionHeader,
1242
+ options: menuOptions,
1243
+ menuItemProps: {
1244
+ padding: "6px 12px",
1245
+ fontSize: "0.875rem"
1246
+ },
1247
+ placement: "bottom-end"
1248
+ }
1249
+ )
1250
+ ] });
1251
+ }
1252
+
1253
+ // src/components/compound/Table/src/render/Header.tsx
1254
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
1255
+ var startNativeDrag = (event, table, column) => {
1256
+ event.preventDefault();
1257
+ event.stopPropagation();
1258
+ const target = event.currentTarget;
1259
+ const startX = "touches" in event ? event.touches[0].clientX : event.clientX;
1260
+ const startWidth = column.getSize();
1261
+ const minWidth = column.columnDef.minSize ?? 20;
1262
+ const maxWidth = column.columnDef.maxSize;
1263
+ const varName = getColumnSizeVarName(column.id);
1264
+ const tableContainer = target.closest(".MuiTableContainer-root");
1265
+ const tableEl = tableContainer?.querySelector("table");
1266
+ const originalBodyCursor = document.body.style.cursor;
1267
+ const originalBodyUserSelect = document.body.style.userSelect;
1268
+ document.body.style.cursor = "col-resize";
1269
+ document.body.style.userSelect = "none";
1270
+ if (tableEl) {
1271
+ tableEl.style.pointerEvents = "none";
1272
+ }
1273
+ if (tableContainer) {
1274
+ tableContainer.style.overflowX = "hidden";
1275
+ }
1276
+ target.classList.add("is-resizing");
1277
+ let animationFrameId = null;
1278
+ let latestWidth = startWidth;
1279
+ const onMove = (e) => {
1280
+ e.preventDefault();
1281
+ const currentX = "touches" in e ? e.touches[0].clientX : e.clientX;
1282
+ const deltaX = currentX - startX;
1283
+ let newWidth = startWidth + deltaX;
1284
+ if (newWidth < minWidth) newWidth = minWidth;
1285
+ if (maxWidth && newWidth > maxWidth) newWidth = maxWidth;
1286
+ latestWidth = newWidth;
1287
+ if (animationFrameId === null) {
1288
+ animationFrameId = requestAnimationFrame(() => {
1289
+ if (tableEl) {
1290
+ tableEl.style.setProperty(varName, `${latestWidth}px`);
1291
+ }
1292
+ animationFrameId = null;
1293
+ });
1294
+ }
1295
+ };
1296
+ const onEnd = () => {
1297
+ document.removeEventListener("mousemove", onMove);
1298
+ document.removeEventListener("mouseup", onEnd);
1299
+ document.removeEventListener("touchmove", onMove);
1300
+ document.removeEventListener("touchend", onEnd);
1301
+ if (animationFrameId !== null) {
1302
+ cancelAnimationFrame(animationFrameId);
1303
+ }
1304
+ document.body.style.cursor = originalBodyCursor;
1305
+ document.body.style.userSelect = originalBodyUserSelect;
1306
+ if (tableEl) {
1307
+ tableEl.style.pointerEvents = "";
1308
+ }
1309
+ target.classList.remove("is-resizing");
1310
+ if (tableContainer) {
1311
+ tableContainer.style.overflowX = "";
1312
+ }
1313
+ table.setColumnSizing((old) => ({
1314
+ ...old,
1315
+ [column.id]: latestWidth
1316
+ }));
1317
+ };
1318
+ document.addEventListener("mousemove", onMove, { passive: false });
1319
+ document.addEventListener("mouseup", onEnd);
1320
+ document.addEventListener("touchmove", onMove, { passive: false });
1321
+ document.addEventListener("touchend", onEnd);
1322
+ };
1323
+ function HeaderComponent({
1324
+ table,
1325
+ enableColumnFilters = false,
1326
+ columnFilterPlaceholder = "Filter..."
1327
+ }) {
1328
+ return /* @__PURE__ */ jsx9(default23, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx9(default25, { children: headerGroup.headers.map((header) => {
1329
+ const canSort = header.column.getCanSort();
1330
+ const sorted = header.column.getIsSorted();
1331
+ const canFilter = enableColumnFilters && header.column.getCanFilter() && header.column.id !== COL_ID_ACTIONS;
1332
+ const columnSizeVar = `var(${getColumnSizeVarName(header.column.id)})`;
1333
+ const pinned = header.column.getIsPinned();
1334
+ const pinnedStyles = pinned ? {
1335
+ position: "sticky",
1336
+ zIndex: "var(--table-pinned-header-z-index)",
1337
+ backgroundColor: "var(--table-bg)",
1338
+ backgroundImage: "none",
1339
+ [pinned]: pinned === "left" ? `${header.column.getStart("left")}px` : `${header.column.getAfter("right")}px`,
1340
+ boxShadow: pinned === "left" ? "var(--table-pinned-shadow-left)" : "var(--table-pinned-shadow-right)"
1341
+ } : void 0;
1342
+ return /* @__PURE__ */ jsxs5(
1343
+ default21,
1344
+ {
1345
+ sortDirection: sorted === false ? void 0 : sorted,
1346
+ sx: {
1347
+ width: columnSizeVar,
1348
+ ...pinnedStyles
1349
+ },
1350
+ children: [
1351
+ header.isPlaceholder ? null : /* @__PURE__ */ jsxs5(default2, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 0.5, minHeight: 30 }, children: [
1352
+ /* @__PURE__ */ jsx9(default2, { sx: { minWidth: 0, pr: canFilter ? 0.5 : 0 }, children: canSort ? /* @__PURE__ */ jsx9(
1353
+ default26,
1354
+ {
1355
+ active: sorted !== false,
1356
+ direction: sorted === false ? "asc" : sorted,
1357
+ onClick: header.column.getToggleSortingHandler(),
1358
+ children: flexRender(header.column.columnDef.header, header.getContext())
1359
+ }
1360
+ ) : flexRender(header.column.columnDef.header, header.getContext()) }),
1361
+ canFilter ? /* @__PURE__ */ jsx9(
1362
+ ColumnFilterDropdown,
1363
+ {
1364
+ column: header.column,
1365
+ placeholder: columnFilterPlaceholder
1366
+ }
1367
+ ) : null
1368
+ ] }),
1369
+ header.column.getCanResize() ? /* @__PURE__ */ jsx9(
1370
+ default2,
1371
+ {
1372
+ component: "button",
1373
+ type: "button",
1374
+ "aria-label": `Resize ${header.column.id} column`,
1375
+ onDoubleClick: () => {
1376
+ header.column.resetSize();
1377
+ },
1378
+ onMouseDown: (event) => startNativeDrag(event, table, header.column),
1379
+ onTouchStart: (event) => startNativeDrag(event, table, header.column),
1380
+ onClick: (event) => {
1381
+ event.preventDefault();
1382
+ event.stopPropagation();
1383
+ },
1384
+ sx: {
1385
+ position: "absolute",
1386
+ top: 0,
1387
+ right: -6,
1388
+ height: "100%",
1389
+ width: 12,
1390
+ minWidth: 12,
1391
+ border: 0,
1392
+ p: 0,
1393
+ m: 0,
1394
+ backgroundColor: "transparent",
1395
+ cursor: "col-resize",
1396
+ touchAction: "none",
1397
+ userSelect: "none",
1398
+ "&::before": {
1399
+ content: '""',
1400
+ position: "absolute",
1401
+ top: 6,
1402
+ bottom: 6,
1403
+ left: "50%",
1404
+ width: 2,
1405
+ transform: "translateX(-50%)",
1406
+ borderRadius: "999px",
1407
+ backgroundColor: "var(--table-divider-color)",
1408
+ transition: "background-color 120ms ease, width 120ms ease"
1409
+ },
1410
+ "&:hover::before": {
1411
+ backgroundColor: "var(--table-dragger-bar-hover-color)",
1412
+ width: "var(--table-drragger-bar-hover-width)"
1413
+ },
1414
+ "&.is-resizing::before": {
1415
+ backgroundColor: "var(--table-dragger-bar-hover-color)",
1416
+ width: "var(--table-drragger-bar-hover-width)"
1417
+ }
1418
+ }
1419
+ }
1420
+ ) : null
1421
+ ]
1422
+ },
1423
+ header.id
1424
+ );
1425
+ }) }, headerGroup.id)) });
1426
+ }
1427
+ var Header = HeaderComponent;
1428
+
1429
+ // src/components/compound/Table/src/render/Body.tsx
1430
+ import React8 from "react";
1431
+ import { flexRender as flexRender2 } from "@tanstack/react-table";
1432
+
1433
+ // src/components/compound/Table/src/render/EmptyState.tsx
1434
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
1435
+ function TableEmptyState({
1436
+ message,
1437
+ description,
1438
+ filtered = false
1439
+ }) {
1440
+ const Icon = filtered ? default13 : default12;
1441
+ const resolvedDescription = description ?? (filtered ? "Try adjusting search or column filters." : null);
1442
+ return /* @__PURE__ */ jsxs6(TablePlaceholderRoot, { role: "status", children: [
1443
+ /* @__PURE__ */ jsx10(
1444
+ Icon,
1445
+ {
1446
+ "aria-hidden": true,
1447
+ sx: {
1448
+ fontSize: 40,
1449
+ color: "var(--table-empty-icon-color)"
1450
+ }
1451
+ }
1452
+ ),
1453
+ typeof message === "string" ? /* @__PURE__ */ jsx10(
1454
+ default4,
1455
+ {
1456
+ variant: "body2",
1457
+ sx: { color: "var(--table-empty-text-color)", m: 0 },
1458
+ children: message
1459
+ }
1460
+ ) : message,
1461
+ resolvedDescription ? /* @__PURE__ */ jsx10(
1462
+ default4,
1463
+ {
1464
+ variant: "caption",
1465
+ sx: { color: "var(--table-empty-description-color)", m: 0 },
1466
+ children: resolvedDescription
1467
+ }
1468
+ ) : null
1469
+ ] });
1470
+ }
1471
+
1472
+ // src/components/compound/Table/src/render/Body.tsx
1473
+ import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
1474
+ function BodyComponent({
1475
+ table,
1476
+ loading,
1477
+ emptyMessage,
1478
+ emptyDescription,
1479
+ rowActions,
1480
+ renderExpandedRow,
1481
+ onOpenFormAction,
1482
+ onRequestConfirm
1483
+ }) {
1484
+ const rowModel = table.getRowModel();
1485
+ const totalColumns = table.getVisibleLeafColumns().length;
1486
+ if (loading) {
1487
+ return /* @__PURE__ */ jsx11(default20, { children: /* @__PURE__ */ jsx11(default25, { children: /* @__PURE__ */ jsx11(default21, { colSpan: Math.max(totalColumns, 1), sx: tableEmptyCellSx, children: /* @__PURE__ */ jsx11(TablePlaceholderRoot, { role: "status", children: /* @__PURE__ */ jsx11(CircularProgress, { size: 24 }) }) }) }) });
1488
+ }
1489
+ if (rowModel.rows.length === 0) {
1490
+ const filtered = table.getPreFilteredRowModel().rows.length > 0;
1491
+ return /* @__PURE__ */ jsx11(default20, { children: /* @__PURE__ */ jsx11(default25, { children: /* @__PURE__ */ jsx11(default21, { colSpan: Math.max(totalColumns, 1), sx: tableEmptyCellSx, children: /* @__PURE__ */ jsx11(
1492
+ TableEmptyState,
1493
+ {
1494
+ message: emptyMessage,
1495
+ description: emptyDescription,
1496
+ filtered
1497
+ }
1498
+ ) }) }) });
1499
+ }
1500
+ return /* @__PURE__ */ jsx11(default20, { children: rowModel.rows.map((row) => {
1501
+ const isExpanded = row.getIsExpanded();
1502
+ return /* @__PURE__ */ jsxs7(React8.Fragment, { children: [
1503
+ /* @__PURE__ */ jsx11(default25, { hover: true, children: row.getVisibleCells().map((cell) => {
1504
+ const columnSizeVar = `var(${getColumnSizeVarName(cell.column.id)})`;
1505
+ const pinned = cell.column.getIsPinned();
1506
+ const pinnedStyles = pinned ? {
1507
+ position: "sticky",
1508
+ zIndex: "var(--table-pinned-cell-z-index)",
1509
+ backgroundColor: "var(--table-bg)",
1510
+ backgroundImage: "none",
1511
+ [pinned]: pinned === "left" ? `${cell.column.getStart("left")}px` : `${cell.column.getAfter("right")}px`,
1512
+ boxShadow: pinned === "left" ? "var(--table-pinned-shadow-left)" : "var(--table-pinned-shadow-right)"
1513
+ } : void 0;
1514
+ return /* @__PURE__ */ jsx11(
1515
+ default21,
1516
+ {
1517
+ sx: {
1518
+ width: columnSizeVar,
1519
+ ...pinnedStyles,
1520
+ ...isExpanded && renderExpandedRow ? { borderBottom: "none" } : {}
1521
+ },
1522
+ children: cell.column.id === COL_ID_ACTIONS ? row.subRows && row.subRows.length > 0 ? null : /* @__PURE__ */ jsx11(
1523
+ ActionButtons,
1524
+ {
1525
+ actions: rowActions,
1526
+ context: {
1527
+ row: row.original,
1528
+ rowIndex: row.index,
1529
+ table
1530
+ },
1531
+ onOpenFormAction,
1532
+ onRequestConfirm
1533
+ }
1534
+ ) : cell.column.id === COL_ID_CONTROLS ? flexRender2(cell.column.columnDef.cell, cell.getContext()) : cell.getIsGrouped() ? /* @__PURE__ */ jsxs7(default2, { component: "span", sx: { fontWeight: "bold" }, children: [
1535
+ flexRender2(cell.column.columnDef.cell, cell.getContext()),
1536
+ " (",
1537
+ row.subRows && row.subRows.length || 0,
1538
+ ")"
1539
+ ] }) : cell.getIsAggregated() ? flexRender2(cell.column.columnDef.aggregatedCell ?? cell.column.columnDef.cell, cell.getContext()) : cell.getIsPlaceholder() ? null : flexRender2(cell.column.columnDef.cell, cell.getContext())
1540
+ },
1541
+ cell.id
1542
+ );
1543
+ }) }),
1544
+ isExpanded && renderExpandedRow && !row.getIsGrouped() && /* @__PURE__ */ jsx11(default25, { children: /* @__PURE__ */ jsx11(
1545
+ default21,
1546
+ {
1547
+ colSpan: Math.max(totalColumns, 1),
1548
+ sx: {
1549
+ p: 0,
1550
+ width: "100%",
1551
+ backgroundColor: "var(--mui-palette-action-hover)"
1552
+ },
1553
+ children: renderExpandedRow(row.original, row.index, table)
1554
+ }
1555
+ ) })
1556
+ ] }, row.id);
1557
+ }) });
1558
+ }
1559
+ var Body = BodyComponent;
1560
+
1561
+ // src/components/compound/Table/src/render/TableContent.tsx
1562
+ import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
1563
+ function TableContent({
1564
+ table,
1565
+ bodyMaxHeight,
1566
+ dense,
1567
+ stickyHeader,
1568
+ columnSizeVars,
1569
+ enableColumnFilters,
1570
+ columnFilterPlaceholder,
1571
+ loading,
1572
+ emptyMessage,
1573
+ emptyDescription,
1574
+ rowActions,
1575
+ renderExpandedRow,
1576
+ onOpenFormAction,
1577
+ onRequestConfirm
1578
+ }) {
1579
+ return /* @__PURE__ */ jsx12(
1580
+ default22,
1581
+ {
1582
+ sx: {
1583
+ containerType: "inline-size",
1584
+ ...bodyMaxHeight ? { maxHeight: bodyMaxHeight, overflowY: "auto" } : {},
1585
+ overflowX: "auto"
1586
+ },
1587
+ children: /* @__PURE__ */ jsxs8(
1588
+ default19,
1589
+ {
1590
+ size: dense ? "small" : "medium",
1591
+ stickyHeader,
1592
+ style: columnSizeVars,
1593
+ children: [
1594
+ /* @__PURE__ */ jsx12(
1595
+ Header,
1596
+ {
1597
+ table,
1598
+ enableColumnFilters,
1599
+ columnFilterPlaceholder
1600
+ }
1601
+ ),
1602
+ /* @__PURE__ */ jsx12(
1603
+ Body,
1604
+ {
1605
+ table,
1606
+ loading,
1607
+ emptyMessage,
1608
+ emptyDescription,
1609
+ rowActions,
1610
+ renderExpandedRow,
1611
+ onOpenFormAction,
1612
+ onRequestConfirm
1613
+ }
1614
+ )
1615
+ ]
1616
+ }
1617
+ )
1618
+ }
1619
+ );
1620
+ }
1621
+
1622
+ // src/components/compound/Table/src/Table.tsx
1623
+ import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
1624
+ function TableInner(props) {
1625
+ const {
1626
+ columns,
1627
+ data,
1628
+ loading = false,
1629
+ emptyMessage = "No data found.",
1630
+ emptyDescription,
1631
+ dense = false,
1632
+ getRowId,
1633
+ rowActions = [],
1634
+ tableActions = [],
1635
+ actionColumnHeader = "Actions",
1636
+ enableFiltering = false,
1637
+ filterPlaceholder = "Filter rows...",
1638
+ enableColumnFilters = false,
1639
+ columnFilterPlaceholder = "Filter...",
1640
+ enableGrouping = false,
1641
+ enableColumnPinning = false,
1642
+ enableColumnResizing = true,
1643
+ columnResizeMode = "onChange",
1644
+ enableRowSelection = false,
1645
+ enablePagination = true,
1646
+ enableExpanding = false,
1647
+ pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,
1648
+ stickyHeader = true,
1649
+ bodyMaxHeight,
1650
+ renderExpandedRow,
1651
+ getRowCanExpand
1652
+ } = props;
1653
+ const tableState = useTableState(props);
1654
+ const { state, deferredGlobalFilter, handlers } = tableState;
1655
+ const [activeFormAction, setActiveFormAction] = React9.useState(null);
1656
+ const [confirmRequest, setConfirmRequest] = React9.useState(null);
1657
+ const handleRequestConfirm = React9.useCallback((req) => {
1658
+ setConfirmRequest(req);
1659
+ }, []);
1660
+ const handleCloseConfirm = React9.useCallback(() => {
1661
+ setConfirmRequest(null);
1662
+ }, []);
1663
+ const handleConfirm = React9.useCallback(() => {
1664
+ if (!confirmRequest) return;
1665
+ const { proceed } = confirmRequest;
1666
+ handleCloseConfirm();
1667
+ return proceed();
1668
+ }, [confirmRequest, handleCloseConfirm]);
1669
+ const columnHelper = React9.useMemo(() => createColumnHelper(), []);
1670
+ const excelColumnFilterFn = React9.useMemo(() => createExcelColumnFilterFn(), []);
1671
+ const filteredRowModel = React9.useMemo(() => getFilteredRowModel(), []);
1672
+ const facetedRowModel = React9.useMemo(() => getFacetedRowModel(), []);
1673
+ const facetedUniqueValues = React9.useMemo(() => getFacetedUniqueValues(), []);
1674
+ const groupedRowModel = React9.useMemo(() => getGroupedRowModel(), []);
1675
+ const expandedRowModel = React9.useMemo(() => getExpandedRowModel(), []);
1676
+ const paginatedRowModel = React9.useMemo(() => getPaginationRowModel(), []);
1677
+ const shouldEnableExpanding = enableExpanding || enableGrouping;
1678
+ const tableColumns = React9.useMemo(() => {
1679
+ const isExpandable = shouldEnableExpanding || !!renderExpandedRow;
1680
+ const hasControls = enableRowSelection || isExpandable;
1681
+ const controlsWidth = enableRowSelection && isExpandable ? 80 : enableRowSelection ? 48 : isExpandable ? 44 : 0;
1682
+ const controlsColumn = hasControls ? [
1683
+ columnHelper.display({
1684
+ id: COL_ID_CONTROLS,
1685
+ header: ({ table: table2 }) => /* @__PURE__ */ jsxs9(default2, { sx: { display: "flex", justifyContent: "center", alignItems: "center", width: "100%", gap: 1 }, children: [
1686
+ isExpandable && enableRowSelection ? /* @__PURE__ */ jsx13(default2, { sx: { width: 28 } }) : null,
1687
+ enableRowSelection ? /* @__PURE__ */ jsx13(
1688
+ default17,
1689
+ {
1690
+ size: "small",
1691
+ checked: enablePagination ? table2.getIsAllPageRowsSelected() : table2.getIsAllRowsSelected(),
1692
+ indeterminate: enablePagination ? table2.getIsSomePageRowsSelected() : table2.getIsSomeRowsSelected(),
1693
+ onChange: enablePagination ? table2.getToggleAllPageRowsSelectedHandler() : table2.getToggleAllRowsSelectedHandler(),
1694
+ sx: { p: 0.5 }
1695
+ }
1696
+ ) : null
1697
+ ] }),
1698
+ cell: ({ row, table: table2 }) => /* @__PURE__ */ jsx13(
1699
+ RowControlsCell,
1700
+ {
1701
+ row,
1702
+ table: table2,
1703
+ isExpandable,
1704
+ enableRowSelection,
1705
+ renderExpandedRow
1706
+ }
1707
+ ),
1708
+ enableSorting: false,
1709
+ enableColumnFilter: false,
1710
+ enableGrouping: false,
1711
+ size: controlsWidth,
1712
+ minSize: controlsWidth,
1713
+ maxSize: controlsWidth
1714
+ })
1715
+ ] : [];
1716
+ const actionColumn = rowActions.length > 0 ? [
1717
+ columnHelper.display({
1718
+ id: COL_ID_ACTIONS,
1719
+ header: () => actionColumnHeader,
1720
+ enableSorting: false,
1721
+ cell: () => null
1722
+ })
1723
+ ] : [];
1724
+ return [
1725
+ ...controlsColumn,
1726
+ ...columns,
1727
+ ...actionColumn
1728
+ ];
1729
+ }, [actionColumnHeader, columnHelper, columns, enablePagination, enableRowSelection, shouldEnableExpanding, renderExpandedRow, rowActions.length]);
1730
+ const table = useReactTable({
1731
+ data,
1732
+ columns: tableColumns,
1733
+ getRowId,
1734
+ defaultColumn: {
1735
+ filterFn: excelColumnFilterFn
1736
+ },
1737
+ state: {
1738
+ sorting: state.sorting,
1739
+ globalFilter: enableFiltering ? deferredGlobalFilter : "",
1740
+ columnFilters: enableColumnFilters ? state.columnFilters : DEFAULT_COLUMN_FILTERS,
1741
+ grouping: enableGrouping ? state.grouping : DEFAULT_GROUPING,
1742
+ rowSelection: enableRowSelection ? state.rowSelection : DEFAULT_ROW_SELECTION,
1743
+ expanded: shouldEnableExpanding ? state.expanded : {},
1744
+ pagination: enablePagination ? state.pagination : DEFAULT_PAGINATION,
1745
+ columnPinning: enableColumnPinning ? state.columnPinning : DEFAULT_COLUMN_PINNING,
1746
+ columnSizing: enableColumnResizing ? state.columnSizing : DEFAULT_COLUMN_SIZING
1747
+ },
1748
+ onSortingChange: handlers.onSortingChange,
1749
+ onGlobalFilterChange: handlers.onGlobalFilterChange,
1750
+ onColumnFiltersChange: handlers.onColumnFiltersChange,
1751
+ onGroupingChange: handlers.onGroupingChange,
1752
+ onRowSelectionChange: handlers.onRowSelectionChange,
1753
+ onExpandedChange: handlers.onExpandedChange,
1754
+ onPaginationChange: handlers.onPaginationChange,
1755
+ onColumnPinningChange: handlers.onColumnPinningChange,
1756
+ onColumnSizingChange: handlers.onColumnSizingChange,
1757
+ enableGrouping,
1758
+ enableColumnFilters,
1759
+ enableColumnPinning,
1760
+ enableColumnResizing,
1761
+ autoResetExpanded: false,
1762
+ columnResizeMode,
1763
+ enableRowSelection,
1764
+ enableExpanding: shouldEnableExpanding,
1765
+ getRowCanExpand: getRowCanExpand ?? (() => true),
1766
+ getCoreRowModel: getCoreRowModel(),
1767
+ ...enableFiltering || enableColumnFilters ? { getFilteredRowModel: filteredRowModel } : {},
1768
+ ...enableColumnFilters ? {
1769
+ getFacetedRowModel: facetedRowModel,
1770
+ getFacetedUniqueValues: facetedUniqueValues
1771
+ } : {},
1772
+ ...enableGrouping ? { getGroupedRowModel: groupedRowModel } : {},
1773
+ ...shouldEnableExpanding ? { getExpandedRowModel: expandedRowModel } : {},
1774
+ getSortedRowModel: getSortedRowModel(),
1775
+ ...enablePagination ? { getPaginationRowModel: paginatedRowModel } : {}
1776
+ });
1777
+ const columnSizeVars = React9.useMemo(() => {
1778
+ const vars = {};
1779
+ table.getVisibleLeafColumns().forEach((column) => {
1780
+ vars[getColumnSizeVarName(column.id)] = `${column.getSize()}px`;
1781
+ });
1782
+ return vars;
1783
+ }, [state.columnSizing, table]);
1784
+ const openFormAction = React9.useCallback((action, context) => {
1785
+ setActiveFormAction({ action, context });
1786
+ }, []);
1787
+ const onRequestConfirm = React9.useCallback((req) => {
1788
+ handleRequestConfirm(req);
1789
+ }, [handleRequestConfirm]);
1790
+ return /* @__PURE__ */ jsx13(TableStyledWrapper, { children: /* @__PURE__ */ jsxs9(MuiPaper, { variant: "outlined", sx: { width: "100%", overflow: "hidden" }, children: [
1791
+ /* @__PURE__ */ jsx13(
1792
+ TableToolbar,
1793
+ {
1794
+ table,
1795
+ tableActions,
1796
+ enableFiltering,
1797
+ globalFilter: state.globalFilter,
1798
+ filterPlaceholder,
1799
+ onGlobalFilterChange: handlers.onGlobalFilterChange,
1800
+ onOpenFormAction: openFormAction,
1801
+ onRequestConfirm
1802
+ }
1803
+ ),
1804
+ /* @__PURE__ */ jsx13(
1805
+ TableContent,
1806
+ {
1807
+ table,
1808
+ bodyMaxHeight,
1809
+ dense,
1810
+ stickyHeader,
1811
+ columnSizeVars,
1812
+ enableColumnFilters,
1813
+ columnFilterPlaceholder,
1814
+ loading,
1815
+ emptyMessage,
1816
+ emptyDescription,
1817
+ rowActions,
1818
+ renderExpandedRow,
1819
+ onOpenFormAction: openFormAction,
1820
+ onRequestConfirm
1821
+ }
1822
+ ),
1823
+ enablePagination ? /* @__PURE__ */ jsx13(
1824
+ PaginationControl,
1825
+ {
1826
+ count: data.length,
1827
+ pagination: state.pagination,
1828
+ pageSizeOptions,
1829
+ onChange: handlers.onPaginationChange
1830
+ }
1831
+ ) : null,
1832
+ /* @__PURE__ */ jsx13(
1833
+ ConfirmDialog,
1834
+ {
1835
+ open: Boolean(confirmRequest),
1836
+ confirm: confirmRequest?.action.confirm,
1837
+ onCancel: handleCloseConfirm,
1838
+ onConfirm: handleConfirm
1839
+ }
1840
+ ),
1841
+ /* @__PURE__ */ jsx13(
1842
+ FormActionDialog,
1843
+ {
1844
+ open: Boolean(activeFormAction),
1845
+ action: activeFormAction?.action ?? null,
1846
+ context: activeFormAction?.context ?? null,
1847
+ onClose: () => setActiveFormAction(null)
1848
+ }
1849
+ )
1850
+ ] }) });
1851
+ }
1852
+ var Table = React9.memo(TableInner);
1853
+
1854
+ // src/components/compound/Table/src/render/cell/PercentageBar.tsx
1855
+ import { useTheme } from "@mui/material";
1856
+ import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
1857
+ function PercentageBar({
1858
+ context,
1859
+ baseType = "total-sum",
1860
+ getColor
1861
+ }) {
1862
+ const value = Number(context.getValue() || 0);
1863
+ const theme = useTheme();
1864
+ let max = 0;
1865
+ if (typeof baseType === "number") {
1866
+ max = baseType;
1867
+ } else if (baseType === "total-sum") {
1868
+ max = context.table.getCoreRowModel().rows.reduce((sum, row) => sum + Number(row.getValue(context.column.id) || 0), 0);
1869
+ } else if (baseType === "max-value") {
1870
+ max = Math.max(...context.table.getCoreRowModel().rows.map((row) => Number(row.getValue(context.column.id) || 0)));
1871
+ } else if (baseType === "group-sum") {
1872
+ const parentRow = context.row.getParentRow();
1873
+ if (parentRow) {
1874
+ max = Number(parentRow.getValue(context.column.id) || 0);
1875
+ } else if (context.row.getIsGrouped()) {
1876
+ max = Number(context.row.getValue(context.column.id) || 0);
1877
+ } else {
1878
+ max = context.table.getCoreRowModel().rows.reduce((sum, row) => sum + Number(row.getValue(context.column.id) || 0), 0);
1879
+ }
1880
+ }
1881
+ const percentage = max > 0 ? Math.min(100, Math.max(0, value / max * 100)) : 0;
1882
+ const defaultGetColor = (p) => {
1883
+ if (p < 25) return theme.palette.success.main;
1884
+ if (p < 50) return theme.palette.warning.main;
1885
+ return theme.palette.error.main;
1886
+ };
1887
+ const finalColor = getColor ? getColor(percentage) : defaultGetColor(percentage);
1888
+ const tooltipTitle = `${value} / ${max} (${percentage.toFixed(1)}%)`;
1889
+ return /* @__PURE__ */ jsx14(default5, { title: tooltipTitle, arrow: true, children: /* @__PURE__ */ jsxs10(default2, { sx: { display: "flex", alignItems: "center", gap: 1, width: "100%", minWidth: 100 }, children: [
1890
+ /* @__PURE__ */ jsx14(default2, { sx: { flexGrow: 1, height: 8, bgcolor: "action.hover", borderRadius: 4, overflow: "hidden" }, children: /* @__PURE__ */ jsx14(
1891
+ default2,
1892
+ {
1893
+ sx: {
1894
+ height: "100%",
1895
+ width: `${percentage}%`,
1896
+ bgcolor: finalColor,
1897
+ transition: "width 0.3s ease, background-color 0.3s ease"
1898
+ }
1899
+ }
1900
+ ) }),
1901
+ /* @__PURE__ */ jsx14(default4, { variant: "caption", sx: { minWidth: 32, textAlign: "right", fontWeight: "medium" }, children: value })
1902
+ ] }) });
1903
+ }
1904
+ function renderPercentageBar(options) {
1905
+ return function PercentageBarRenderer(context) {
1906
+ return /* @__PURE__ */ jsx14(PercentageBar, { context, ...options });
1907
+ };
1908
+ }
1909
+
1910
+ export {
1911
+ COL_ID_CONTROLS,
1912
+ COL_ID_ACTIONS,
1913
+ TableStyledWrapper,
1914
+ tableTheme,
1915
+ tableContainerTheme,
1916
+ tableHeadTheme,
1917
+ tableSortLabelTheme,
1918
+ tableCellTheme,
1919
+ tablePaginationTheme,
1920
+ tableEmptyCellSx,
1921
+ TablePlaceholderRoot,
1922
+ Table,
1923
+ PercentageBar,
1924
+ renderPercentageBar
1925
+ };
1926
+ //# sourceMappingURL=chunk-DELCADNF.mjs.map