eidos-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +175 -0
  3. package/dist/Breadcrumb.types-DaykU-C8.d.cts +20 -0
  4. package/dist/Breadcrumb.types-DaykU-C8.d.ts +20 -0
  5. package/dist/Button.types-BH0CPyPx.d.ts +33 -0
  6. package/dist/Button.types-DZRCVqyN.d.cts +33 -0
  7. package/dist/CommandPalette.types-DRMMS_ev.d.cts +73 -0
  8. package/dist/CommandPalette.types-DRMMS_ev.d.ts +73 -0
  9. package/dist/Footer.types-Dv2TPN2J.d.cts +24 -0
  10. package/dist/Footer.types-Dv2TPN2J.d.ts +24 -0
  11. package/dist/Header.types-BZi80bWz.d.cts +17 -0
  12. package/dist/Header.types-DJt-q01P.d.ts +17 -0
  13. package/dist/Input.types-DFZNyJGF.d.cts +45 -0
  14. package/dist/Input.types-XrJTI0JC.d.ts +45 -0
  15. package/dist/Menu.types-DNIpjSAK.d.ts +49 -0
  16. package/dist/Menu.types-DwcuCZM7.d.cts +49 -0
  17. package/dist/Navigation.types-Ctu5mlTa.d.cts +94 -0
  18. package/dist/Navigation.types-DVcLJnrB.d.ts +94 -0
  19. package/dist/Table.types-Bv9l7qxd.d.ts +103 -0
  20. package/dist/Table.types-DQ0ReOLj.d.cts +103 -0
  21. package/dist/Toolbar.types-BGD57Uhm.d.ts +22 -0
  22. package/dist/Toolbar.types-tQkLmPIu.d.cts +22 -0
  23. package/dist/accordion/index.cjs +10 -0
  24. package/dist/accordion/index.cjs.map +1 -0
  25. package/dist/accordion/index.d.cts +39 -0
  26. package/dist/accordion/index.d.ts +39 -0
  27. package/dist/accordion/index.js +10 -0
  28. package/dist/accordion/index.js.map +1 -0
  29. package/dist/alert/index.cjs +12 -0
  30. package/dist/alert/index.cjs.map +1 -0
  31. package/dist/alert/index.d.cts +29 -0
  32. package/dist/alert/index.d.ts +29 -0
  33. package/dist/alert/index.js +12 -0
  34. package/dist/alert/index.js.map +1 -0
  35. package/dist/avatar/index.cjs +10 -0
  36. package/dist/avatar/index.cjs.map +1 -0
  37. package/dist/avatar/index.d.cts +26 -0
  38. package/dist/avatar/index.d.ts +26 -0
  39. package/dist/avatar/index.js +10 -0
  40. package/dist/avatar/index.js.map +1 -0
  41. package/dist/badge/index.cjs +8 -0
  42. package/dist/badge/index.cjs.map +1 -0
  43. package/dist/badge/index.d.cts +27 -0
  44. package/dist/badge/index.d.ts +27 -0
  45. package/dist/badge/index.js +8 -0
  46. package/dist/badge/index.js.map +1 -0
  47. package/dist/breadcrumb/index.cjs +8 -0
  48. package/dist/breadcrumb/index.cjs.map +1 -0
  49. package/dist/breadcrumb/index.d.cts +7 -0
  50. package/dist/breadcrumb/index.d.ts +7 -0
  51. package/dist/breadcrumb/index.js +8 -0
  52. package/dist/breadcrumb/index.js.map +1 -0
  53. package/dist/button/index.cjs +14 -0
  54. package/dist/button/index.cjs.map +1 -0
  55. package/dist/button/index.d.cts +21 -0
  56. package/dist/button/index.d.ts +21 -0
  57. package/dist/button/index.js +14 -0
  58. package/dist/button/index.js.map +1 -0
  59. package/dist/button-group/index.cjs +8 -0
  60. package/dist/button-group/index.cjs.map +1 -0
  61. package/dist/button-group/index.d.cts +46 -0
  62. package/dist/button-group/index.d.ts +46 -0
  63. package/dist/button-group/index.js +8 -0
  64. package/dist/button-group/index.js.map +1 -0
  65. package/dist/card/index.cjs +8 -0
  66. package/dist/card/index.cjs.map +1 -0
  67. package/dist/card/index.d.cts +18 -0
  68. package/dist/card/index.d.ts +18 -0
  69. package/dist/card/index.js +8 -0
  70. package/dist/card/index.js.map +1 -0
  71. package/dist/checkbox/index.cjs +9 -0
  72. package/dist/checkbox/index.cjs.map +1 -0
  73. package/dist/checkbox/index.d.cts +16 -0
  74. package/dist/checkbox/index.d.ts +16 -0
  75. package/dist/checkbox/index.js +9 -0
  76. package/dist/checkbox/index.js.map +1 -0
  77. package/dist/chip/index.cjs +11 -0
  78. package/dist/chip/index.cjs.map +1 -0
  79. package/dist/chip/index.d.cts +27 -0
  80. package/dist/chip/index.d.ts +27 -0
  81. package/dist/chip/index.js +11 -0
  82. package/dist/chip/index.js.map +1 -0
  83. package/dist/chunk-2HTBZGBP.cjs +113 -0
  84. package/dist/chunk-2HTBZGBP.cjs.map +1 -0
  85. package/dist/chunk-2JWY36LD.cjs +112 -0
  86. package/dist/chunk-2JWY36LD.cjs.map +1 -0
  87. package/dist/chunk-2YQE26EK.js +54 -0
  88. package/dist/chunk-2YQE26EK.js.map +1 -0
  89. package/dist/chunk-2ZWBN3LK.cjs +92 -0
  90. package/dist/chunk-2ZWBN3LK.cjs.map +1 -0
  91. package/dist/chunk-3ETWFS2N.cjs +40 -0
  92. package/dist/chunk-3ETWFS2N.cjs.map +1 -0
  93. package/dist/chunk-3KAR5KCS.cjs +47 -0
  94. package/dist/chunk-3KAR5KCS.cjs.map +1 -0
  95. package/dist/chunk-3RUIKBH4.cjs +1 -0
  96. package/dist/chunk-3RUIKBH4.cjs.map +1 -0
  97. package/dist/chunk-3SKI6FXB.js +40 -0
  98. package/dist/chunk-3SKI6FXB.js.map +1 -0
  99. package/dist/chunk-3YPTYI7R.js +194 -0
  100. package/dist/chunk-3YPTYI7R.js.map +1 -0
  101. package/dist/chunk-4NUZP66U.js +299 -0
  102. package/dist/chunk-4NUZP66U.js.map +1 -0
  103. package/dist/chunk-5D3LIJYW.cjs +299 -0
  104. package/dist/chunk-5D3LIJYW.cjs.map +1 -0
  105. package/dist/chunk-5QG2I3FK.cjs +169 -0
  106. package/dist/chunk-5QG2I3FK.cjs.map +1 -0
  107. package/dist/chunk-5TGBNYZK.cjs +11 -0
  108. package/dist/chunk-5TGBNYZK.cjs.map +1 -0
  109. package/dist/chunk-5WRI5ZAA.js +31 -0
  110. package/dist/chunk-5WRI5ZAA.js.map +1 -0
  111. package/dist/chunk-63N2KZZX.cjs +54 -0
  112. package/dist/chunk-63N2KZZX.cjs.map +1 -0
  113. package/dist/chunk-66R54X6R.js +1 -0
  114. package/dist/chunk-66R54X6R.js.map +1 -0
  115. package/dist/chunk-6NZXWKUE.js +1 -0
  116. package/dist/chunk-6NZXWKUE.js.map +1 -0
  117. package/dist/chunk-6P4WYB3B.js +169 -0
  118. package/dist/chunk-6P4WYB3B.js.map +1 -0
  119. package/dist/chunk-6QFT3BUD.cjs +28 -0
  120. package/dist/chunk-6QFT3BUD.cjs.map +1 -0
  121. package/dist/chunk-6USUVU6J.js +26 -0
  122. package/dist/chunk-6USUVU6J.js.map +1 -0
  123. package/dist/chunk-73EKJU4G.js +11 -0
  124. package/dist/chunk-73EKJU4G.js.map +1 -0
  125. package/dist/chunk-7IOOFKG3.js +26 -0
  126. package/dist/chunk-7IOOFKG3.js.map +1 -0
  127. package/dist/chunk-7KGV6YCG.cjs +54 -0
  128. package/dist/chunk-7KGV6YCG.cjs.map +1 -0
  129. package/dist/chunk-7NZTRSMT.js +1484 -0
  130. package/dist/chunk-7NZTRSMT.js.map +1 -0
  131. package/dist/chunk-7R7IFWGB.cjs +86 -0
  132. package/dist/chunk-7R7IFWGB.cjs.map +1 -0
  133. package/dist/chunk-A35Y5MRJ.js +235 -0
  134. package/dist/chunk-A35Y5MRJ.js.map +1 -0
  135. package/dist/chunk-AOV32YBE.js +113 -0
  136. package/dist/chunk-AOV32YBE.js.map +1 -0
  137. package/dist/chunk-AUFCW7QU.cjs +526 -0
  138. package/dist/chunk-AUFCW7QU.cjs.map +1 -0
  139. package/dist/chunk-BFYSYUA6.cjs +125 -0
  140. package/dist/chunk-BFYSYUA6.cjs.map +1 -0
  141. package/dist/chunk-BTPCSBGP.js +1622 -0
  142. package/dist/chunk-BTPCSBGP.js.map +1 -0
  143. package/dist/chunk-C7F2VFAI.cjs +259 -0
  144. package/dist/chunk-C7F2VFAI.cjs.map +1 -0
  145. package/dist/chunk-CDV2OAS3.cjs +235 -0
  146. package/dist/chunk-CDV2OAS3.cjs.map +1 -0
  147. package/dist/chunk-CJUZDUXW.cjs +79 -0
  148. package/dist/chunk-CJUZDUXW.cjs.map +1 -0
  149. package/dist/chunk-CKH36D7H.js +28 -0
  150. package/dist/chunk-CKH36D7H.js.map +1 -0
  151. package/dist/chunk-D7PGZ3M3.cjs +117 -0
  152. package/dist/chunk-D7PGZ3M3.cjs.map +1 -0
  153. package/dist/chunk-DFADZZ3K.js +126 -0
  154. package/dist/chunk-DFADZZ3K.js.map +1 -0
  155. package/dist/chunk-DI2VKKLW.js +1 -0
  156. package/dist/chunk-DI2VKKLW.js.map +1 -0
  157. package/dist/chunk-DK4S3EHG.js +29 -0
  158. package/dist/chunk-DK4S3EHG.js.map +1 -0
  159. package/dist/chunk-DZUJEN5N.cjs +31 -0
  160. package/dist/chunk-DZUJEN5N.cjs.map +1 -0
  161. package/dist/chunk-E2B33QB7.js +97 -0
  162. package/dist/chunk-E2B33QB7.js.map +1 -0
  163. package/dist/chunk-E3XATJ63.js +4418 -0
  164. package/dist/chunk-E3XATJ63.js.map +1 -0
  165. package/dist/chunk-EACNRR3C.cjs +1 -0
  166. package/dist/chunk-EACNRR3C.cjs.map +1 -0
  167. package/dist/chunk-EQ6BNPTL.cjs +39 -0
  168. package/dist/chunk-EQ6BNPTL.cjs.map +1 -0
  169. package/dist/chunk-F54MVGKO.js +342 -0
  170. package/dist/chunk-F54MVGKO.js.map +1 -0
  171. package/dist/chunk-FNUOTM44.cjs +238 -0
  172. package/dist/chunk-FNUOTM44.cjs.map +1 -0
  173. package/dist/chunk-FO5FNTJX.js +69 -0
  174. package/dist/chunk-FO5FNTJX.js.map +1 -0
  175. package/dist/chunk-FQZ6F7FQ.cjs +1 -0
  176. package/dist/chunk-FQZ6F7FQ.cjs.map +1 -0
  177. package/dist/chunk-G2FANEA2.cjs +101 -0
  178. package/dist/chunk-G2FANEA2.cjs.map +1 -0
  179. package/dist/chunk-G36S5CWN.cjs +26 -0
  180. package/dist/chunk-G36S5CWN.cjs.map +1 -0
  181. package/dist/chunk-GI7WPGP2.cjs +454 -0
  182. package/dist/chunk-GI7WPGP2.cjs.map +1 -0
  183. package/dist/chunk-GL4DHGQE.js +1316 -0
  184. package/dist/chunk-GL4DHGQE.js.map +1 -0
  185. package/dist/chunk-GOVOQZYN.js +18 -0
  186. package/dist/chunk-GOVOQZYN.js.map +1 -0
  187. package/dist/chunk-GRH57M3E.js +88 -0
  188. package/dist/chunk-GRH57M3E.js.map +1 -0
  189. package/dist/chunk-H523JFY2.js +303 -0
  190. package/dist/chunk-H523JFY2.js.map +1 -0
  191. package/dist/chunk-H56YUMFB.cjs +1622 -0
  192. package/dist/chunk-H56YUMFB.cjs.map +1 -0
  193. package/dist/chunk-HO7P6IJO.js +238 -0
  194. package/dist/chunk-HO7P6IJO.js.map +1 -0
  195. package/dist/chunk-HPIBYEGE.cjs +1484 -0
  196. package/dist/chunk-HPIBYEGE.cjs.map +1 -0
  197. package/dist/chunk-HQ4KZRFH.js +67 -0
  198. package/dist/chunk-HQ4KZRFH.js.map +1 -0
  199. package/dist/chunk-HUNMRKGE.js +21 -0
  200. package/dist/chunk-HUNMRKGE.js.map +1 -0
  201. package/dist/chunk-I44YNYI6.cjs +1 -0
  202. package/dist/chunk-I44YNYI6.cjs.map +1 -0
  203. package/dist/chunk-I6UOIS4J.cjs +1 -0
  204. package/dist/chunk-I6UOIS4J.cjs.map +1 -0
  205. package/dist/chunk-ICJ3SV5I.cjs +183 -0
  206. package/dist/chunk-ICJ3SV5I.cjs.map +1 -0
  207. package/dist/chunk-IYQX7PBO.cjs +320 -0
  208. package/dist/chunk-IYQX7PBO.cjs.map +1 -0
  209. package/dist/chunk-JFA5ABVE.js +54 -0
  210. package/dist/chunk-JFA5ABVE.js.map +1 -0
  211. package/dist/chunk-JORQYNJD.js +79 -0
  212. package/dist/chunk-JORQYNJD.js.map +1 -0
  213. package/dist/chunk-K5TKNT6I.cjs +34 -0
  214. package/dist/chunk-K5TKNT6I.cjs.map +1 -0
  215. package/dist/chunk-KF64C4QI.js +138 -0
  216. package/dist/chunk-KF64C4QI.js.map +1 -0
  217. package/dist/chunk-KGXGTWUL.js +1 -0
  218. package/dist/chunk-KGXGTWUL.js.map +1 -0
  219. package/dist/chunk-KKOZX64Z.js +34 -0
  220. package/dist/chunk-KKOZX64Z.js.map +1 -0
  221. package/dist/chunk-KO2MKZDW.cjs +69 -0
  222. package/dist/chunk-KO2MKZDW.cjs.map +1 -0
  223. package/dist/chunk-KQKJVFYF.js +259 -0
  224. package/dist/chunk-KQKJVFYF.js.map +1 -0
  225. package/dist/chunk-KV2FG7AN.cjs +401 -0
  226. package/dist/chunk-KV2FG7AN.cjs.map +1 -0
  227. package/dist/chunk-L3UPSLJ5.cjs +4418 -0
  228. package/dist/chunk-L3UPSLJ5.cjs.map +1 -0
  229. package/dist/chunk-LEZ4HSBD.cjs +744 -0
  230. package/dist/chunk-LEZ4HSBD.cjs.map +1 -0
  231. package/dist/chunk-LQ3C3OR2.js +21 -0
  232. package/dist/chunk-LQ3C3OR2.js.map +1 -0
  233. package/dist/chunk-LTOHGCU4.cjs +69 -0
  234. package/dist/chunk-LTOHGCU4.cjs.map +1 -0
  235. package/dist/chunk-M56IGNH7.cjs +125 -0
  236. package/dist/chunk-M56IGNH7.cjs.map +1 -0
  237. package/dist/chunk-MOX6LYGC.js +125 -0
  238. package/dist/chunk-MOX6LYGC.js.map +1 -0
  239. package/dist/chunk-MSQXPGOD.cjs +125 -0
  240. package/dist/chunk-MSQXPGOD.cjs.map +1 -0
  241. package/dist/chunk-N5JDL4VE.js +1 -0
  242. package/dist/chunk-N5JDL4VE.js.map +1 -0
  243. package/dist/chunk-N7HX5635.cjs +138 -0
  244. package/dist/chunk-N7HX5635.cjs.map +1 -0
  245. package/dist/chunk-NDLMU6HJ.js +744 -0
  246. package/dist/chunk-NDLMU6HJ.js.map +1 -0
  247. package/dist/chunk-O5ZPSZNY.cjs +88 -0
  248. package/dist/chunk-O5ZPSZNY.cjs.map +1 -0
  249. package/dist/chunk-O6B4KB4D.js +125 -0
  250. package/dist/chunk-O6B4KB4D.js.map +1 -0
  251. package/dist/chunk-OHUVWPFJ.js +86 -0
  252. package/dist/chunk-OHUVWPFJ.js.map +1 -0
  253. package/dist/chunk-OT3VZLN4.js +117 -0
  254. package/dist/chunk-OT3VZLN4.js.map +1 -0
  255. package/dist/chunk-OVYIBDGE.js +183 -0
  256. package/dist/chunk-OVYIBDGE.js.map +1 -0
  257. package/dist/chunk-P2BTQ33C.cjs +126 -0
  258. package/dist/chunk-P2BTQ33C.cjs.map +1 -0
  259. package/dist/chunk-P6ZBENAG.js +211 -0
  260. package/dist/chunk-P6ZBENAG.js.map +1 -0
  261. package/dist/chunk-P74HNSNJ.cjs +106 -0
  262. package/dist/chunk-P74HNSNJ.cjs.map +1 -0
  263. package/dist/chunk-PEPYVWGY.cjs +327 -0
  264. package/dist/chunk-PEPYVWGY.cjs.map +1 -0
  265. package/dist/chunk-POX6JZLO.cjs +67 -0
  266. package/dist/chunk-POX6JZLO.cjs.map +1 -0
  267. package/dist/chunk-PWIA4XQD.js +320 -0
  268. package/dist/chunk-PWIA4XQD.js.map +1 -0
  269. package/dist/chunk-QGZF5MOS.cjs +342 -0
  270. package/dist/chunk-QGZF5MOS.cjs.map +1 -0
  271. package/dist/chunk-QP2A5ZMK.cjs +18 -0
  272. package/dist/chunk-QP2A5ZMK.cjs.map +1 -0
  273. package/dist/chunk-QYHTMEI5.js +92 -0
  274. package/dist/chunk-QYHTMEI5.js.map +1 -0
  275. package/dist/chunk-QYK4ECSZ.js +69 -0
  276. package/dist/chunk-QYK4ECSZ.js.map +1 -0
  277. package/dist/chunk-R36SGSJX.cjs +26 -0
  278. package/dist/chunk-R36SGSJX.cjs.map +1 -0
  279. package/dist/chunk-R5QPUQSI.cjs +303 -0
  280. package/dist/chunk-R5QPUQSI.cjs.map +1 -0
  281. package/dist/chunk-R5UNLPQZ.cjs +103 -0
  282. package/dist/chunk-R5UNLPQZ.cjs.map +1 -0
  283. package/dist/chunk-RSBQNIJZ.js +199 -0
  284. package/dist/chunk-RSBQNIJZ.js.map +1 -0
  285. package/dist/chunk-S25WB7KJ.js +50 -0
  286. package/dist/chunk-S25WB7KJ.js.map +1 -0
  287. package/dist/chunk-SAFSEXMU.cjs +211 -0
  288. package/dist/chunk-SAFSEXMU.cjs.map +1 -0
  289. package/dist/chunk-SJDTFR3I.cjs +1 -0
  290. package/dist/chunk-SJDTFR3I.cjs.map +1 -0
  291. package/dist/chunk-SOGUWOSQ.cjs +21 -0
  292. package/dist/chunk-SOGUWOSQ.cjs.map +1 -0
  293. package/dist/chunk-SWPZ3HFY.cjs +1 -0
  294. package/dist/chunk-SWPZ3HFY.cjs.map +1 -0
  295. package/dist/chunk-SXF3TCYA.js +401 -0
  296. package/dist/chunk-SXF3TCYA.js.map +1 -0
  297. package/dist/chunk-T56K5IKQ.js +526 -0
  298. package/dist/chunk-T56K5IKQ.js.map +1 -0
  299. package/dist/chunk-TBMVUI7S.cjs +21 -0
  300. package/dist/chunk-TBMVUI7S.cjs.map +1 -0
  301. package/dist/chunk-TCX3QKF3.js +103 -0
  302. package/dist/chunk-TCX3QKF3.js.map +1 -0
  303. package/dist/chunk-TH3ITGUM.js +1 -0
  304. package/dist/chunk-TH3ITGUM.js.map +1 -0
  305. package/dist/chunk-TPNCV7KA.js +1 -0
  306. package/dist/chunk-TPNCV7KA.js.map +1 -0
  307. package/dist/chunk-TQCNQKWF.cjs +194 -0
  308. package/dist/chunk-TQCNQKWF.cjs.map +1 -0
  309. package/dist/chunk-TZWNX7FF.js +1 -0
  310. package/dist/chunk-TZWNX7FF.js.map +1 -0
  311. package/dist/chunk-UEJSRMU2.js +39 -0
  312. package/dist/chunk-UEJSRMU2.js.map +1 -0
  313. package/dist/chunk-UTENJWSE.cjs +21 -0
  314. package/dist/chunk-UTENJWSE.cjs.map +1 -0
  315. package/dist/chunk-V5JNYS77.cjs +29 -0
  316. package/dist/chunk-V5JNYS77.cjs.map +1 -0
  317. package/dist/chunk-VFYG7GAH.js +327 -0
  318. package/dist/chunk-VFYG7GAH.js.map +1 -0
  319. package/dist/chunk-VGYJ4VKX.cjs +62 -0
  320. package/dist/chunk-VGYJ4VKX.cjs.map +1 -0
  321. package/dist/chunk-VLC2OZV3.cjs +50 -0
  322. package/dist/chunk-VLC2OZV3.cjs.map +1 -0
  323. package/dist/chunk-VTAABT55.js +47 -0
  324. package/dist/chunk-VTAABT55.js.map +1 -0
  325. package/dist/chunk-VW32UTUE.cjs +1 -0
  326. package/dist/chunk-VW32UTUE.cjs.map +1 -0
  327. package/dist/chunk-VYV45YOK.cjs +1316 -0
  328. package/dist/chunk-VYV45YOK.cjs.map +1 -0
  329. package/dist/chunk-VZ43OLU6.cjs +97 -0
  330. package/dist/chunk-VZ43OLU6.cjs.map +1 -0
  331. package/dist/chunk-XJAXKENE.cjs +1 -0
  332. package/dist/chunk-XJAXKENE.cjs.map +1 -0
  333. package/dist/chunk-XJBMEDQ5.js +101 -0
  334. package/dist/chunk-XJBMEDQ5.js.map +1 -0
  335. package/dist/chunk-XMRMCWSQ.js +454 -0
  336. package/dist/chunk-XMRMCWSQ.js.map +1 -0
  337. package/dist/chunk-XSGUFMT4.js +21 -0
  338. package/dist/chunk-XSGUFMT4.js.map +1 -0
  339. package/dist/chunk-XUZOU2EB.js +1 -0
  340. package/dist/chunk-XUZOU2EB.js.map +1 -0
  341. package/dist/chunk-YCUT6NQ4.js +106 -0
  342. package/dist/chunk-YCUT6NQ4.js.map +1 -0
  343. package/dist/chunk-YLKESEHQ.cjs +199 -0
  344. package/dist/chunk-YLKESEHQ.cjs.map +1 -0
  345. package/dist/chunk-YPK7RV3Y.js +62 -0
  346. package/dist/chunk-YPK7RV3Y.js.map +1 -0
  347. package/dist/chunk-Z7S4UQKY.js +125 -0
  348. package/dist/chunk-Z7S4UQKY.js.map +1 -0
  349. package/dist/chunk-ZBGTVTQJ.js +112 -0
  350. package/dist/chunk-ZBGTVTQJ.js.map +1 -0
  351. package/dist/color-picker/index.cjs +9 -0
  352. package/dist/color-picker/index.cjs.map +1 -0
  353. package/dist/color-picker/index.d.cts +40 -0
  354. package/dist/color-picker/index.d.ts +40 -0
  355. package/dist/color-picker/index.js +9 -0
  356. package/dist/color-picker/index.js.map +1 -0
  357. package/dist/combobox/index.cjs +12 -0
  358. package/dist/combobox/index.cjs.map +1 -0
  359. package/dist/combobox/index.d.cts +37 -0
  360. package/dist/combobox/index.d.ts +37 -0
  361. package/dist/combobox/index.js +12 -0
  362. package/dist/combobox/index.js.map +1 -0
  363. package/dist/command-palette/index.cjs +10 -0
  364. package/dist/command-palette/index.cjs.map +1 -0
  365. package/dist/command-palette/index.d.cts +7 -0
  366. package/dist/command-palette/index.d.ts +7 -0
  367. package/dist/command-palette/index.js +10 -0
  368. package/dist/command-palette/index.js.map +1 -0
  369. package/dist/context-menu/index.cjs +13 -0
  370. package/dist/context-menu/index.cjs.map +1 -0
  371. package/dist/context-menu/index.d.cts +38 -0
  372. package/dist/context-menu/index.d.ts +38 -0
  373. package/dist/context-menu/index.js +13 -0
  374. package/dist/context-menu/index.js.map +1 -0
  375. package/dist/data-grid/index.cjs +28 -0
  376. package/dist/data-grid/index.cjs.map +1 -0
  377. package/dist/data-grid/index.d.cts +217 -0
  378. package/dist/data-grid/index.d.ts +217 -0
  379. package/dist/data-grid/index.js +28 -0
  380. package/dist/data-grid/index.js.map +1 -0
  381. package/dist/date-picker/index.cjs +19 -0
  382. package/dist/date-picker/index.cjs.map +1 -0
  383. package/dist/date-picker/index.d.cts +106 -0
  384. package/dist/date-picker/index.d.ts +106 -0
  385. package/dist/date-picker/index.js +19 -0
  386. package/dist/date-picker/index.js.map +1 -0
  387. package/dist/divider/index.cjs +8 -0
  388. package/dist/divider/index.cjs.map +1 -0
  389. package/dist/divider/index.d.cts +9 -0
  390. package/dist/divider/index.d.ts +9 -0
  391. package/dist/divider/index.js +8 -0
  392. package/dist/divider/index.js.map +1 -0
  393. package/dist/drawer/index.cjs +13 -0
  394. package/dist/drawer/index.cjs.map +1 -0
  395. package/dist/drawer/index.d.cts +39 -0
  396. package/dist/drawer/index.d.ts +39 -0
  397. package/dist/drawer/index.js +13 -0
  398. package/dist/drawer/index.js.map +1 -0
  399. package/dist/dropdown/index.cjs +13 -0
  400. package/dist/dropdown/index.cjs.map +1 -0
  401. package/dist/dropdown/index.d.cts +66 -0
  402. package/dist/dropdown/index.d.ts +66 -0
  403. package/dist/dropdown/index.js +13 -0
  404. package/dist/dropdown/index.js.map +1 -0
  405. package/dist/empty-state/index.cjs +8 -0
  406. package/dist/empty-state/index.cjs.map +1 -0
  407. package/dist/empty-state/index.d.cts +20 -0
  408. package/dist/empty-state/index.d.ts +20 -0
  409. package/dist/empty-state/index.js +8 -0
  410. package/dist/empty-state/index.js.map +1 -0
  411. package/dist/file-upload/index.cjs +8 -0
  412. package/dist/file-upload/index.cjs.map +1 -0
  413. package/dist/file-upload/index.d.cts +27 -0
  414. package/dist/file-upload/index.d.ts +27 -0
  415. package/dist/file-upload/index.js +8 -0
  416. package/dist/file-upload/index.js.map +1 -0
  417. package/dist/footer/index.cjs +8 -0
  418. package/dist/footer/index.cjs.map +1 -0
  419. package/dist/footer/index.d.cts +7 -0
  420. package/dist/footer/index.d.ts +7 -0
  421. package/dist/footer/index.js +8 -0
  422. package/dist/footer/index.js.map +1 -0
  423. package/dist/header/index.cjs +13 -0
  424. package/dist/header/index.cjs.map +1 -0
  425. package/dist/header/index.d.cts +10 -0
  426. package/dist/header/index.d.ts +10 -0
  427. package/dist/header/index.js +13 -0
  428. package/dist/header/index.js.map +1 -0
  429. package/dist/index.cjs +269 -0
  430. package/dist/index.cjs.map +1 -0
  431. package/dist/index.css +8895 -0
  432. package/dist/index.css.d.ts +2 -0
  433. package/dist/index.d.cts +69 -0
  434. package/dist/index.d.ts +69 -0
  435. package/dist/index.js +269 -0
  436. package/dist/index.js.map +1 -0
  437. package/dist/inline-edit/index.cjs +11 -0
  438. package/dist/inline-edit/index.cjs.map +1 -0
  439. package/dist/inline-edit/index.d.cts +56 -0
  440. package/dist/inline-edit/index.d.ts +56 -0
  441. package/dist/inline-edit/index.js +11 -0
  442. package/dist/inline-edit/index.js.map +1 -0
  443. package/dist/input/index.cjs +11 -0
  444. package/dist/input/index.cjs.map +1 -0
  445. package/dist/input/index.d.cts +9 -0
  446. package/dist/input/index.d.ts +9 -0
  447. package/dist/input/index.js +11 -0
  448. package/dist/input/index.js.map +1 -0
  449. package/dist/kbd/index.cjs +9 -0
  450. package/dist/kbd/index.cjs.map +1 -0
  451. package/dist/kbd/index.d.cts +34 -0
  452. package/dist/kbd/index.d.ts +34 -0
  453. package/dist/kbd/index.js +9 -0
  454. package/dist/kbd/index.js.map +1 -0
  455. package/dist/menu/index.cjs +14 -0
  456. package/dist/menu/index.cjs.map +1 -0
  457. package/dist/menu/index.d.cts +14 -0
  458. package/dist/menu/index.d.ts +14 -0
  459. package/dist/menu/index.js +14 -0
  460. package/dist/menu/index.js.map +1 -0
  461. package/dist/modal/index.cjs +12 -0
  462. package/dist/modal/index.cjs.map +1 -0
  463. package/dist/modal/index.d.cts +34 -0
  464. package/dist/modal/index.d.ts +34 -0
  465. package/dist/modal/index.js +12 -0
  466. package/dist/modal/index.js.map +1 -0
  467. package/dist/navigation/index.cjs +14 -0
  468. package/dist/navigation/index.cjs.map +1 -0
  469. package/dist/navigation/index.d.cts +8 -0
  470. package/dist/navigation/index.d.ts +8 -0
  471. package/dist/navigation/index.js +14 -0
  472. package/dist/navigation/index.js.map +1 -0
  473. package/dist/number-input/index.cjs +8 -0
  474. package/dist/number-input/index.cjs.map +1 -0
  475. package/dist/number-input/index.d.cts +31 -0
  476. package/dist/number-input/index.d.ts +31 -0
  477. package/dist/number-input/index.js +8 -0
  478. package/dist/number-input/index.js.map +1 -0
  479. package/dist/o-t-p-input/index.cjs +8 -0
  480. package/dist/o-t-p-input/index.cjs.map +1 -0
  481. package/dist/o-t-p-input/index.d.cts +33 -0
  482. package/dist/o-t-p-input/index.d.ts +33 -0
  483. package/dist/o-t-p-input/index.js +8 -0
  484. package/dist/o-t-p-input/index.js.map +1 -0
  485. package/dist/page-layout/index.cjs +24 -0
  486. package/dist/page-layout/index.cjs.map +1 -0
  487. package/dist/page-layout/index.d.cts +28 -0
  488. package/dist/page-layout/index.d.ts +28 -0
  489. package/dist/page-layout/index.js +24 -0
  490. package/dist/page-layout/index.js.map +1 -0
  491. package/dist/pagination/index.cjs +17 -0
  492. package/dist/pagination/index.cjs.map +1 -0
  493. package/dist/pagination/index.d.cts +34 -0
  494. package/dist/pagination/index.d.ts +34 -0
  495. package/dist/pagination/index.js +17 -0
  496. package/dist/pagination/index.js.map +1 -0
  497. package/dist/pill/index.cjs +8 -0
  498. package/dist/pill/index.cjs.map +1 -0
  499. package/dist/pill/index.d.cts +20 -0
  500. package/dist/pill/index.d.ts +20 -0
  501. package/dist/pill/index.js +8 -0
  502. package/dist/pill/index.js.map +1 -0
  503. package/dist/popover/index.cjs +8 -0
  504. package/dist/popover/index.cjs.map +1 -0
  505. package/dist/popover/index.d.cts +35 -0
  506. package/dist/popover/index.d.ts +35 -0
  507. package/dist/popover/index.js +8 -0
  508. package/dist/popover/index.js.map +1 -0
  509. package/dist/progress/index.cjs +8 -0
  510. package/dist/progress/index.cjs.map +1 -0
  511. package/dist/progress/index.d.cts +18 -0
  512. package/dist/progress/index.d.ts +18 -0
  513. package/dist/progress/index.js +8 -0
  514. package/dist/progress/index.js.map +1 -0
  515. package/dist/radio/index.cjs +10 -0
  516. package/dist/radio/index.cjs.map +1 -0
  517. package/dist/radio/index.d.cts +33 -0
  518. package/dist/radio/index.d.ts +33 -0
  519. package/dist/radio/index.js +10 -0
  520. package/dist/radio/index.js.map +1 -0
  521. package/dist/renderIcon-C2lEMMzb.d.cts +30 -0
  522. package/dist/renderIcon-C2lEMMzb.d.ts +30 -0
  523. package/dist/segmented-control/index.cjs +11 -0
  524. package/dist/segmented-control/index.cjs.map +1 -0
  525. package/dist/segmented-control/index.d.cts +70 -0
  526. package/dist/segmented-control/index.d.ts +70 -0
  527. package/dist/segmented-control/index.js +11 -0
  528. package/dist/segmented-control/index.js.map +1 -0
  529. package/dist/select/index.cjs +13 -0
  530. package/dist/select/index.cjs.map +1 -0
  531. package/dist/select/index.d.cts +46 -0
  532. package/dist/select/index.d.ts +46 -0
  533. package/dist/select/index.js +13 -0
  534. package/dist/select/index.js.map +1 -0
  535. package/dist/sizes-DM6Rrrgq.d.cts +11 -0
  536. package/dist/sizes-DM6Rrrgq.d.ts +11 -0
  537. package/dist/skeleton/index.cjs +8 -0
  538. package/dist/skeleton/index.cjs.map +1 -0
  539. package/dist/skeleton/index.d.cts +14 -0
  540. package/dist/skeleton/index.d.ts +14 -0
  541. package/dist/skeleton/index.js +8 -0
  542. package/dist/skeleton/index.js.map +1 -0
  543. package/dist/slider/index.cjs +8 -0
  544. package/dist/slider/index.cjs.map +1 -0
  545. package/dist/slider/index.d.cts +37 -0
  546. package/dist/slider/index.d.ts +37 -0
  547. package/dist/slider/index.js +8 -0
  548. package/dist/slider/index.js.map +1 -0
  549. package/dist/snackbar/index.cjs +18 -0
  550. package/dist/snackbar/index.cjs.map +1 -0
  551. package/dist/snackbar/index.d.cts +68 -0
  552. package/dist/snackbar/index.d.ts +68 -0
  553. package/dist/snackbar/index.js +18 -0
  554. package/dist/snackbar/index.js.map +1 -0
  555. package/dist/spinner/index.cjs +9 -0
  556. package/dist/spinner/index.cjs.map +1 -0
  557. package/dist/spinner/index.d.cts +12 -0
  558. package/dist/spinner/index.d.ts +12 -0
  559. package/dist/spinner/index.js +9 -0
  560. package/dist/spinner/index.js.map +1 -0
  561. package/dist/split-button/index.cjs +13 -0
  562. package/dist/split-button/index.cjs.map +1 -0
  563. package/dist/split-button/index.d.cts +53 -0
  564. package/dist/split-button/index.d.ts +53 -0
  565. package/dist/split-button/index.js +13 -0
  566. package/dist/split-button/index.js.map +1 -0
  567. package/dist/stepper/index.cjs +8 -0
  568. package/dist/stepper/index.cjs.map +1 -0
  569. package/dist/stepper/index.d.cts +42 -0
  570. package/dist/stepper/index.d.ts +42 -0
  571. package/dist/stepper/index.js +8 -0
  572. package/dist/stepper/index.js.map +1 -0
  573. package/dist/switch/index.cjs +8 -0
  574. package/dist/switch/index.cjs.map +1 -0
  575. package/dist/switch/index.d.cts +15 -0
  576. package/dist/switch/index.d.ts +15 -0
  577. package/dist/switch/index.js +8 -0
  578. package/dist/switch/index.js.map +1 -0
  579. package/dist/table/index.cjs +33 -0
  580. package/dist/table/index.cjs.map +1 -0
  581. package/dist/table/index.d.cts +20 -0
  582. package/dist/table/index.d.ts +20 -0
  583. package/dist/table/index.js +33 -0
  584. package/dist/table/index.js.map +1 -0
  585. package/dist/tabs/index.cjs +13 -0
  586. package/dist/tabs/index.cjs.map +1 -0
  587. package/dist/tabs/index.d.cts +34 -0
  588. package/dist/tabs/index.d.ts +34 -0
  589. package/dist/tabs/index.js +13 -0
  590. package/dist/tabs/index.js.map +1 -0
  591. package/dist/tag-input/index.cjs +12 -0
  592. package/dist/tag-input/index.cjs.map +1 -0
  593. package/dist/tag-input/index.d.cts +36 -0
  594. package/dist/tag-input/index.d.ts +36 -0
  595. package/dist/tag-input/index.js +12 -0
  596. package/dist/tag-input/index.js.map +1 -0
  597. package/dist/textarea/index.cjs +10 -0
  598. package/dist/textarea/index.cjs.map +1 -0
  599. package/dist/textarea/index.d.cts +28 -0
  600. package/dist/textarea/index.d.ts +28 -0
  601. package/dist/textarea/index.js +10 -0
  602. package/dist/textarea/index.js.map +1 -0
  603. package/dist/timeline/index.cjs +8 -0
  604. package/dist/timeline/index.cjs.map +1 -0
  605. package/dist/timeline/index.d.cts +24 -0
  606. package/dist/timeline/index.d.ts +24 -0
  607. package/dist/timeline/index.js +8 -0
  608. package/dist/timeline/index.js.map +1 -0
  609. package/dist/toolbar/index.cjs +20 -0
  610. package/dist/toolbar/index.cjs.map +1 -0
  611. package/dist/toolbar/index.d.cts +13 -0
  612. package/dist/toolbar/index.d.ts +13 -0
  613. package/dist/toolbar/index.js +20 -0
  614. package/dist/toolbar/index.js.map +1 -0
  615. package/dist/tooltip/index.cjs +9 -0
  616. package/dist/tooltip/index.cjs.map +1 -0
  617. package/dist/tooltip/index.d.cts +25 -0
  618. package/dist/tooltip/index.d.ts +25 -0
  619. package/dist/tooltip/index.js +9 -0
  620. package/dist/tooltip/index.js.map +1 -0
  621. package/dist/tree-view/index.cjs +8 -0
  622. package/dist/tree-view/index.cjs.map +1 -0
  623. package/dist/tree-view/index.d.cts +36 -0
  624. package/dist/tree-view/index.d.ts +36 -0
  625. package/dist/tree-view/index.js +8 -0
  626. package/dist/tree-view/index.js.map +1 -0
  627. package/dist/virtual-list/index.cjs +9 -0
  628. package/dist/virtual-list/index.cjs.map +1 -0
  629. package/dist/virtual-list/index.d.cts +58 -0
  630. package/dist/virtual-list/index.d.ts +58 -0
  631. package/dist/virtual-list/index.js +9 -0
  632. package/dist/virtual-list/index.js.map +1 -0
  633. package/package.json +108 -0
@@ -0,0 +1,1484 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+ var _chunkL3UPSLJ5cjs = require('./chunk-L3UPSLJ5.cjs');
15
+
16
+
17
+ var _chunkR36SGSJXcjs = require('./chunk-R36SGSJX.cjs');
18
+
19
+
20
+ var _chunkVZ43OLU6cjs = require('./chunk-VZ43OLU6.cjs');
21
+
22
+
23
+ var _chunkSAFSEXMUcjs = require('./chunk-SAFSEXMU.cjs');
24
+
25
+
26
+ var _chunkQGZF5MOScjs = require('./chunk-QGZF5MOS.cjs');
27
+
28
+
29
+ var _chunkV5JNYS77cjs = require('./chunk-V5JNYS77.cjs');
30
+
31
+
32
+ var _chunkG2FANEA2cjs = require('./chunk-G2FANEA2.cjs');
33
+
34
+
35
+ var _chunkCDV2OAS3cjs = require('./chunk-CDV2OAS3.cjs');
36
+
37
+
38
+ var _chunkBFYSYUA6cjs = require('./chunk-BFYSYUA6.cjs');
39
+
40
+
41
+ var _chunkKV2FG7ANcjs = require('./chunk-KV2FG7AN.cjs');
42
+
43
+
44
+ var _chunkLTOHGCU4cjs = require('./chunk-LTOHGCU4.cjs');
45
+
46
+
47
+ var _chunkTBMVUI7Scjs = require('./chunk-TBMVUI7S.cjs');
48
+
49
+ // src/components/DataGrid/DataGrid.component.tsx
50
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
51
+ var _reactdom = require('react-dom');
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+ var _lucidereact = require('lucide-react');
66
+ var _jsxruntime = require('react/jsx-runtime');
67
+ function SortableTableRow({
68
+ id,
69
+ disabled,
70
+ className,
71
+ children
72
+ }) {
73
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging } = _chunkL3UPSLJ5cjs.useSortable.call(void 0, {
74
+ id,
75
+ disabled
76
+ });
77
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
78
+ "tr",
79
+ {
80
+ ref: setNodeRef,
81
+ className: [className, isDragging ? "eidos-datagrid-row--dragging" : ""].filter(Boolean).join(" "),
82
+ style: {
83
+ transform: _chunkL3UPSLJ5cjs.CSS.Transform.toString(transform),
84
+ transition: _nullishCoalesce(transition, () => ( void 0)),
85
+ opacity: isDragging ? 0.4 : 1
86
+ },
87
+ ...attributes,
88
+ children: children(_nullishCoalesce(listeners, () => ( {})), isDragging)
89
+ }
90
+ );
91
+ }
92
+ function useExpandAnimation(isOpen) {
93
+ const outerRef = _react.useRef.call(void 0, null);
94
+ const innerRef = _react.useRef.call(void 0, null);
95
+ const [maxHeight, setMaxHeight] = _react.useState.call(void 0, 0);
96
+ const [mounted, setMounted] = _react.useState.call(void 0, isOpen);
97
+ _react.useEffect.call(void 0, () => {
98
+ if (isOpen) setMounted(true);
99
+ }, [isOpen]);
100
+ _react.useEffect.call(void 0, () => {
101
+ if (!mounted) return;
102
+ if (!isOpen) {
103
+ setMaxHeight(0);
104
+ return;
105
+ }
106
+ const node = innerRef.current;
107
+ if (!node) return;
108
+ const update = () => setMaxHeight(node.scrollHeight);
109
+ update();
110
+ const observer = new ResizeObserver(update);
111
+ observer.observe(node);
112
+ return () => observer.disconnect();
113
+ }, [isOpen, mounted]);
114
+ const handleTransitionEnd = _react.useCallback.call(void 0, () => {
115
+ if (!isOpen) setMounted(false);
116
+ }, [isOpen]);
117
+ return { mounted, maxHeight, outerRef, innerRef, handleTransitionEnd };
118
+ }
119
+ function ExpandedTableRow({
120
+ isOpen,
121
+ colSpan,
122
+ render
123
+ }) {
124
+ const { mounted, maxHeight, outerRef, innerRef, handleTransitionEnd } = useExpandAnimation(isOpen);
125
+ if (!mounted) return null;
126
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { className: "eidos-datagrid-expanded-row", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { colSpan, className: "eidos-datagrid-expanded-cell", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
127
+ "div",
128
+ {
129
+ ref: outerRef,
130
+ className: "eidos-datagrid-expand-panel",
131
+ style: { maxHeight: `${maxHeight}px` },
132
+ onTransitionEnd: handleTransitionEnd,
133
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, className: "eidos-datagrid-expand-panel-inner", children: render() })
134
+ }
135
+ ) }) });
136
+ }
137
+ function ExpandedCardPanel({
138
+ isOpen,
139
+ render
140
+ }) {
141
+ const { mounted, maxHeight, outerRef, innerRef, handleTransitionEnd } = useExpandAnimation(isOpen);
142
+ if (!mounted) return null;
143
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
144
+ "div",
145
+ {
146
+ ref: outerRef,
147
+ className: "eidos-datagrid-expand-panel",
148
+ style: { maxHeight: `${maxHeight}px` },
149
+ onTransitionEnd: handleTransitionEnd,
150
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, className: "eidos-datagrid-expand-panel-inner", children: render() })
151
+ }
152
+ );
153
+ }
154
+ function DataGridInner({
155
+ // ── Existing props ─────────────────────────────────────────────────────────
156
+ columns,
157
+ data,
158
+ rowKey = "id",
159
+ onChange,
160
+ onRowAdd,
161
+ editable = false,
162
+ loading = false,
163
+ emptyText = "No data available",
164
+ className,
165
+ stickyHeader = false,
166
+ maxHeight,
167
+ showRowNumbers = false,
168
+ draggableRows = false,
169
+ onRowReorder,
170
+ // ── Sorting ────────────────────────────────────────────────────────────────
171
+ currentSort,
172
+ onSortChange,
173
+ // ── Filtering ──────────────────────────────────────────────────────────────
174
+ showFilters = false,
175
+ filterConfig = [],
176
+ filters,
177
+ onFiltersChange,
178
+ // ── Pagination ─────────────────────────────────────────────────────────────
179
+ showPagination = false,
180
+ pageSize = 10,
181
+ pageSizeOptions,
182
+ totalRows: totalRowsProp,
183
+ onPageChange,
184
+ // ── Row selection + bulk actions ───────────────────────────────────────────
185
+ selectable = false,
186
+ selectedRows: controlledSelectedRows,
187
+ defaultSelectedRows,
188
+ onSelectionChange,
189
+ bulkActions,
190
+ // ── Row expansion ────────────────────────────────────────────────────────────
191
+ expandable = false,
192
+ renderExpandedContent,
193
+ isRowExpandable,
194
+ expandMultiple = true,
195
+ expandedRows: controlledExpandedRows,
196
+ defaultExpandedRows,
197
+ onExpandedRowsChange,
198
+ // ── Display ────────────────────────────────────────────────────────────────
199
+ density = "comfortable",
200
+ showDensity = false,
201
+ // ── Card view ────────────────────────────────────────────────────────────────
202
+ hasCardView = false,
203
+ cardViewBreakpoint = 640,
204
+ cardMinWidth = 280
205
+ }) {
206
+ const [localData, _setLocalData] = _react.useState.call(void 0, data);
207
+ const localDataRef = _react.useRef.call(void 0, data);
208
+ const [editingCell, _setEditingCell] = _react.useState.call(void 0, null);
209
+ const editingCellRef = _react.useRef.call(void 0, null);
210
+ const [editValue, _setEditValue] = _react.useState.call(void 0, null);
211
+ const editValueRef = _react.useRef.call(void 0, null);
212
+ const [editError, setEditError] = _react.useState.call(void 0, null);
213
+ const errorTooltipAnchorRef = _react.useRef.call(void 0, null);
214
+ const [errorTooltipPosition, setErrorTooltipPosition] = _react.useState.call(void 0, null);
215
+ const activeCellError = editingCell && editError ? editError : null;
216
+ _react.useLayoutEffect.call(void 0, () => {
217
+ if (!activeCellError) {
218
+ setErrorTooltipPosition(null);
219
+ return;
220
+ }
221
+ const updatePosition = () => {
222
+ const node = errorTooltipAnchorRef.current;
223
+ if (!node) return;
224
+ const rect = node.getBoundingClientRect();
225
+ setErrorTooltipPosition({ top: rect.bottom + 4, left: rect.left });
226
+ };
227
+ updatePosition();
228
+ window.addEventListener("resize", updatePosition);
229
+ window.addEventListener("scroll", updatePosition, true);
230
+ return () => {
231
+ window.removeEventListener("resize", updatePosition);
232
+ window.removeEventListener("scroll", updatePosition, true);
233
+ };
234
+ }, [activeCellError]);
235
+ const [internalDensity, setInternalDensity] = _react.useState.call(void 0,
236
+ density
237
+ );
238
+ const effectiveDensity = showDensity ? internalDensity : density;
239
+ const [internalSort, setInternalSort] = _react.useState.call(void 0, null);
240
+ const [internalFilters, setInternalFilters] = _react.useState.call(void 0, {});
241
+ const [currentPage, setCurrentPage] = _react.useState.call(void 0, 1);
242
+ const [currentPageSize, setCurrentPageSize] = _react.useState.call(void 0, pageSize);
243
+ const isControlledSelection = controlledSelectedRows !== void 0;
244
+ const [internalSelectedKeys, setInternalSelectedKeys] = _react.useState.call(void 0,
245
+ () => new Set(_nullishCoalesce(defaultSelectedRows, () => ( [])))
246
+ );
247
+ const isControlledExpansion = controlledExpandedRows !== void 0;
248
+ const [internalExpandedKeys, setInternalExpandedKeys] = _react.useState.call(void 0,
249
+ () => new Set(_nullishCoalesce(defaultExpandedRows, () => ( [])))
250
+ );
251
+ const [containerWidth, setContainerWidth] = _react.useState.call(void 0, null);
252
+ const resizeObserverRef = _react.useRef.call(void 0, null);
253
+ const setContainerRef = _react.useCallback.call(void 0,
254
+ (el) => {
255
+ _optionalChain([resizeObserverRef, 'access', _ => _.current, 'optionalAccess', _2 => _2.disconnect, 'call', _3 => _3()]);
256
+ resizeObserverRef.current = null;
257
+ if (!el || !hasCardView) return;
258
+ const observer = new ResizeObserver((entries) => {
259
+ const width = _optionalChain([entries, 'access', _4 => _4[0], 'optionalAccess', _5 => _5.contentRect, 'access', _6 => _6.width]);
260
+ if (width != null) setContainerWidth(width);
261
+ });
262
+ observer.observe(el);
263
+ resizeObserverRef.current = observer;
264
+ },
265
+ [hasCardView]
266
+ );
267
+ const isCardView = hasCardView && containerWidth !== null && containerWidth < cardViewBreakpoint;
268
+ const cardHeaderColumn = _react.useMemo.call(void 0, () => columns.find((c) => c.cardHeader), [columns]);
269
+ const cardSubheaderColumn = _react.useMemo.call(void 0, () => columns.find((c) => c.cardSubheader), [columns]);
270
+ const actionsColumn = _react.useMemo.call(void 0, () => columns.find((c) => c.type === "actions"), [columns]);
271
+ const dataColumns = _react.useMemo.call(void 0,
272
+ () => columns.filter((c) => c !== actionsColumn),
273
+ [columns, actionsColumn]
274
+ );
275
+ const cardFieldColumns = _react.useMemo.call(void 0,
276
+ () => dataColumns.filter((c) => c !== cardHeaderColumn && c !== cardSubheaderColumn),
277
+ [dataColumns, cardHeaderColumn, cardSubheaderColumn]
278
+ );
279
+ const theadRef = _react.useRef.call(void 0, null);
280
+ const [pinnedOffsets, setPinnedOffsets] = _react.useState.call(void 0, /* @__PURE__ */ new Map());
281
+ const setLocalData = _react.useCallback.call(void 0, (v) => {
282
+ localDataRef.current = v;
283
+ _setLocalData(v);
284
+ }, []);
285
+ const setEditingCell = _react.useCallback.call(void 0, (v) => {
286
+ editingCellRef.current = v;
287
+ _setEditingCell(v);
288
+ }, []);
289
+ const setEditValue = _react.useCallback.call(void 0, (v) => {
290
+ editValueRef.current = v;
291
+ _setEditValue(v);
292
+ }, []);
293
+ _react.useEffect.call(void 0, () => {
294
+ setLocalData(data);
295
+ }, [data, setLocalData]);
296
+ const activeSort = _nullishCoalesce(currentSort, () => ( internalSort));
297
+ const activeFilters = _react.useMemo.call(void 0,
298
+ () => onFiltersChange ? _nullishCoalesce(filters, () => ( {})) : internalFilters,
299
+ [onFiltersChange, filters, internalFilters]
300
+ );
301
+ const selectedSet = _react.useMemo.call(void 0,
302
+ () => new Set(isControlledSelection ? _nullishCoalesce(controlledSelectedRows, () => ( [])) : [...internalSelectedKeys]),
303
+ [isControlledSelection, controlledSelectedRows, internalSelectedKeys]
304
+ );
305
+ const allKeys = _react.useMemo.call(void 0,
306
+ () => localData.map((row, idx) => String(_nullishCoalesce(row[rowKey], () => ( idx)))),
307
+ [localData, rowKey]
308
+ );
309
+ const allSelected = allKeys.length > 0 && allKeys.every((k) => selectedSet.has(k));
310
+ const someSelected = !allSelected && allKeys.some((k) => selectedSet.has(k));
311
+ const hasSelection = selectedSet.size > 0;
312
+ const selectedItems = _react.useMemo.call(void 0,
313
+ () => localData.filter((row, idx) => selectedSet.has(String(_nullishCoalesce(row[rowKey], () => ( idx))))),
314
+ [localData, selectedSet, rowKey]
315
+ );
316
+ const expandedSet = _react.useMemo.call(void 0,
317
+ () => new Set(isControlledExpansion ? _nullishCoalesce(controlledExpandedRows, () => ( [])) : [...internalExpandedKeys]),
318
+ [isControlledExpansion, controlledExpandedRows, internalExpandedKeys]
319
+ );
320
+ const filterDropdownColumns = _react.useMemo.call(void 0, () => {
321
+ return filterConfig.map(
322
+ (field) => ({
323
+ key: field.key,
324
+ label: field.label,
325
+ filterable: true,
326
+ filterType: field.filterType,
327
+ filterOptions: field.filterOptions,
328
+ dateFilterMode: field.dateFilterMode
329
+ })
330
+ );
331
+ }, [filterConfig]);
332
+ const filteredData = _react.useMemo.call(void 0, () => {
333
+ if (onFiltersChange) return localData;
334
+ const filterEntries = Object.entries(activeFilters).filter(([, val]) => {
335
+ if (val === void 0 || val === null || val === "") return false;
336
+ if (Array.isArray(val) && val.length === 0) return false;
337
+ return true;
338
+ });
339
+ if (filterEntries.length === 0) return localData;
340
+ return localData.filter(
341
+ (row) => filterEntries.every(([key, filterValue]) => {
342
+ const cellValue = row[key];
343
+ if (Array.isArray(filterValue)) {
344
+ return filterValue.includes(String(_nullishCoalesce(cellValue, () => ( ""))));
345
+ }
346
+ if (typeof filterValue === "boolean") {
347
+ return Boolean(cellValue) === filterValue;
348
+ }
349
+ if (typeof filterValue === "object" && filterValue !== null && "start" in filterValue) {
350
+ const { start, end } = filterValue;
351
+ const dateStr = String(_nullishCoalesce(cellValue, () => ( "")));
352
+ if (start && dateStr < start) return false;
353
+ if (end && dateStr > end) return false;
354
+ return true;
355
+ }
356
+ return String(_nullishCoalesce(cellValue, () => ( ""))).toLowerCase().includes(String(filterValue).toLowerCase());
357
+ })
358
+ );
359
+ }, [localData, activeFilters, onFiltersChange]);
360
+ const sortedData = _react.useMemo.call(void 0, () => {
361
+ if (onSortChange || !activeSort) return filteredData;
362
+ return [...filteredData].sort((a, b) => {
363
+ const aVal = a[activeSort.key];
364
+ const bVal = b[activeSort.key];
365
+ if (aVal == null && bVal == null) return 0;
366
+ if (aVal == null) return 1;
367
+ if (bVal == null) return -1;
368
+ const compare = typeof aVal === "number" && typeof bVal === "number" ? aVal - bVal : String(aVal).localeCompare(String(bVal));
369
+ return activeSort.direction === "asc" ? compare : -compare;
370
+ });
371
+ }, [filteredData, activeSort, onSortChange]);
372
+ const displayData = _react.useMemo.call(void 0, () => {
373
+ if (!showPagination) return sortedData;
374
+ if (onPageChange) return sortedData;
375
+ const start = (currentPage - 1) * currentPageSize;
376
+ return sortedData.slice(start, start + currentPageSize);
377
+ }, [sortedData, showPagination, currentPage, currentPageSize, onPageChange]);
378
+ const totalItemCount = _nullishCoalesce(totalRowsProp, () => ( sortedData.length));
379
+ const totalPages = Math.max(1, Math.ceil(totalItemCount / currentPageSize));
380
+ const activeFiltersKey = _react.useMemo.call(void 0, () => JSON.stringify(activeFilters), [activeFilters]);
381
+ _react.useEffect.call(void 0, () => {
382
+ setCurrentPage(1);
383
+ }, [activeFiltersKey]);
384
+ _react.useEffect.call(void 0, () => {
385
+ setCurrentPage(1);
386
+ }, [internalSort]);
387
+ _react.useLayoutEffect.call(void 0, () => {
388
+ const hasPinned = columns.some((c) => c.pin);
389
+ if (!hasPinned || !theadRef.current) {
390
+ setPinnedOffsets((prev) => prev.size > 0 ? /* @__PURE__ */ new Map() : prev);
391
+ return;
392
+ }
393
+ const headerRow = theadRef.current.querySelector("tr");
394
+ if (!headerRow) return;
395
+ const cells = Array.from(headerRow.querySelectorAll("th[data-col-key]"));
396
+ const newOffsets = /* @__PURE__ */ new Map();
397
+ const hasLeftPin = columns.some((c) => c.pin === "left");
398
+ let leftAccum = 0;
399
+ for (const cell of cells) {
400
+ const key = cell.dataset.colKey;
401
+ if (key === "__expand__" || key === "__sel__" || key === "__drag__" || key === "__rownum__") {
402
+ if (hasLeftPin) {
403
+ newOffsets.set(key, { side: "left", offset: leftAccum });
404
+ }
405
+ leftAccum += cell.offsetWidth;
406
+ } else {
407
+ const col = columns.find((c) => c.key === key);
408
+ if (_optionalChain([col, 'optionalAccess', _7 => _7.pin]) === "left") {
409
+ newOffsets.set(key, { side: "left", offset: leftAccum });
410
+ leftAccum += cell.offsetWidth;
411
+ }
412
+ }
413
+ }
414
+ let rightAccum = 0;
415
+ for (let i = cells.length - 1; i >= 0; i--) {
416
+ const cell = cells[i];
417
+ const key = cell.dataset.colKey;
418
+ if (key === "__actions__") {
419
+ rightAccum += cell.offsetWidth;
420
+ } else {
421
+ const col = columns.find((c) => c.key === key);
422
+ if (_optionalChain([col, 'optionalAccess', _8 => _8.pin]) === "right") {
423
+ newOffsets.set(key, { side: "right", offset: rightAccum });
424
+ rightAccum += cell.offsetWidth;
425
+ }
426
+ }
427
+ }
428
+ setPinnedOffsets(newOffsets);
429
+ }, [columns, selectable, draggableRows, showRowNumbers, expandable]);
430
+ const getCellPinnedProps = _react.useCallback.call(void 0,
431
+ (colKey) => {
432
+ const info = pinnedOffsets.get(colKey);
433
+ if (!info) return { style: {}, className: "" };
434
+ return {
435
+ style: { position: "sticky", [info.side]: info.offset, zIndex: 1 },
436
+ className: info.side === "left" ? "eidos-datagrid-cell--pinned-left" : "eidos-datagrid-cell--pinned-right"
437
+ };
438
+ },
439
+ [pinnedOffsets]
440
+ );
441
+ const getHeaderPinnedProps = _react.useCallback.call(void 0,
442
+ (colKey) => {
443
+ const info = pinnedOffsets.get(colKey);
444
+ if (!info) return { style: {}, className: "" };
445
+ return {
446
+ // z-index 3: above both body sticky cells (1) and non-sticky header (1 from SCSS)
447
+ style: { position: "sticky", [info.side]: info.offset, zIndex: 3 },
448
+ className: info.side === "left" ? "eidos-datagrid-header-cell--pinned-left" : "eidos-datagrid-header-cell--pinned-right"
449
+ };
450
+ },
451
+ [pinnedOffsets]
452
+ );
453
+ const isCellEditable = _react.useCallback.call(void 0,
454
+ (col) => {
455
+ if (!editable) return false;
456
+ if (col.type === "readonly" || col.type === "actions") return false;
457
+ if (col.editable === false) return false;
458
+ return true;
459
+ },
460
+ [editable]
461
+ );
462
+ const validateCell = _react.useCallback.call(void 0, (col, value) => {
463
+ if (col.required && (value === "" || value === null || value === void 0)) {
464
+ return "This field is required";
465
+ }
466
+ if (col.validate) {
467
+ const result = col.validate(value);
468
+ if (result !== true) return result;
469
+ }
470
+ return null;
471
+ }, []);
472
+ const cellErrorKey = (rowIndex, colKey) => `${rowIndex}:${colKey}`;
473
+ const cellErrors = _react.useMemo.call(void 0, () => {
474
+ const errors = {};
475
+ localData.forEach((row, rowIndex) => {
476
+ for (const col of columns) {
477
+ if (!isCellEditable(col)) continue;
478
+ const error = validateCell(col, row[col.key]);
479
+ if (error) errors[cellErrorKey(rowIndex, col.key)] = error;
480
+ }
481
+ });
482
+ return errors;
483
+ }, [localData, columns, isCellEditable, validateCell]);
484
+ const commitValue = _react.useCallback.call(void 0,
485
+ (rowIndex, colKey, value) => {
486
+ const col = columns.find((c) => c.key === colKey);
487
+ if (!col) return null;
488
+ const error = validateCell(col, value);
489
+ const newData = localDataRef.current.map(
490
+ (row, idx) => idx === rowIndex ? { ...row, [colKey]: value } : row
491
+ );
492
+ setLocalData(newData);
493
+ _optionalChain([onChange, 'optionalCall', _9 => _9(newData)]);
494
+ return error;
495
+ },
496
+ [columns, onChange, setLocalData, validateCell]
497
+ );
498
+ const commitEdit = _react.useCallback.call(void 0, () => {
499
+ const cell = editingCellRef.current;
500
+ if (!cell) return;
501
+ const col = columns.find((c) => c.key === cell.colKey);
502
+ if (!col) {
503
+ setEditingCell(null);
504
+ return;
505
+ }
506
+ commitValue(cell.rowIndex, cell.colKey, editValueRef.current);
507
+ setEditingCell(null);
508
+ setEditError(null);
509
+ }, [columns, commitValue, setEditingCell]);
510
+ const discardEdit = _react.useCallback.call(void 0, () => {
511
+ setEditingCell(null);
512
+ setEditError(null);
513
+ }, [setEditingCell]);
514
+ const commitEditRef = _react.useRef.call(void 0, commitEdit);
515
+ _react.useEffect.call(void 0, () => {
516
+ commitEditRef.current = commitEdit;
517
+ }, [commitEdit]);
518
+ _react.useEffect.call(void 0, () => {
519
+ if (!editingCell) return;
520
+ const handleMouseDown = (e) => {
521
+ const target = e.target;
522
+ if (_optionalChain([target, 'access', _10 => _10.closest, 'optionalCall', _11 => _11(
523
+ ".eidos-data-grid-cell--editing, .eidos-datagrid-card-value--editing, .eidos-dropdown-content"
524
+ )])) {
525
+ return;
526
+ }
527
+ commitEditRef.current();
528
+ };
529
+ document.addEventListener("mousedown", handleMouseDown);
530
+ return () => document.removeEventListener("mousedown", handleMouseDown);
531
+ }, [editingCell]);
532
+ const startEdit = _react.useCallback.call(void 0,
533
+ (rowIndex, colKey, currentValue) => {
534
+ const col = columns.find((c) => c.key === colKey);
535
+ if (!col || !isCellEditable(col)) return;
536
+ setEditingCell({ rowIndex, colKey });
537
+ setEditValue(currentValue);
538
+ setEditError(_nullishCoalesce(cellErrors[cellErrorKey(rowIndex, colKey)], () => ( null)));
539
+ },
540
+ [columns, isCellEditable, setEditingCell, setEditValue, cellErrors]
541
+ );
542
+ const handleCellClick = _react.useCallback.call(void 0,
543
+ (rowIndex, col) => {
544
+ const value = _optionalChain([localDataRef, 'access', _12 => _12.current, 'access', _13 => _13[rowIndex], 'optionalAccess', _14 => _14[col.key]]);
545
+ if (col.type === "checkbox") {
546
+ if (!editable || col.editable === false) return;
547
+ const newData = localDataRef.current.map(
548
+ (row, idx) => idx === rowIndex ? { ...row, [col.key]: !value } : row
549
+ );
550
+ setLocalData(newData);
551
+ _optionalChain([onChange, 'optionalCall', _15 => _15(newData)]);
552
+ return;
553
+ }
554
+ if (!isCellEditable(col)) return;
555
+ const cell = editingCellRef.current;
556
+ if (_optionalChain([cell, 'optionalAccess', _16 => _16.rowIndex]) === rowIndex && _optionalChain([cell, 'optionalAccess', _17 => _17.colKey]) === col.key) return;
557
+ if (cell) commitEdit();
558
+ startEdit(rowIndex, col.key, value);
559
+ },
560
+ [editable, isCellEditable, commitEdit, startEdit, setLocalData, onChange]
561
+ );
562
+ const handleKeyDown = _react.useCallback.call(void 0,
563
+ (e, rowIndex, colKey) => {
564
+ if (e.key === "Escape") {
565
+ e.preventDefault();
566
+ discardEdit();
567
+ return;
568
+ }
569
+ if (e.key === "Enter") {
570
+ e.preventDefault();
571
+ commitEdit();
572
+ return;
573
+ }
574
+ if (e.key === "Tab") {
575
+ e.preventDefault();
576
+ const editableCells = [];
577
+ for (let ri = 0; ri < localDataRef.current.length; ri++) {
578
+ for (const c of columns) {
579
+ if (isCellEditable(c)) {
580
+ editableCells.push({ rowIndex: ri, colKey: c.key });
581
+ }
582
+ }
583
+ }
584
+ const idx = editableCells.findIndex((c) => c.rowIndex === rowIndex && c.colKey === colKey);
585
+ const next = e.shiftKey ? editableCells[idx - 1] : editableCells[idx + 1];
586
+ commitValue(rowIndex, colKey, editValueRef.current);
587
+ if (next) {
588
+ setEditingCell(next);
589
+ setEditValue(localDataRef.current[next.rowIndex][next.colKey]);
590
+ setEditError(_nullishCoalesce(cellErrors[cellErrorKey(next.rowIndex, next.colKey)], () => ( null)));
591
+ } else {
592
+ setEditingCell(null);
593
+ setEditError(null);
594
+ }
595
+ }
596
+ },
597
+ [
598
+ columns,
599
+ isCellEditable,
600
+ commitEdit,
601
+ commitValue,
602
+ discardEdit,
603
+ cellErrors,
604
+ setEditingCell,
605
+ setEditValue
606
+ ]
607
+ );
608
+ const handleRowAdd = _react.useCallback.call(void 0, () => {
609
+ if (!onRowAdd) return;
610
+ const newRow = onRowAdd();
611
+ const newData = [newRow, ...localDataRef.current];
612
+ setLocalData(newData);
613
+ _optionalChain([onChange, 'optionalCall', _18 => _18(newData)]);
614
+ setCurrentPage(1);
615
+ }, [onRowAdd, onChange, setLocalData]);
616
+ const commitSelection = _react.useCallback.call(void 0,
617
+ (keys) => {
618
+ if (!isControlledSelection) setInternalSelectedKeys(new Set(keys));
619
+ const rows = localDataRef.current.filter(
620
+ (row, idx) => keys.includes(String(_nullishCoalesce(row[rowKey], () => ( idx))))
621
+ );
622
+ _optionalChain([onSelectionChange, 'optionalCall', _19 => _19(keys, rows)]);
623
+ },
624
+ [isControlledSelection, rowKey, onSelectionChange]
625
+ );
626
+ const toggleRow = _react.useCallback.call(void 0,
627
+ (key) => {
628
+ const next = selectedSet.has(key) ? [...selectedSet].filter((k) => k !== key) : [...selectedSet, key];
629
+ commitSelection(next);
630
+ },
631
+ [selectedSet, commitSelection]
632
+ );
633
+ const toggleAll = _react.useCallback.call(void 0, () => {
634
+ commitSelection(allSelected ? [] : allKeys);
635
+ }, [allSelected, allKeys, commitSelection]);
636
+ const clearSelection = _react.useCallback.call(void 0, () => commitSelection([]), [commitSelection]);
637
+ const commitExpanded = _react.useCallback.call(void 0,
638
+ (keys) => {
639
+ if (!isControlledExpansion) setInternalExpandedKeys(new Set(keys));
640
+ _optionalChain([onExpandedRowsChange, 'optionalCall', _20 => _20(keys)]);
641
+ },
642
+ [isControlledExpansion, onExpandedRowsChange]
643
+ );
644
+ const toggleExpanded = _react.useCallback.call(void 0,
645
+ (key) => {
646
+ const isOpen = expandedSet.has(key);
647
+ const next = expandMultiple ? isOpen ? [...expandedSet].filter((k) => k !== key) : [...expandedSet, key] : isOpen ? [] : [key];
648
+ commitExpanded(next);
649
+ },
650
+ [expandedSet, expandMultiple, commitExpanded]
651
+ );
652
+ const handleSortClick = _react.useCallback.call(void 0,
653
+ (colKey) => {
654
+ if (onSortChange) {
655
+ const newDir = _optionalChain([currentSort, 'optionalAccess', _21 => _21.key]) === colKey && _optionalChain([currentSort, 'optionalAccess', _22 => _22.direction]) === "asc" ? "desc" : "asc";
656
+ onSortChange(colKey, newDir);
657
+ } else {
658
+ setInternalSort((prev) => {
659
+ if (_optionalChain([prev, 'optionalAccess', _23 => _23.key]) === colKey) {
660
+ return prev.direction === "asc" ? { key: colKey, direction: "desc" } : null;
661
+ }
662
+ return { key: colKey, direction: "asc" };
663
+ });
664
+ }
665
+ },
666
+ [onSortChange, currentSort]
667
+ );
668
+ const handleFiltersChange = _react.useCallback.call(void 0,
669
+ (newFilters) => {
670
+ setCurrentPage(1);
671
+ if (onFiltersChange) {
672
+ onFiltersChange(newFilters);
673
+ } else {
674
+ setInternalFilters(newFilters);
675
+ }
676
+ },
677
+ [onFiltersChange]
678
+ );
679
+ const handlePageChange = _react.useCallback.call(void 0,
680
+ (page) => {
681
+ setCurrentPage(page);
682
+ _optionalChain([onPageChange, 'optionalCall', _24 => _24(page, currentPageSize)]);
683
+ },
684
+ [currentPageSize, onPageChange]
685
+ );
686
+ const handlePageSizeChange = _react.useCallback.call(void 0,
687
+ (newPageSize) => {
688
+ setCurrentPageSize(newPageSize);
689
+ setCurrentPage(1);
690
+ _optionalChain([onPageChange, 'optionalCall', _25 => _25(1, newPageSize)]);
691
+ },
692
+ [onPageChange]
693
+ );
694
+ const sensors = _chunkL3UPSLJ5cjs.useSensors.call(void 0,
695
+ _chunkL3UPSLJ5cjs.useSensor.call(void 0, _chunkL3UPSLJ5cjs.PointerSensor, { activationConstraint: { distance: 5 } }),
696
+ _chunkL3UPSLJ5cjs.useSensor.call(void 0, _chunkL3UPSLJ5cjs.KeyboardSensor)
697
+ );
698
+ const handleRowDragEnd = _react.useCallback.call(void 0,
699
+ (event) => {
700
+ if (!draggableRows) return;
701
+ const { active, over } = event;
702
+ if (!over || active.id === over.id) return;
703
+ const oldIndex = localDataRef.current.findIndex(
704
+ (row, i) => String(_nullishCoalesce(row[rowKey], () => ( i))) === String(active.id)
705
+ );
706
+ const newIndex = localDataRef.current.findIndex(
707
+ (row, i) => String(_nullishCoalesce(row[rowKey], () => ( i))) === String(over.id)
708
+ );
709
+ if (oldIndex === -1 || newIndex === -1) return;
710
+ const newData = _chunkL3UPSLJ5cjs.arrayMove.call(void 0, localDataRef.current, oldIndex, newIndex);
711
+ setLocalData(newData);
712
+ _optionalChain([onChange, 'optionalCall', _26 => _26(newData)]);
713
+ _optionalChain([onRowReorder, 'optionalCall', _27 => _27(newData)]);
714
+ },
715
+ [draggableRows, rowKey, setLocalData, onChange, onRowReorder]
716
+ );
717
+ const renderViewCell = (col, value, row, rowIndex) => {
718
+ if (col.renderCell) return col.renderCell(value, row, rowIndex);
719
+ switch (col.type) {
720
+ case "checkbox":
721
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
722
+ _chunkG2FANEA2cjs.Checkbox,
723
+ {
724
+ checked: Boolean(value),
725
+ onChange: () => {
726
+ },
727
+ size: "sm"
728
+ }
729
+ );
730
+ case "select": {
731
+ const option = _optionalChain([col, 'access', _28 => _28.options, 'optionalAccess', _29 => _29.find, 'call', _30 => _30((o) => o.value === String(_nullishCoalesce(value, () => ( ""))))]);
732
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: option ? option.label : String(_nullishCoalesce(value, () => ( ""))) });
733
+ }
734
+ case "readonly":
735
+ case "text":
736
+ case "number":
737
+ case "date":
738
+ default:
739
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: String(_nullishCoalesce(value, () => ( ""))) });
740
+ }
741
+ };
742
+ const renderEditCell = (col, value, row, rowIndex, context = "table") => {
743
+ if (col.renderEditor) {
744
+ return col.renderEditor(value, (v) => setEditValue(v), row);
745
+ }
746
+ const variant = context === "table" ? "bare" : void 0;
747
+ const size = context === "table" ? "sm" : void 0;
748
+ switch (col.type) {
749
+ case "number":
750
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
751
+ _chunkCDV2OAS3cjs.Input,
752
+ {
753
+ type: "number",
754
+ variant,
755
+ size,
756
+ value: String(_nullishCoalesce(value, () => ( ""))),
757
+ onChange: (e) => setEditValue(e.target.value),
758
+ autoFocus: true,
759
+ fullWidth: true,
760
+ clearable: false
761
+ }
762
+ );
763
+ case "date":
764
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
765
+ _chunkCDV2OAS3cjs.Input,
766
+ {
767
+ type: "date",
768
+ variant,
769
+ size,
770
+ value: String(_nullishCoalesce(value, () => ( ""))),
771
+ onChange: (e) => setEditValue(e.target.value),
772
+ autoFocus: true,
773
+ fullWidth: true,
774
+ clearable: false
775
+ }
776
+ );
777
+ case "select": {
778
+ const selectOptions = (_nullishCoalesce(col.options, () => ( []))).map((o) => ({
779
+ id: o.value,
780
+ value: o.value,
781
+ label: o.label
782
+ }));
783
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
784
+ _chunkQGZF5MOScjs.Select,
785
+ {
786
+ options: selectOptions,
787
+ value: String(_nullishCoalesce(value, () => ( ""))),
788
+ autoOpen: true,
789
+ fullWidth: true,
790
+ inputProps: { variant, size },
791
+ onChange: (v) => {
792
+ const selected = Array.isArray(v) ? _nullishCoalesce(v[0], () => ( "")) : v;
793
+ const newData = localDataRef.current.map(
794
+ (r, i) => i === rowIndex ? { ...r, [col.key]: selected } : r
795
+ );
796
+ setLocalData(newData);
797
+ _optionalChain([onChange, 'optionalCall', _31 => _31(newData)]);
798
+ setEditingCell(null);
799
+ },
800
+ clearable: false
801
+ }
802
+ );
803
+ }
804
+ default:
805
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
806
+ _chunkCDV2OAS3cjs.Input,
807
+ {
808
+ type: "text",
809
+ variant,
810
+ size,
811
+ value: String(_nullishCoalesce(value, () => ( ""))),
812
+ onChange: (e) => setEditValue(e.target.value),
813
+ autoFocus: true,
814
+ fullWidth: true,
815
+ clearable: false
816
+ }
817
+ );
818
+ }
819
+ };
820
+ const renderCardValue = (col, row, localIndex, baseClassName) => {
821
+ const value = row[col.key];
822
+ const isEditing = _optionalChain([editingCell, 'optionalAccess', _32 => _32.rowIndex]) === localIndex && _optionalChain([editingCell, 'optionalAccess', _33 => _33.colKey]) === col.key;
823
+ const canEdit = isCellEditable(col);
824
+ const isFlagged = cellErrorKey(localIndex, col.key) in cellErrors;
825
+ const hasError = isEditing && Boolean(editError);
826
+ const valueCls = [
827
+ baseClassName,
828
+ // Deliberately NOT `eidos-data-grid-cell--editing` (unlike the <td>
829
+ // version of this same state) - that class's whole job is forcing the
830
+ // editor into `position: absolute; inset: 0` so it fills a <td>
831
+ // without changing the table row's height. A card field has no row
832
+ // to preserve the height of, so it just needs its own "is editing"
833
+ // hook for spacing - the editor itself renders normally, with each
834
+ // component's own default (non-`bare`) look (see `renderEditCell`).
835
+ isEditing && "eidos-datagrid-card-value--editing",
836
+ hasError && "eidos-data-grid-cell--error",
837
+ isFlagged && !hasError && "eidos-data-grid-cell--has-error",
838
+ canEdit && !isEditing && "eidos-data-grid-cell--editable",
839
+ col.type === "readonly" && "eidos-data-grid-cell--readonly",
840
+ // Checkbox glyph is intrinsically narrow - without this the value
841
+ // wrapper stretches to the card's full width (block layout), making
842
+ // the whole row clickable/toggleable instead of just the checkbox.
843
+ col.type === "checkbox" && "eidos-datagrid-card-value--checkbox"
844
+ ].filter(Boolean).join(" ");
845
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
846
+ "div",
847
+ {
848
+ ref: hasError ? errorTooltipAnchorRef : void 0,
849
+ className: valueCls,
850
+ onClick: () => handleCellClick(localIndex, col),
851
+ onKeyDown: isEditing ? (e) => handleKeyDown(e, localIndex, col.key) : void 0,
852
+ tabIndex: isEditing ? -1 : void 0,
853
+ children: isEditing ? renderEditCell(col, editValue, row, localIndex, "card") : renderViewCell(col, value, row, localIndex)
854
+ }
855
+ );
856
+ };
857
+ const renderCardField = (col, row, localIndex) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-card-field", children: [
858
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-datagrid-card-field-label", children: col.header }),
859
+ renderCardValue(col, row, localIndex, "eidos-datagrid-card-field-value")
860
+ ] }, col.key);
861
+ const renderActionsMenu = (row, localIndex) => {
862
+ if (!actionsColumn) return null;
863
+ const items = actionsColumn.renderActions ? actionsColumn.renderActions(row, localIndex) : (_nullishCoalesce(actionsColumn.actions, () => ( []))).flatMap((action, index) => {
864
+ const id = _nullishCoalesce(action.id, () => ( `${action.label}-${index}`));
865
+ const isDisabled = typeof action.disabled === "function" ? action.disabled(row) : Boolean(action.disabled);
866
+ const item = {
867
+ id,
868
+ type: "item",
869
+ label: action.label,
870
+ icon: action.icon,
871
+ disabled: isDisabled,
872
+ color: action.danger ? "danger" : void 0,
873
+ onClick: () => action.onClick(row, localIndex)
874
+ };
875
+ return action.divider ? [{ id: `${id}-divider`, type: "separator" }, item] : [item];
876
+ });
877
+ if (!items.length) return null;
878
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
879
+ _chunkBFYSYUA6cjs.Menu,
880
+ {
881
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "button", { type: "button", className: "eidos-datagrid-actions-trigger", "aria-label": "Row actions", children: actionsColumn.actionsIcon ? _chunkTBMVUI7Scjs.renderIcon.call(void 0, actionsColumn.actionsIcon, "eidos-datagrid-actions-trigger-icon") : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.MoreVertical, { size: 16 }) }),
882
+ items
883
+ }
884
+ );
885
+ };
886
+ const sortedColumns = _react.useMemo.call(void 0,
887
+ () => [
888
+ ...dataColumns.filter((c) => c.pin === "left"),
889
+ ...dataColumns.filter((c) => !c.pin),
890
+ ...dataColumns.filter((c) => c.pin === "right")
891
+ ],
892
+ [dataColumns]
893
+ );
894
+ const totalCols = dataColumns.length + (showRowNumbers ? 1 : 0) + (actionsColumn ? 1 : 0) + (draggableRows ? 1 : 0) + (selectable ? 1 : 0) + (expandable ? 1 : 0);
895
+ const rowIds = displayData.map((row, i) => String(_nullishCoalesce(row[rowKey], () => ( i))));
896
+ const containerStyle = {};
897
+ if (stickyHeader && maxHeight) {
898
+ containerStyle.maxHeight = typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight;
899
+ }
900
+ const showToolbar = !!showFilters || !!showDensity || !!selectable || !!onRowAdd;
901
+ const densityClass = effectiveDensity !== "comfortable" ? `eidos-datagrid--${effectiveDensity}` : "";
902
+ const effectivePageSizeOptions = _react.useMemo.call(void 0, () => {
903
+ const opts = _nullishCoalesce(pageSizeOptions, () => ( [10, 25, 50, 100]));
904
+ return opts.includes(pageSize) ? opts : [...opts, pageSize].sort((a, b) => a - b);
905
+ }, [pageSizeOptions, pageSize]);
906
+ if (loading) {
907
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
908
+ "div",
909
+ {
910
+ ref: setContainerRef,
911
+ className: ["eidos-data-grid-container", className].filter(Boolean).join(" "),
912
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-data-grid-loading", children: [
913
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR36SGSJXcjs.Spinner, { size: "md" }),
914
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { children: "Loading\u2026" })
915
+ ] })
916
+ }
917
+ );
918
+ }
919
+ const expandHeaderPin = getHeaderPinnedProps("__expand__");
920
+ const selHeaderPin = getHeaderPinnedProps("__sel__");
921
+ const dragHeaderPin = getHeaderPinnedProps("__drag__");
922
+ const rownumHeaderPin = getHeaderPinnedProps("__rownum__");
923
+ const expandCellPin = getCellPinnedProps("__expand__");
924
+ const selCellPin = getCellPinnedProps("__sel__");
925
+ const dragCellPin = getCellPinnedProps("__drag__");
926
+ const rownumCellPin = getCellPinnedProps("__rownum__");
927
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
928
+ "div",
929
+ {
930
+ ref: setContainerRef,
931
+ className: [
932
+ "eidos-data-grid-container",
933
+ stickyHeader && "eidos-data-grid-container--sticky-header",
934
+ densityClass,
935
+ className
936
+ ].filter(Boolean).join(" "),
937
+ style: containerStyle,
938
+ children: [
939
+ showToolbar && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-toolbar", children: [
940
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-datagrid-toolbar-left", children: selectable && hasSelection && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
941
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "eidos-datagrid-selection-count", children: [
942
+ selectedSet.size,
943
+ " selected"
944
+ ] }),
945
+ bulkActions && bulkActions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-datagrid-bulk-actions", children: bulkActions.map((action) => {
946
+ const isDisabled = typeof action.disabled === "function" ? action.disabled(selectedItems) : _nullishCoalesce(action.disabled, () => ( false));
947
+ if (action.type === "split-button") {
948
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
949
+ _chunkVZ43OLU6cjs.SplitButton,
950
+ {
951
+ size: "sm",
952
+ variant: _nullishCoalesce(action.variant, () => ( "outlined")),
953
+ color: _nullishCoalesce(action.color, () => ( "secondary")),
954
+ preIcon: action.icon,
955
+ disabled: isDisabled,
956
+ label: action.label,
957
+ onClick: () => action.onClick(selectedItems),
958
+ options: action.options.map((option) => ({
959
+ id: option.id,
960
+ label: option.label,
961
+ icon: option.icon,
962
+ disabled: option.disabled,
963
+ onClick: () => option.onClick(selectedItems)
964
+ }))
965
+ },
966
+ action.id
967
+ );
968
+ }
969
+ return action.label ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
970
+ _chunkLTOHGCU4cjs.Button,
971
+ {
972
+ size: "sm",
973
+ variant: _nullishCoalesce(action.variant, () => ( "outlined")),
974
+ color: _nullishCoalesce(action.color, () => ( "secondary")),
975
+ preIcon: action.icon,
976
+ posIcon: action.posIcon,
977
+ disabled: isDisabled,
978
+ onClick: () => action.onClick(selectedItems),
979
+ children: action.label
980
+ },
981
+ action.id
982
+ ) : action.icon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
983
+ _chunkLTOHGCU4cjs.Button,
984
+ {
985
+ size: "sm",
986
+ variant: _nullishCoalesce(action.variant, () => ( "outlined")),
987
+ color: _nullishCoalesce(action.color, () => ( "secondary")),
988
+ icon: action.icon,
989
+ disabled: isDisabled,
990
+ onClick: () => action.onClick(selectedItems)
991
+ },
992
+ action.id
993
+ ) : null;
994
+ }) }),
995
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
996
+ "button",
997
+ {
998
+ type: "button",
999
+ className: "eidos-datagrid-clear-selection",
1000
+ onClick: clearSelection,
1001
+ "aria-label": "Clear selection",
1002
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { size: 14 })
1003
+ }
1004
+ )
1005
+ ] }) }),
1006
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-toolbar-right", children: [
1007
+ showDensity && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1008
+ _chunkKV2FG7ANcjs.Dropdown,
1009
+ {
1010
+ placement: "bottom",
1011
+ align: "end",
1012
+ autoWidth: false,
1013
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTOHGCU4cjs.Button, { variant: "text", size: "sm", preIcon: _lucidereact.AlignJustify, children: "Density" }),
1014
+ content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-menu-panel", children: [
1015
+ { value: "compact", label: "Compact" },
1016
+ { value: "comfortable", label: "Comfortable" },
1017
+ { value: "spacious", label: "Spacious" }
1018
+ ].map((option) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1019
+ "button",
1020
+ {
1021
+ className: [
1022
+ "eidos-table-menu-item",
1023
+ effectiveDensity === option.value ? "eidos-table-menu-item--active" : ""
1024
+ ].filter(Boolean).join(" "),
1025
+ onClick: () => setInternalDensity(option.value),
1026
+ children: [
1027
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-table-menu-item-check", children: effectiveDensity === option.value && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Check, { size: 14 }) }),
1028
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: option.label })
1029
+ ]
1030
+ },
1031
+ option.value
1032
+ )) })
1033
+ }
1034
+ ),
1035
+ showFilters && filterDropdownColumns.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1036
+ _chunkL3UPSLJ5cjs.TableFiltersDropdown,
1037
+ {
1038
+ columns: filterDropdownColumns,
1039
+ filters: activeFilters,
1040
+ onFiltersChange: handleFiltersChange
1041
+ }
1042
+ ),
1043
+ onRowAdd && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTOHGCU4cjs.Button, { variant: "outlined", size: "sm", preIcon: _lucidereact.Plus, onClick: handleRowAdd, children: "Add row" })
1044
+ ] })
1045
+ ] }),
1046
+ isCardView ? (
1047
+ /* ── Card view ────────────────────────────────────────────────── */
1048
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1049
+ "div",
1050
+ {
1051
+ className: "eidos-datagrid-cards",
1052
+ style: { "--eidos-datagrid-card-min-width": `${cardMinWidth}px` },
1053
+ children: displayData.length > 0 ? displayData.map((row, displayIndex) => {
1054
+ const localIndex = localData.indexOf(row);
1055
+ const rowKeyValue = String(_nullishCoalesce(row[rowKey], () => ( displayIndex)));
1056
+ const isRowSelected = selectable && selectedSet.has(rowKeyValue);
1057
+ const isRowExpanded = expandable && expandedSet.has(rowKeyValue);
1058
+ const canExpandRow = !isRowExpandable || isRowExpandable(row);
1059
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1060
+ "div",
1061
+ {
1062
+ className: [
1063
+ "eidos-datagrid-card",
1064
+ isRowSelected && "eidos-datagrid-card--selected"
1065
+ ].filter(Boolean).join(" "),
1066
+ children: [
1067
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-card-toolbar", onClick: (e) => e.stopPropagation(), children: [
1068
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-card-toolbar-left", children: [
1069
+ expandable && canExpandRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1070
+ "button",
1071
+ {
1072
+ type: "button",
1073
+ className: [
1074
+ "eidos-datagrid-expand-toggle",
1075
+ isRowExpanded && "eidos-datagrid-expand-toggle--open"
1076
+ ].filter(Boolean).join(" "),
1077
+ onClick: () => toggleExpanded(rowKeyValue),
1078
+ "aria-expanded": isRowExpanded,
1079
+ "aria-label": isRowExpanded ? "Collapse row" : "Expand row",
1080
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { size: 14 })
1081
+ }
1082
+ ),
1083
+ selectable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1084
+ _chunkG2FANEA2cjs.Checkbox,
1085
+ {
1086
+ checked: isRowSelected,
1087
+ onChange: () => toggleRow(rowKeyValue),
1088
+ size: "sm"
1089
+ }
1090
+ ),
1091
+ showRowNumbers && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "eidos-datagrid-card-row-number", children: [
1092
+ "#",
1093
+ localIndex + 1
1094
+ ] })
1095
+ ] }),
1096
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-card-heading", children: [
1097
+ cardHeaderColumn && renderCardValue(
1098
+ cardHeaderColumn,
1099
+ row,
1100
+ localIndex,
1101
+ "eidos-datagrid-card-heading-title"
1102
+ ),
1103
+ cardSubheaderColumn && renderCardValue(
1104
+ cardSubheaderColumn,
1105
+ row,
1106
+ localIndex,
1107
+ "eidos-datagrid-card-heading-subtitle"
1108
+ )
1109
+ ] }),
1110
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-datagrid-card-toolbar-right", children: renderActionsMenu(row, localIndex) })
1111
+ ] }),
1112
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-datagrid-card-fields", children: cardFieldColumns.map((col) => renderCardField(col, row, localIndex)) }),
1113
+ expandable && renderExpandedContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1114
+ ExpandedCardPanel,
1115
+ {
1116
+ isOpen: isRowExpanded,
1117
+ render: () => renderExpandedContent(row, localIndex)
1118
+ }
1119
+ )
1120
+ ]
1121
+ },
1122
+ rowKeyValue
1123
+ );
1124
+ }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-datagrid-card-empty", children: Object.keys(activeFilters).length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1125
+ _chunkV5JNYS77cjs.EmptyState,
1126
+ {
1127
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SearchX, {}),
1128
+ title: "No results found",
1129
+ description: "Try adjusting your filters or search terms.",
1130
+ action: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1131
+ _chunkLTOHGCU4cjs.Button,
1132
+ {
1133
+ size: "sm",
1134
+ variant: "outlined",
1135
+ color: "primary",
1136
+ onClick: () => handleFiltersChange({}),
1137
+ children: "Clear filters"
1138
+ }
1139
+ ),
1140
+ size: "sm"
1141
+ }
1142
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1143
+ _chunkV5JNYS77cjs.EmptyState,
1144
+ {
1145
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.FolderOpen, {}),
1146
+ title: emptyText,
1147
+ description: onRowAdd ? "Add a row to get started." : "There are no records to display.",
1148
+ size: "sm"
1149
+ }
1150
+ ) })
1151
+ }
1152
+ )
1153
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1154
+ _chunkL3UPSLJ5cjs.DndContext,
1155
+ {
1156
+ sensors,
1157
+ collisionDetection: _chunkL3UPSLJ5cjs.closestCenter,
1158
+ onDragEnd: handleRowDragEnd,
1159
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-data-grid-scroll", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "table", { className: ["eidos-data-grid", densityClass].filter(Boolean).join(" "), children: [
1160
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "thead", { ref: theadRef, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "tr", { children: [
1161
+ draggableRows && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1162
+ "th",
1163
+ {
1164
+ className: [
1165
+ "eidos-data-grid-header-cell",
1166
+ "eidos-datagrid-drag-handle-cell",
1167
+ dragHeaderPin.className
1168
+ ].filter(Boolean).join(" "),
1169
+ style: dragHeaderPin.style,
1170
+ "data-col-key": "__drag__"
1171
+ }
1172
+ ),
1173
+ expandable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1174
+ "th",
1175
+ {
1176
+ className: [
1177
+ "eidos-data-grid-header-cell",
1178
+ "eidos-datagrid-expand-cell",
1179
+ expandHeaderPin.className
1180
+ ].filter(Boolean).join(" "),
1181
+ style: expandHeaderPin.style,
1182
+ "data-col-key": "__expand__"
1183
+ }
1184
+ ),
1185
+ selectable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1186
+ "th",
1187
+ {
1188
+ className: [
1189
+ "eidos-data-grid-header-cell",
1190
+ "eidos-datagrid-checkbox-cell",
1191
+ selHeaderPin.className
1192
+ ].filter(Boolean).join(" "),
1193
+ style: selHeaderPin.style,
1194
+ "data-col-key": "__sel__",
1195
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1196
+ _chunkG2FANEA2cjs.Checkbox,
1197
+ {
1198
+ checked: allSelected,
1199
+ indeterminate: someSelected,
1200
+ onChange: toggleAll,
1201
+ size: "sm"
1202
+ }
1203
+ )
1204
+ }
1205
+ ),
1206
+ showRowNumbers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1207
+ "th",
1208
+ {
1209
+ className: [
1210
+ "eidos-data-grid-header-cell",
1211
+ "eidos-data-grid-row-number-col",
1212
+ rownumHeaderPin.className
1213
+ ].filter(Boolean).join(" "),
1214
+ style: rownumHeaderPin.style,
1215
+ "data-col-key": "__rownum__",
1216
+ children: "#"
1217
+ }
1218
+ ),
1219
+ sortedColumns.map((col) => {
1220
+ const colKey = col.key;
1221
+ const isSortable = !!col.sortable;
1222
+ const isCurrentlySorted = _optionalChain([activeSort, 'optionalAccess', _34 => _34.key]) === colKey;
1223
+ const sortDir = isCurrentlySorted ? activeSort.direction : null;
1224
+ const { style: pinnedStyle, className: pinnedClass } = getHeaderPinnedProps(colKey);
1225
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1226
+ "th",
1227
+ {
1228
+ className: [
1229
+ "eidos-data-grid-header-cell",
1230
+ isSortable && "eidos-datagrid-header-cell--sortable",
1231
+ isCurrentlySorted && "eidos-datagrid-header-cell--sorted",
1232
+ pinnedClass
1233
+ ].filter(Boolean).join(" "),
1234
+ style: {
1235
+ width: col.width != null ? typeof col.width === "number" ? `${col.width}px` : col.width : void 0,
1236
+ minWidth: col.minWidth != null ? typeof col.minWidth === "number" ? `${col.minWidth}px` : col.minWidth : void 0,
1237
+ ...pinnedStyle
1238
+ },
1239
+ "data-col-key": colKey,
1240
+ onClick: isSortable ? () => handleSortClick(colKey) : void 0,
1241
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-datagrid-header-content", children: [
1242
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-datagrid-header-label", children: col.header }),
1243
+ isSortable && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "eidos-datagrid-sort-icon", children: [
1244
+ sortDir === "asc" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowUp, { size: 14 }),
1245
+ sortDir === "desc" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowDown, { size: 14 }),
1246
+ !sortDir && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronsUpDown, { size: 14 })
1247
+ ] })
1248
+ ] })
1249
+ },
1250
+ colKey
1251
+ );
1252
+ }),
1253
+ actionsColumn && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1254
+ "th",
1255
+ {
1256
+ className: "eidos-data-grid-header-cell eidos-data-grid-actions-col",
1257
+ "data-col-key": "__actions__"
1258
+ }
1259
+ )
1260
+ ] }) }),
1261
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tbody", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL3UPSLJ5cjs.SortableContext, { items: rowIds, strategy: _chunkL3UPSLJ5cjs.verticalListSortingStrategy, children: displayData.length > 0 ? displayData.map((row, displayIndex) => {
1262
+ const localIndex = localData.indexOf(row);
1263
+ const rowKeyValue = String(_nullishCoalesce(row[rowKey], () => ( displayIndex)));
1264
+ const isRowSelected = selectable && selectedSet.has(rowKeyValue);
1265
+ const isRowExpanded = expandable && expandedSet.has(rowKeyValue);
1266
+ const canExpandRow = !isRowExpandable || isRowExpandable(row);
1267
+ return (
1268
+ // React.Fragment (rather than SortableTableRow taking the
1269
+ // `key` directly) so an expanded row's detail <tr> - see
1270
+ // ExpandedTableRow below - can sit right underneath it as
1271
+ // a sibling, keyed together as one reconciliation unit.
1272
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
1273
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1274
+ SortableTableRow,
1275
+ {
1276
+ id: rowKeyValue,
1277
+ disabled: !draggableRows,
1278
+ className: [
1279
+ "eidos-data-grid-row",
1280
+ isRowSelected && "eidos-datagrid-row--selected"
1281
+ ].filter(Boolean).join(" "),
1282
+ children: (dragHandleProps, isDragging) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1283
+ draggableRows && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1284
+ "td",
1285
+ {
1286
+ className: [
1287
+ "eidos-datagrid-drag-handle-cell",
1288
+ dragCellPin.className
1289
+ ].filter(Boolean).join(" "),
1290
+ style: dragCellPin.style,
1291
+ onClick: (e) => e.stopPropagation(),
1292
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1293
+ "span",
1294
+ {
1295
+ ...dragHandleProps,
1296
+ className: [
1297
+ "eidos-datagrid-drag-handle",
1298
+ isDragging && "eidos-datagrid-drag-handle--dragging"
1299
+ ].filter(Boolean).join(" "),
1300
+ title: "Drag to reorder",
1301
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.GripVertical, { size: 14 })
1302
+ }
1303
+ )
1304
+ }
1305
+ ),
1306
+ expandable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1307
+ "td",
1308
+ {
1309
+ className: [
1310
+ "eidos-data-grid-cell",
1311
+ "eidos-datagrid-expand-cell",
1312
+ expandCellPin.className
1313
+ ].filter(Boolean).join(" "),
1314
+ style: expandCellPin.style,
1315
+ onClick: (e) => e.stopPropagation(),
1316
+ children: canExpandRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1317
+ "button",
1318
+ {
1319
+ type: "button",
1320
+ className: [
1321
+ "eidos-datagrid-expand-toggle",
1322
+ isRowExpanded && "eidos-datagrid-expand-toggle--open"
1323
+ ].filter(Boolean).join(" "),
1324
+ onClick: () => toggleExpanded(rowKeyValue),
1325
+ "aria-expanded": isRowExpanded,
1326
+ "aria-label": isRowExpanded ? "Collapse row" : "Expand row",
1327
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { size: 14 })
1328
+ }
1329
+ )
1330
+ }
1331
+ ),
1332
+ selectable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1333
+ "td",
1334
+ {
1335
+ className: [
1336
+ "eidos-data-grid-cell",
1337
+ "eidos-datagrid-checkbox-cell",
1338
+ selCellPin.className
1339
+ ].filter(Boolean).join(" "),
1340
+ style: selCellPin.style,
1341
+ onClick: (e) => e.stopPropagation(),
1342
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1343
+ _chunkG2FANEA2cjs.Checkbox,
1344
+ {
1345
+ checked: isRowSelected,
1346
+ onChange: () => toggleRow(rowKeyValue),
1347
+ size: "sm"
1348
+ }
1349
+ )
1350
+ }
1351
+ ),
1352
+ showRowNumbers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1353
+ "td",
1354
+ {
1355
+ className: [
1356
+ "eidos-data-grid-cell",
1357
+ "eidos-data-grid-row-number",
1358
+ rownumCellPin.className
1359
+ ].filter(Boolean).join(" "),
1360
+ style: rownumCellPin.style,
1361
+ children: localIndex + 1
1362
+ }
1363
+ ),
1364
+ sortedColumns.map((col) => {
1365
+ const value = row[col.key];
1366
+ const isEditing = _optionalChain([editingCell, 'optionalAccess', _35 => _35.rowIndex]) === localIndex && _optionalChain([editingCell, 'optionalAccess', _36 => _36.colKey]) === col.key;
1367
+ const canEdit = isCellEditable(col);
1368
+ const isFlagged = cellErrorKey(localIndex, col.key) in cellErrors;
1369
+ const hasError = isEditing && Boolean(editError);
1370
+ const { style: pinnedStyle, className: pinnedClass } = getCellPinnedProps(col.key);
1371
+ const cellCls = [
1372
+ "eidos-data-grid-cell",
1373
+ isEditing && "eidos-data-grid-cell--editing",
1374
+ hasError && "eidos-data-grid-cell--error",
1375
+ isFlagged && !hasError && "eidos-data-grid-cell--has-error",
1376
+ canEdit && !isEditing && "eidos-data-grid-cell--editable",
1377
+ col.type === "readonly" && "eidos-data-grid-cell--readonly",
1378
+ pinnedClass
1379
+ ].filter(Boolean).join(" ");
1380
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1381
+ "td",
1382
+ {
1383
+ ref: hasError ? errorTooltipAnchorRef : void 0,
1384
+ className: cellCls,
1385
+ style: pinnedStyle,
1386
+ onClick: () => handleCellClick(localIndex, col),
1387
+ onKeyDown: isEditing ? (e) => handleKeyDown(e, localIndex, col.key) : void 0,
1388
+ tabIndex: isEditing ? -1 : void 0,
1389
+ children: isEditing ? renderEditCell(col, editValue, row, localIndex) : renderViewCell(col, value, row, localIndex)
1390
+ },
1391
+ col.key
1392
+ );
1393
+ }),
1394
+ actionsColumn && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1395
+ "td",
1396
+ {
1397
+ className: "eidos-data-grid-cell eidos-data-grid-actions-col",
1398
+ onClick: (e) => e.stopPropagation(),
1399
+ children: renderActionsMenu(row, localIndex)
1400
+ }
1401
+ )
1402
+ ] })
1403
+ }
1404
+ ),
1405
+ expandable && renderExpandedContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1406
+ ExpandedTableRow,
1407
+ {
1408
+ isOpen: isRowExpanded,
1409
+ colSpan: totalCols,
1410
+ render: () => renderExpandedContent(row, localIndex)
1411
+ }
1412
+ )
1413
+ ] }, rowKeyValue)
1414
+ );
1415
+ }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { className: "eidos-data-grid-empty-row", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1416
+ "td",
1417
+ {
1418
+ colSpan: totalCols,
1419
+ className: "eidos-data-grid-cell eidos-data-grid-empty-cell",
1420
+ children: Object.keys(activeFilters).length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1421
+ _chunkV5JNYS77cjs.EmptyState,
1422
+ {
1423
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SearchX, {}),
1424
+ title: "No results found",
1425
+ description: "Try adjusting your filters or search terms.",
1426
+ action: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1427
+ _chunkLTOHGCU4cjs.Button,
1428
+ {
1429
+ size: "sm",
1430
+ variant: "outlined",
1431
+ color: "primary",
1432
+ onClick: () => handleFiltersChange({}),
1433
+ children: "Clear filters"
1434
+ }
1435
+ ),
1436
+ size: "sm"
1437
+ }
1438
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1439
+ _chunkV5JNYS77cjs.EmptyState,
1440
+ {
1441
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.FolderOpen, {}),
1442
+ title: emptyText,
1443
+ description: onRowAdd ? "Add a row to get started." : "There are no records to display.",
1444
+ size: "sm"
1445
+ }
1446
+ )
1447
+ }
1448
+ ) }) }) })
1449
+ ] }) })
1450
+ }
1451
+ ) }),
1452
+ showPagination && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-datagrid-footer", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1453
+ _chunkSAFSEXMUcjs.Pagination,
1454
+ {
1455
+ page: currentPage,
1456
+ totalPages,
1457
+ onChange: handlePageChange,
1458
+ totalItems: totalItemCount,
1459
+ pageSize: currentPageSize,
1460
+ onPageSizeChange: handlePageSizeChange,
1461
+ pageSizeOptions: effectivePageSizeOptions
1462
+ }
1463
+ ) }),
1464
+ activeCellError && errorTooltipPosition && _reactdom.createPortal.call(void 0,
1465
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1466
+ "div",
1467
+ {
1468
+ className: "eidos-data-grid-cell-error",
1469
+ style: { top: errorTooltipPosition.top, left: errorTooltipPosition.left },
1470
+ children: activeCellError
1471
+ }
1472
+ ),
1473
+ document.body
1474
+ )
1475
+ ]
1476
+ }
1477
+ );
1478
+ }
1479
+ var DataGrid = Object.assign(DataGridInner, { displayName: "DataGrid" });
1480
+
1481
+
1482
+
1483
+ exports.DataGrid = DataGrid;
1484
+ //# sourceMappingURL=chunk-HPIBYEGE.cjs.map