@vuer-ai/vuer-uikit 0.0.120 → 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 (790) hide show
  1. package/README.md +28 -0
  2. package/dist/SyncScroll/SyncScroll.cjs +13 -13
  3. package/dist/SyncScroll/SyncScroll.mjs +6 -6
  4. package/dist/SyncScroll/index.cjs +13 -13
  5. package/dist/SyncScroll/index.mjs +6 -6
  6. package/dist/SyncScroll/useSyncScroll.d.cts +5 -5
  7. package/dist/SyncScroll/useSyncScroll.d.ts +5 -5
  8. package/dist/{chunk-42WQWP6X.cjs → chunk-22T2AL3G.cjs} +8 -8
  9. package/dist/{chunk-NMRFBO43.mjs → chunk-2IMCDH5J.mjs} +3 -3
  10. package/dist/{chunk-EOLUDKZ3.mjs → chunk-2J466BYZ.mjs} +26 -47
  11. package/dist/{chunk-LVIZRMYN.cjs → chunk-2KBNQ5PY.cjs} +2 -2
  12. package/dist/{chunk-S7CCCMMU.cjs → chunk-34NDAZS6.cjs} +18 -9
  13. package/dist/{chunk-DM43KZU7.cjs → chunk-3F3LBOQJ.cjs} +2 -2
  14. package/dist/chunk-3JMUI4R2.cjs +136 -0
  15. package/dist/{chunk-CWS5PF67.cjs → chunk-3UQ323EB.cjs} +8 -42
  16. package/dist/{chunk-QXFFRQ7E.mjs → chunk-44U6VC46.mjs} +543 -95
  17. package/dist/{chunk-JW456O5K.mjs → chunk-4FB6B2ES.mjs} +1 -1
  18. package/dist/{chunk-66NKH2SV.cjs → chunk-4FIP3EXW.cjs} +6 -6
  19. package/dist/chunk-4SI4QV5R.cjs +14 -0
  20. package/dist/{chunk-IAFCABPY.mjs → chunk-4W7JKZVN.mjs} +3 -2
  21. package/dist/{chunk-EEGQLTSQ.cjs → chunk-4WWGBRQV.cjs} +77 -0
  22. package/dist/chunk-4Y5IF7R5.mjs +322 -0
  23. package/dist/chunk-52GNIM6H.mjs +12 -0
  24. package/dist/{chunk-X6WOCNBX.cjs → chunk-57NITJN5.cjs} +2 -2
  25. package/dist/{chunk-LMYA5IOK.mjs → chunk-5GBMVMLS.mjs} +4 -4
  26. package/dist/{chunk-QWBMDS3S.cjs → chunk-5HT74RHB.cjs} +5 -5
  27. package/dist/{chunk-4ODJAEOM.mjs → chunk-5JYH7TXY.mjs} +1 -1
  28. package/dist/{chunk-2CD4D2BR.cjs → chunk-6CJWNYHL.cjs} +3 -3
  29. package/dist/{chunk-CRX2ZCM2.cjs → chunk-6LTCLQH3.cjs} +6 -1
  30. package/dist/{chunk-WKK5UX2W.mjs → chunk-6U6LRS37.mjs} +2 -2
  31. package/dist/{chunk-4OUQ6NSX.cjs → chunk-6VIKDPCD.cjs} +2 -2
  32. package/dist/{chunk-6D7FGGSX.cjs → chunk-753HUOAI.cjs} +26 -26
  33. package/dist/{chunk-LYGYXV7S.cjs → chunk-7ICRKPIO.cjs} +16 -16
  34. package/dist/chunk-7MKCWXNV.cjs +32 -0
  35. package/dist/{chunk-FMKD5JBL.mjs → chunk-7TD77VF4.mjs} +10 -6
  36. package/dist/{chunk-5ARBIWXX.cjs → chunk-7TXGEIV3.cjs} +10 -10
  37. package/dist/chunk-7WJ73FEI.mjs +43 -0
  38. package/dist/{chunk-SLXM4F24.cjs → chunk-7YFUNCKT.cjs} +9 -9
  39. package/dist/{chunk-LGFWHV23.cjs → chunk-ACGXE2IO.cjs} +2 -2
  40. package/dist/{chunk-IU65XB2K.cjs → chunk-AFALU3AK.cjs} +2 -2
  41. package/dist/{chunk-EGIIZWP3.mjs → chunk-AFR23IX6.mjs} +1 -1
  42. package/dist/{chunk-CXPF274N.mjs → chunk-BK77KKIM.mjs} +1 -1
  43. package/dist/{chunk-4PMXRQXC.cjs → chunk-BNXJ5VBE.cjs} +6 -6
  44. package/dist/{chunk-3DIFS7CO.mjs → chunk-BPCD4L7T.mjs} +1 -1
  45. package/dist/{chunk-JQYMF2FW.cjs → chunk-BSDIS4KS.cjs} +4 -4
  46. package/dist/{chunk-REZAPK6Z.mjs → chunk-BTGAKK3B.mjs} +1 -1
  47. package/dist/{chunk-TB5L3GBP.cjs → chunk-BXJTOIRR.cjs} +584 -133
  48. package/dist/{chunk-35ZN6IW7.mjs → chunk-BYZ7HIIK.mjs} +1 -1
  49. package/dist/{chunk-XS5IUI62.cjs → chunk-BZI74LKX.cjs} +3 -2
  50. package/dist/{chunk-2IS7TXTN.mjs → chunk-CENP2PIB.mjs} +1 -1
  51. package/dist/{chunk-SAXISARG.cjs → chunk-CMO3SLOU.cjs} +2 -2
  52. package/dist/{chunk-CIOLL5LX.mjs → chunk-CN6SZKJZ.mjs} +1 -1
  53. package/dist/chunk-CRY23RMB.mjs +30 -0
  54. package/dist/{chunk-7AAMQGY2.cjs → chunk-CYWVJ3HF.cjs} +7 -7
  55. package/dist/{chunk-EVBYVJTW.mjs → chunk-D2LUQKPM.mjs} +130 -91
  56. package/dist/chunk-DF7WIFZK.cjs +316 -0
  57. package/dist/chunk-DKLVWYTC.cjs +71 -0
  58. package/dist/chunk-DKWLF3KW.mjs +149 -0
  59. package/dist/{chunk-F2LEYFWW.cjs → chunk-DPJPOBUT.cjs} +5 -5
  60. package/dist/{chunk-SR3M2R3S.mjs → chunk-DSQPFXYL.mjs} +22 -24
  61. package/dist/chunk-DVUN6GQI.cjs +21 -0
  62. package/dist/{chunk-7ACZU3BT.mjs → chunk-EG6JETUN.mjs} +1 -1
  63. package/dist/{chunk-T4U3BG2V.mjs → chunk-EGJLY5VZ.mjs} +1 -1
  64. package/dist/{chunk-AE5YDMFT.mjs → chunk-EXM6QMNR.mjs} +3 -3
  65. package/dist/{chunk-H6JGIEAU.mjs → chunk-EYMZP5PL.mjs} +1 -1
  66. package/dist/{chunk-K2ZYSKRU.mjs → chunk-EZ536NLQ.mjs} +1 -1
  67. package/dist/chunk-FRM27RLN.cjs +264 -0
  68. package/dist/chunk-FTB337IJ.cjs +143 -0
  69. package/dist/{chunk-7A5EMDZH.mjs → chunk-G35PQKU5.mjs} +5 -5
  70. package/dist/{chunk-ZJSL6HSL.mjs → chunk-GAAP5JO4.mjs} +1 -1
  71. package/dist/chunk-GHQA7PER.mjs +107 -0
  72. package/dist/{chunk-ND3WJ63Z.cjs → chunk-GVRVRBDU.cjs} +2 -2
  73. package/dist/chunk-GZ2BG42R.mjs +34 -0
  74. package/dist/chunk-H3JRYX2U.mjs +19 -0
  75. package/dist/{chunk-T66ETI7E.mjs → chunk-HBEU2PU2.mjs} +6 -1
  76. package/dist/{chunk-SMXN2KOV.mjs → chunk-HGTL7DFT.mjs} +1 -1
  77. package/dist/{chunk-JFPIUDGT.mjs → chunk-HI4LO6IJ.mjs} +1 -1
  78. package/dist/{chunk-QO2AM6MF.mjs → chunk-HIDTQ4Z2.mjs} +1 -1
  79. package/dist/{chunk-DDU3SPCC.mjs → chunk-HNW2DRPV.mjs} +58 -9
  80. package/dist/{chunk-5AKVDZMA.cjs → chunk-HSUL5OUG.cjs} +14 -13
  81. package/dist/{chunk-EY6PKK4X.cjs → chunk-I2COLDHC.cjs} +2 -2
  82. package/dist/chunk-IAWMCOHS.cjs +45 -0
  83. package/dist/chunk-IM5QVMGO.cjs +2 -0
  84. package/dist/{chunk-UQQBUPGF.mjs → chunk-IPMWGCAI.mjs} +5 -21
  85. package/dist/{chunk-SCUMWMIN.mjs → chunk-ITOTSGSL.mjs} +1 -1
  86. package/dist/{chunk-NJWKR5WR.mjs → chunk-IYTGWOZY.mjs} +1 -1
  87. package/dist/chunk-J74A5LNZ.cjs +179 -0
  88. package/dist/{chunk-CKGEV2JL.cjs → chunk-JDEZ6NNG.cjs} +2 -2
  89. package/dist/chunk-JEWTYDLX.cjs +119 -0
  90. package/dist/{chunk-Q7WCKEXG.cjs → chunk-JF43YF6J.cjs} +3 -3
  91. package/dist/chunk-JTFQFULL.cjs +166 -0
  92. package/dist/{chunk-XQ3MWA3D.mjs → chunk-KXKUQSNY.mjs} +3 -3
  93. package/dist/chunk-L2AKG4VJ.mjs +258 -0
  94. package/dist/{chunk-ZCSJGDX7.mjs → chunk-L2DME42Q.mjs} +1 -1
  95. package/dist/{chunk-K2BQNNEX.cjs → chunk-L6W77P4B.cjs} +8 -8
  96. package/dist/{chunk-N4Y5CBOI.cjs → chunk-LGUQR5AR.cjs} +4 -4
  97. package/dist/{chunk-ZA7WOIIB.mjs → chunk-LHP7FLGK.mjs} +1 -1
  98. package/dist/{chunk-MYZHDWBF.mjs → chunk-LLFE3UHZ.mjs} +10 -10
  99. package/dist/{chunk-332A4MHC.mjs → chunk-LNYUFL3Q.mjs} +1 -1
  100. package/dist/{chunk-BUAWPPXA.cjs → chunk-MQ5DGLVE.cjs} +11 -11
  101. package/dist/{chunk-EXY6WRH4.mjs → chunk-N6KP2HIC.mjs} +2 -2
  102. package/dist/{chunk-V75PKBIV.cjs → chunk-NEJKCSS5.cjs} +9 -9
  103. package/dist/{chunk-KPGZOX2A.cjs → chunk-NHFIDL5X.cjs} +5 -5
  104. package/dist/{chunk-JNV3UBBP.cjs → chunk-NIACIZWY.cjs} +6 -22
  105. package/dist/{chunk-PC5DHSC4.mjs → chunk-NKUK73WB.mjs} +71 -1
  106. package/dist/{chunk-5OZS5UJX.cjs → chunk-NSPAT6XV.cjs} +7 -7
  107. package/dist/chunk-NUBFD3YP.mjs +117 -0
  108. package/dist/{chunk-4BQPIY5Z.mjs → chunk-O2NGB7YP.mjs} +1 -1
  109. package/dist/{chunk-7H7U2X45.cjs → chunk-O3DFVRON.cjs} +17 -13
  110. package/dist/chunk-O57DAVOQ.mjs +1 -0
  111. package/dist/{chunk-S37MJNNP.cjs → chunk-OCADGDGL.cjs} +2 -2
  112. package/dist/{chunk-ZSAPBZ36.mjs → chunk-OW653F7T.mjs} +1 -1
  113. package/dist/{chunk-GRXUYMZJ.cjs → chunk-OX5FXH6W.cjs} +4 -4
  114. package/dist/{chunk-GQYUSBSO.mjs → chunk-P3FBRYWH.mjs} +3 -10
  115. package/dist/{chunk-P3YSHGT5.mjs → chunk-P55DAW6H.mjs} +1 -1
  116. package/dist/{chunk-JOOURIX7.cjs → chunk-P6E4WLMD.cjs} +4 -4
  117. package/dist/{chunk-WDSOII5A.cjs → chunk-P7J7XHDE.cjs} +2 -2
  118. package/dist/chunk-PHRZ5JE6.mjs +1 -0
  119. package/dist/{chunk-F3HOBNGR.cjs → chunk-PMG3NZF5.cjs} +4 -4
  120. package/dist/chunk-PMYOKSO3.mjs +30 -0
  121. package/dist/chunk-PTUZYCOY.mjs +314 -0
  122. package/dist/{chunk-PV6CEMTT.cjs → chunk-PWZ4F3WY.cjs} +4 -4
  123. package/dist/{chunk-QBAZ6TKZ.cjs → chunk-PZZW3E5D.cjs} +2 -2
  124. package/dist/chunk-Q3UN25WC.mjs +141 -0
  125. package/dist/{chunk-MXGPFCLN.cjs → chunk-QS6WNNLM.cjs} +2 -2
  126. package/dist/{chunk-PR3BCKLJ.mjs → chunk-QSDYNIZB.mjs} +2 -1
  127. package/dist/{chunk-GTBXRWCK.cjs → chunk-QTLUPDLH.cjs} +8 -7
  128. package/dist/{chunk-BXZSWY4N.mjs → chunk-QYJZ5KA6.mjs} +1 -1
  129. package/dist/{chunk-JYYAGDLZ.cjs → chunk-R22VW3EK.cjs} +2 -2
  130. package/dist/{chunk-NKGUQZTD.cjs → chunk-RHVKIZMQ.cjs} +2 -2
  131. package/dist/{chunk-U22YVR7M.mjs → chunk-RLY4A3IY.mjs} +15 -6
  132. package/dist/{chunk-OJOWMXXY.mjs → chunk-RR76Z6OK.mjs} +3 -3
  133. package/dist/{chunk-D562KO2I.mjs → chunk-RWHVZM2B.mjs} +2 -2
  134. package/dist/chunk-S4C7HO32.cjs +36 -0
  135. package/dist/chunk-SBAVMK7J.cjs +181 -0
  136. package/dist/{chunk-DAVMLI3P.cjs → chunk-SNUQOJLK.cjs} +4 -4
  137. package/dist/{chunk-KY2PYKDZ.mjs → chunk-SO5KFX2C.mjs} +1 -1
  138. package/dist/{chunk-HB65PF7F.cjs → chunk-SOHGIAGF.cjs} +2 -2
  139. package/dist/{chunk-RW4T7UBU.cjs → chunk-STJMH4NX.cjs} +3 -3
  140. package/dist/{chunk-VYINXXYX.cjs → chunk-SUWJDU3Y.cjs} +59 -61
  141. package/dist/chunk-T2BDPMCF.cjs +358 -0
  142. package/dist/{chunk-U5W4ZALG.cjs → chunk-T2OAWYOU.cjs} +6 -6
  143. package/dist/{chunk-Q7VP2WSX.mjs → chunk-TCCFFSXM.mjs} +29 -12
  144. package/dist/{chunk-PRNBDGOF.cjs → chunk-THE6FZKP.cjs} +29 -49
  145. package/dist/{chunk-RGOZPSTI.mjs → chunk-TMBHKVKH.mjs} +1 -1
  146. package/dist/chunk-TQOGGHSJ.mjs +23 -0
  147. package/dist/{chunk-VTW2DF63.mjs → chunk-TWDDNHRP.mjs} +1 -1
  148. package/dist/{chunk-DDIB73SZ.mjs → chunk-UB3ELCFR.mjs} +4 -4
  149. package/dist/{chunk-XTLGNJIO.mjs → chunk-UBGNADCN.mjs} +1 -1
  150. package/dist/chunk-UCAIVC2B.cjs +32 -0
  151. package/dist/chunk-UEHPZIQB.cjs +2 -0
  152. package/dist/{chunk-ASZIBFA6.cjs → chunk-UZTOUPJ7.cjs} +131 -92
  153. package/dist/{chunk-3NIMV5PH.mjs → chunk-V4THHKSO.mjs} +1 -1
  154. package/dist/{chunk-G5VBLDAM.mjs → chunk-VBEVJE7Q.mjs} +1 -1
  155. package/dist/chunk-VDYJAOMN.mjs +177 -0
  156. package/dist/{chunk-64VVW5YR.mjs → chunk-VLNU7Y2K.mjs} +8 -43
  157. package/dist/{chunk-ZS7ESTKH.cjs → chunk-VT6E2N6C.cjs} +8 -12
  158. package/dist/{chunk-OLYHHP67.mjs → chunk-VWLZKPDB.mjs} +6 -5
  159. package/dist/{chunk-UMGNAR3W.cjs → chunk-W22SQYEO.cjs} +8 -8
  160. package/dist/{chunk-VWVYCQWF.mjs → chunk-WBM7ATPT.mjs} +1 -1
  161. package/dist/{chunk-CH3BSVL4.cjs → chunk-WGY33IHV.cjs} +2 -2
  162. package/dist/{chunk-DAA2GQAS.cjs → chunk-WRJAYU2L.cjs} +27 -27
  163. package/dist/{chunk-7AEOJFD4.cjs → chunk-WX3VWVWD.cjs} +2 -2
  164. package/dist/{chunk-EBFPZBUQ.cjs → chunk-WYUJM72T.cjs} +7 -7
  165. package/dist/{chunk-EK3BTKZP.cjs → chunk-WZQ2BT3P.cjs} +142 -26
  166. package/dist/{chunk-KR7VBV3B.cjs → chunk-XIDCYS6G.cjs} +2 -1
  167. package/dist/{chunk-WHV6Z7YX.mjs → chunk-XIESS6HW.mjs} +1 -1
  168. package/dist/{chunk-UIJEAY6H.mjs → chunk-XTZURZIR.mjs} +1 -1
  169. package/dist/{chunk-7AZ3PLUC.mjs → chunk-XZLQHASB.mjs} +1 -1
  170. package/dist/{chunk-SRZ56OJH.mjs → chunk-XZTEU7ME.mjs} +3 -3
  171. package/dist/{chunk-RLTLA7VS.mjs → chunk-Y2IIKDRY.mjs} +1 -1
  172. package/dist/chunk-YDF6VWBW.cjs +151 -0
  173. package/dist/{chunk-CR6JOOO3.cjs → chunk-YGZHBIZP.cjs} +3 -10
  174. package/dist/{chunk-TWQONYWC.mjs → chunk-YMMSHGYC.mjs} +1 -1
  175. package/dist/chunk-YQL6JDVP.cjs +21 -0
  176. package/dist/{chunk-Q37KC3CL.mjs → chunk-YRNI7ZJ7.mjs} +134 -18
  177. package/dist/{chunk-3ZEQVODC.cjs → chunk-ZAK7AFVY.cjs} +2 -2
  178. package/dist/{chunk-W3IHFG4B.cjs → chunk-ZG33TW5I.cjs} +8 -8
  179. package/dist/{chunk-FK6ZROZE.mjs → chunk-ZJYPKTF4.mjs} +2 -1
  180. package/dist/chunk-ZMRODJ3I.mjs +149 -0
  181. package/dist/{chunk-AHD46BFN.mjs → chunk-ZQOQB6GF.mjs} +1 -1
  182. package/dist/dial/DialPanel.cjs +104 -92
  183. package/dist/dial/DialPanel.d.cts +5 -5
  184. package/dist/dial/DialPanel.d.ts +5 -5
  185. package/dist/dial/DialPanel.mjs +103 -91
  186. package/dist/dial/DialProvider.d.cts +16 -51
  187. package/dist/dial/DialProvider.d.ts +16 -51
  188. package/dist/dial/IconRenderer.d.cts +2 -2
  189. package/dist/dial/IconRenderer.d.ts +2 -2
  190. package/dist/dial/components/DialButton.cjs +22 -0
  191. package/dist/dial/components/DialButton.d.cts +28 -0
  192. package/dist/dial/components/DialButton.d.ts +28 -0
  193. package/dist/dial/components/DialButton.mjs +13 -0
  194. package/dist/dial/components/DialCustom.cjs +11 -0
  195. package/dist/dial/components/DialCustom.d.cts +34 -0
  196. package/dist/dial/components/DialCustom.d.ts +34 -0
  197. package/dist/dial/components/DialCustom.mjs +2 -0
  198. package/dist/dial/components/index.cjs +29 -0
  199. package/dist/dial/components/index.d.cts +4 -0
  200. package/dist/dial/components/index.d.ts +4 -0
  201. package/dist/dial/components/index.mjs +16 -0
  202. package/dist/dial/index.cjs +128 -108
  203. package/dist/dial/index.d.cts +5 -1
  204. package/dist/dial/index.d.ts +5 -1
  205. package/dist/dial/index.mjs +103 -91
  206. package/dist/dial/types.cjs +4 -0
  207. package/dist/dial/types.d.cts +21 -0
  208. package/dist/dial/types.d.ts +21 -0
  209. package/dist/dial/types.mjs +1 -0
  210. package/dist/dial/wrapped-inputs/ControlledInputs.cjs +108 -96
  211. package/dist/dial/wrapped-inputs/ControlledInputs.d.cts +8 -8
  212. package/dist/dial/wrapped-inputs/ControlledInputs.d.ts +8 -8
  213. package/dist/dial/wrapped-inputs/ControlledInputs.mjs +103 -91
  214. package/dist/dial/wrapped-inputs/DialArrayInput.cjs +139 -0
  215. package/dist/dial/wrapped-inputs/DialArrayInput.d.cts +20 -0
  216. package/dist/dial/wrapped-inputs/DialArrayInput.d.ts +20 -0
  217. package/dist/dial/wrapped-inputs/DialArrayInput.mjs +130 -0
  218. package/dist/dial/wrapped-inputs/DialInputs.cjs +117 -105
  219. package/dist/dial/wrapped-inputs/DialInputs.d.cts +19 -17
  220. package/dist/dial/wrapped-inputs/DialInputs.d.ts +19 -17
  221. package/dist/dial/wrapped-inputs/DialInputs.mjs +103 -91
  222. package/dist/dial/wrapped-inputs/DialInterfaceInput.cjs +139 -0
  223. package/dist/dial/wrapped-inputs/DialInterfaceInput.d.cts +13 -0
  224. package/dist/dial/wrapped-inputs/DialInterfaceInput.d.ts +13 -0
  225. package/dist/dial/wrapped-inputs/DialInterfaceInput.mjs +130 -0
  226. package/dist/dial/wrapped-inputs/DialPresetsInput.cjs +94 -86
  227. package/dist/dial/wrapped-inputs/DialPresetsInput.d.cts +4 -4
  228. package/dist/dial/wrapped-inputs/DialPresetsInput.d.ts +4 -4
  229. package/dist/dial/wrapped-inputs/DialPresetsInput.mjs +93 -85
  230. package/dist/dial/wrapped-inputs/DialTupleInput.cjs +139 -0
  231. package/dist/dial/wrapped-inputs/DialTupleInput.d.cts +18 -0
  232. package/dist/dial/wrapped-inputs/DialTupleInput.d.ts +18 -0
  233. package/dist/dial/wrapped-inputs/DialTupleInput.mjs +130 -0
  234. package/dist/dial/wrapped-inputs/DialVectorInput.cjs +104 -92
  235. package/dist/dial/wrapped-inputs/DialVectorInput.d.cts +2 -2
  236. package/dist/dial/wrapped-inputs/DialVectorInput.d.ts +2 -2
  237. package/dist/dial/wrapped-inputs/DialVectorInput.mjs +103 -91
  238. package/dist/dial/wrapped-inputs/index.cjs +132 -112
  239. package/dist/dial/wrapped-inputs/index.d.cts +4 -2
  240. package/dist/dial/wrapped-inputs/index.d.ts +4 -2
  241. package/dist/dial/wrapped-inputs/index.mjs +103 -91
  242. package/dist/highlight-cursor/cursor-context.d.cts +2 -2
  243. package/dist/highlight-cursor/cursor-context.d.ts +2 -2
  244. package/dist/highlight-cursor/cursor-provider.cjs +3 -3
  245. package/dist/highlight-cursor/cursor-provider.d.cts +1 -1
  246. package/dist/highlight-cursor/cursor-provider.d.ts +1 -1
  247. package/dist/highlight-cursor/cursor-provider.mjs +2 -2
  248. package/dist/highlight-cursor/enhanced-components.cjs +16 -16
  249. package/dist/highlight-cursor/enhanced-components.d.cts +4 -4
  250. package/dist/highlight-cursor/enhanced-components.d.ts +4 -4
  251. package/dist/highlight-cursor/enhanced-components.mjs +11 -11
  252. package/dist/highlight-cursor/index.cjs +21 -21
  253. package/dist/highlight-cursor/index.mjs +12 -12
  254. package/dist/highlight-cursor/types.d.cts +2 -1
  255. package/dist/highlight-cursor/types.d.ts +2 -1
  256. package/dist/highlight-cursor/with-cursor.d.cts +2 -2
  257. package/dist/highlight-cursor/with-cursor.d.ts +2 -2
  258. package/dist/hooks/clientOnly.d.cts +4 -4
  259. package/dist/hooks/clientOnly.d.ts +4 -4
  260. package/dist/hooks/cn.cjs +2 -2
  261. package/dist/hooks/cn.mjs +1 -1
  262. package/dist/hooks/index.cjs +22 -22
  263. package/dist/hooks/index.mjs +5 -5
  264. package/dist/hooks/useIsMobile.cjs +2 -2
  265. package/dist/hooks/useIsMobile.mjs +1 -1
  266. package/dist/index.cjs +587 -407
  267. package/dist/index.css +13 -76
  268. package/dist/index.d.cts +20 -6
  269. package/dist/index.d.ts +20 -6
  270. package/dist/index.mjs +103 -91
  271. package/dist/schema-types-D9b7Dc1G.d.cts +163 -0
  272. package/dist/schema-types-D9b7Dc1G.d.ts +163 -0
  273. package/dist/styles/theme.css +1 -1
  274. package/dist/ui/DialBadge.cjs +10 -10
  275. package/dist/ui/DialBadge.mjs +6 -6
  276. package/dist/ui/UIKitBadge.cjs +10 -10
  277. package/dist/ui/UIKitBadge.mjs +6 -6
  278. package/dist/ui/alert-dialog.cjs +60 -0
  279. package/dist/ui/alert-dialog.d.cts +17 -0
  280. package/dist/ui/alert-dialog.d.ts +17 -0
  281. package/dist/ui/alert-dialog.mjs +11 -0
  282. package/dist/ui/avatar.cjs +10 -10
  283. package/dist/ui/avatar.d.cts +2 -2
  284. package/dist/ui/avatar.d.ts +2 -2
  285. package/dist/ui/avatar.mjs +6 -6
  286. package/dist/ui/badge.cjs +8 -8
  287. package/dist/ui/badge.d.cts +2 -2
  288. package/dist/ui/badge.d.ts +2 -2
  289. package/dist/ui/badge.mjs +6 -6
  290. package/dist/ui/button.cjs +8 -8
  291. package/dist/ui/button.d.cts +3 -3
  292. package/dist/ui/button.d.ts +3 -3
  293. package/dist/ui/button.mjs +6 -6
  294. package/dist/ui/card.cjs +14 -13
  295. package/dist/ui/card.d.cts +14 -2
  296. package/dist/ui/card.d.ts +14 -2
  297. package/dist/ui/card.mjs +7 -6
  298. package/dist/ui/checkbox.cjs +7 -7
  299. package/dist/ui/checkbox.mjs +6 -6
  300. package/dist/ui/collapsible.cjs +9 -9
  301. package/dist/ui/collapsible.mjs +6 -6
  302. package/dist/ui/context-menu.cjs +76 -0
  303. package/dist/ui/context-menu.d.cts +28 -0
  304. package/dist/ui/context-menu.d.ts +28 -0
  305. package/dist/ui/context-menu.mjs +11 -0
  306. package/dist/ui/drag-selectable/createSelectable.d.cts +2 -2
  307. package/dist/ui/drag-selectable/createSelectable.d.ts +2 -2
  308. package/dist/ui/drawer.cjs +16 -16
  309. package/dist/ui/drawer.d.cts +11 -11
  310. package/dist/ui/drawer.d.ts +11 -11
  311. package/dist/ui/drawer.mjs +6 -6
  312. package/dist/ui/dropdown.cjs +21 -21
  313. package/dist/ui/dropdown.mjs +6 -6
  314. package/dist/ui/index.cjs +485 -317
  315. package/dist/ui/index.d.cts +15 -5
  316. package/dist/ui/index.d.ts +15 -5
  317. package/dist/ui/index.mjs +90 -82
  318. package/dist/ui/inputs/color-input.cjs +8 -8
  319. package/dist/ui/inputs/color-input.d.cts +7 -3
  320. package/dist/ui/inputs/color-input.d.ts +7 -3
  321. package/dist/ui/inputs/color-input.mjs +7 -7
  322. package/dist/ui/inputs/index.cjs +56 -56
  323. package/dist/ui/inputs/index.mjs +25 -25
  324. package/dist/ui/inputs/input-numbers.cjs +8 -8
  325. package/dist/ui/inputs/input-numbers.d.cts +7 -3
  326. package/dist/ui/inputs/input-numbers.d.ts +7 -3
  327. package/dist/ui/inputs/input-numbers.mjs +7 -7
  328. package/dist/ui/inputs/input.cjs +9 -9
  329. package/dist/ui/inputs/input.d.cts +4 -4
  330. package/dist/ui/inputs/input.d.ts +4 -4
  331. package/dist/ui/inputs/input.mjs +6 -6
  332. package/dist/ui/inputs/number-inputs/CmInput.cjs +9 -9
  333. package/dist/ui/inputs/number-inputs/CmInput.d.cts +2 -2
  334. package/dist/ui/inputs/number-inputs/CmInput.d.ts +2 -2
  335. package/dist/ui/inputs/number-inputs/CmInput.mjs +8 -8
  336. package/dist/ui/inputs/number-inputs/DegInput.cjs +9 -9
  337. package/dist/ui/inputs/number-inputs/DegInput.d.cts +2 -2
  338. package/dist/ui/inputs/number-inputs/DegInput.d.ts +2 -2
  339. package/dist/ui/inputs/number-inputs/DegInput.mjs +8 -8
  340. package/dist/ui/inputs/number-inputs/EulerDegInput.cjs +11 -11
  341. package/dist/ui/inputs/number-inputs/EulerDegInput.d.cts +2 -2
  342. package/dist/ui/inputs/number-inputs/EulerDegInput.d.ts +2 -2
  343. package/dist/ui/inputs/number-inputs/EulerDegInput.mjs +10 -10
  344. package/dist/ui/inputs/number-inputs/EulerInput.cjs +10 -10
  345. package/dist/ui/inputs/number-inputs/EulerInput.d.cts +2 -2
  346. package/dist/ui/inputs/number-inputs/EulerInput.d.ts +2 -2
  347. package/dist/ui/inputs/number-inputs/EulerInput.mjs +9 -9
  348. package/dist/ui/inputs/number-inputs/EulerRadInput.cjs +10 -10
  349. package/dist/ui/inputs/number-inputs/EulerRadInput.d.cts +2 -2
  350. package/dist/ui/inputs/number-inputs/EulerRadInput.d.ts +2 -2
  351. package/dist/ui/inputs/number-inputs/EulerRadInput.mjs +9 -9
  352. package/dist/ui/inputs/number-inputs/InchInput.cjs +9 -9
  353. package/dist/ui/inputs/number-inputs/InchInput.d.cts +2 -2
  354. package/dist/ui/inputs/number-inputs/InchInput.d.ts +2 -2
  355. package/dist/ui/inputs/number-inputs/InchInput.mjs +8 -8
  356. package/dist/ui/inputs/number-inputs/IntInput.cjs +9 -9
  357. package/dist/ui/inputs/number-inputs/IntInput.d.cts +2 -2
  358. package/dist/ui/inputs/number-inputs/IntInput.d.ts +2 -2
  359. package/dist/ui/inputs/number-inputs/IntInput.mjs +8 -8
  360. package/dist/ui/inputs/number-inputs/KVectorInput.cjs +10 -10
  361. package/dist/ui/inputs/number-inputs/KVectorInput.d.cts +2 -2
  362. package/dist/ui/inputs/number-inputs/KVectorInput.d.ts +2 -2
  363. package/dist/ui/inputs/number-inputs/KVectorInput.mjs +9 -9
  364. package/dist/ui/inputs/number-inputs/QuaternionInput.cjs +10 -10
  365. package/dist/ui/inputs/number-inputs/QuaternionInput.d.cts +2 -2
  366. package/dist/ui/inputs/number-inputs/QuaternionInput.d.ts +2 -2
  367. package/dist/ui/inputs/number-inputs/QuaternionInput.mjs +9 -9
  368. package/dist/ui/inputs/number-inputs/RadInput.cjs +9 -9
  369. package/dist/ui/inputs/number-inputs/RadInput.d.cts +2 -2
  370. package/dist/ui/inputs/number-inputs/RadInput.d.ts +2 -2
  371. package/dist/ui/inputs/number-inputs/RadInput.mjs +8 -8
  372. package/dist/ui/inputs/number-inputs/TimeInput.cjs +9 -9
  373. package/dist/ui/inputs/number-inputs/TimeInput.d.cts +2 -2
  374. package/dist/ui/inputs/number-inputs/TimeInput.d.ts +2 -2
  375. package/dist/ui/inputs/number-inputs/TimeInput.mjs +8 -8
  376. package/dist/ui/inputs/number-inputs/Vec3Input.cjs +10 -10
  377. package/dist/ui/inputs/number-inputs/Vec3Input.d.cts +2 -2
  378. package/dist/ui/inputs/number-inputs/Vec3Input.d.ts +2 -2
  379. package/dist/ui/inputs/number-inputs/Vec3Input.mjs +9 -9
  380. package/dist/ui/inputs/number-inputs/VectorInput.cjs +9 -9
  381. package/dist/ui/inputs/number-inputs/VectorInput.d.cts +4 -2
  382. package/dist/ui/inputs/number-inputs/VectorInput.d.ts +4 -2
  383. package/dist/ui/inputs/number-inputs/VectorInput.mjs +8 -8
  384. package/dist/ui/inputs/number-inputs/index.cjs +42 -42
  385. package/dist/ui/inputs/number-inputs/index.mjs +20 -20
  386. package/dist/ui/inputs/presets-input.cjs +10 -10
  387. package/dist/ui/inputs/presets-input.d.cts +2 -2
  388. package/dist/ui/inputs/presets-input.d.ts +2 -2
  389. package/dist/ui/inputs/presets-input.mjs +9 -9
  390. package/dist/ui/inputs/presets-rad-input.cjs +11 -11
  391. package/dist/ui/inputs/presets-rad-input.d.cts +2 -2
  392. package/dist/ui/inputs/presets-rad-input.d.ts +2 -2
  393. package/dist/ui/inputs/presets-rad-input.mjs +10 -10
  394. package/dist/ui/inputs/text-input.cjs +8 -8
  395. package/dist/ui/inputs/text-input.d.cts +2 -2
  396. package/dist/ui/inputs/text-input.d.ts +2 -2
  397. package/dist/ui/inputs/text-input.mjs +7 -7
  398. package/dist/ui/label.cjs +7 -7
  399. package/dist/ui/label.d.cts +4 -4
  400. package/dist/ui/label.d.ts +4 -4
  401. package/dist/ui/label.mjs +6 -6
  402. package/dist/ui/layout.cjs +7 -7
  403. package/dist/ui/layout.mjs +6 -6
  404. package/dist/ui/layouts/dock-layout/DockLayoutView.cjs +8 -8
  405. package/dist/ui/layouts/dock-layout/DockLayoutView.d.cts +2 -1
  406. package/dist/ui/layouts/dock-layout/DockLayoutView.d.ts +2 -1
  407. package/dist/ui/layouts/dock-layout/DockLayoutView.mjs +7 -7
  408. package/dist/ui/layouts/dock-layout/LayoutSlots.cjs +12 -12
  409. package/dist/ui/layouts/dock-layout/LayoutSlots.d.cts +3 -3
  410. package/dist/ui/layouts/dock-layout/LayoutSlots.d.ts +3 -3
  411. package/dist/ui/layouts/dock-layout/LayoutSlots.mjs +6 -6
  412. package/dist/ui/layouts/dock-layout/index.cjs +14 -14
  413. package/dist/ui/layouts/dock-layout/index.mjs +7 -7
  414. package/dist/ui/layouts/index.cjs +20 -20
  415. package/dist/ui/layouts/index.mjs +9 -9
  416. package/dist/ui/layouts/liquid-layout/LayoutSlots.cjs +12 -12
  417. package/dist/ui/layouts/liquid-layout/LayoutSlots.mjs +6 -6
  418. package/dist/ui/layouts/liquid-layout/LiquidLayoutView.cjs +8 -8
  419. package/dist/ui/layouts/liquid-layout/LiquidLayoutView.d.cts +13 -1
  420. package/dist/ui/layouts/liquid-layout/LiquidLayoutView.d.ts +13 -1
  421. package/dist/ui/layouts/liquid-layout/LiquidLayoutView.mjs +7 -7
  422. package/dist/ui/layouts/liquid-layout/index.cjs +8 -8
  423. package/dist/ui/layouts/liquid-layout/index.mjs +7 -7
  424. package/dist/ui/modal.cjs +16 -16
  425. package/dist/ui/modal.mjs +6 -6
  426. package/dist/ui/navigation.cjs +8 -8
  427. package/dist/ui/navigation.d.cts +2 -2
  428. package/dist/ui/navigation.d.ts +2 -2
  429. package/dist/ui/navigation.mjs +7 -7
  430. package/dist/ui/pagination.cjs +14 -14
  431. package/dist/ui/pagination.mjs +7 -7
  432. package/dist/ui/popover.cjs +14 -10
  433. package/dist/ui/popover.d.cts +18 -8
  434. package/dist/ui/popover.d.ts +18 -8
  435. package/dist/ui/popover.mjs +6 -6
  436. package/dist/ui/progress.cjs +7 -7
  437. package/dist/ui/progress.d.cts +1 -1
  438. package/dist/ui/progress.d.ts +1 -1
  439. package/dist/ui/progress.mjs +6 -6
  440. package/dist/ui/radio-group.cjs +8 -8
  441. package/dist/ui/radio-group.mjs +6 -6
  442. package/dist/ui/resizable.cjs +9 -9
  443. package/dist/ui/resizable.d.cts +2 -2
  444. package/dist/ui/resizable.d.ts +2 -2
  445. package/dist/ui/resizable.mjs +6 -6
  446. package/dist/ui/select.cjs +17 -17
  447. package/dist/ui/select.d.cts +3 -2
  448. package/dist/ui/select.d.ts +3 -2
  449. package/dist/ui/select.mjs +6 -6
  450. package/dist/ui/separator.cjs +7 -7
  451. package/dist/ui/separator.mjs +6 -6
  452. package/dist/ui/sheet.cjs +14 -14
  453. package/dist/ui/sheet.d.cts +26 -13
  454. package/dist/ui/sheet.d.ts +26 -13
  455. package/dist/ui/sheet.mjs +6 -6
  456. package/dist/ui/sidebar.cjs +36 -36
  457. package/dist/ui/sidebar.mjs +12 -12
  458. package/dist/ui/simple-tree-view.cjs +7 -7
  459. package/dist/ui/simple-tree-view.d.cts +2 -2
  460. package/dist/ui/simple-tree-view.d.ts +2 -2
  461. package/dist/ui/simple-tree-view.mjs +6 -6
  462. package/dist/ui/skeleton.cjs +7 -7
  463. package/dist/ui/skeleton.mjs +6 -6
  464. package/dist/ui/slider.cjs +7 -7
  465. package/dist/ui/slider.d.cts +2 -2
  466. package/dist/ui/slider.d.ts +2 -2
  467. package/dist/ui/slider.mjs +6 -6
  468. package/dist/ui/switch.cjs +7 -7
  469. package/dist/ui/switch.d.cts +4 -1
  470. package/dist/ui/switch.d.ts +4 -1
  471. package/dist/ui/switch.mjs +6 -6
  472. package/dist/ui/table.cjs +14 -14
  473. package/dist/ui/table.d.cts +9 -9
  474. package/dist/ui/table.d.ts +9 -9
  475. package/dist/ui/table.mjs +6 -6
  476. package/dist/ui/tabs.cjs +14 -10
  477. package/dist/ui/tabs.d.cts +25 -7
  478. package/dist/ui/tabs.d.ts +25 -7
  479. package/dist/ui/tabs.mjs +6 -6
  480. package/dist/ui/textarea.cjs +7 -7
  481. package/dist/ui/textarea.d.cts +1 -1
  482. package/dist/ui/textarea.d.ts +1 -1
  483. package/dist/ui/textarea.mjs +6 -6
  484. package/dist/ui/theme/ThemeProvider.cjs +15 -15
  485. package/dist/ui/theme/ThemeProvider.d.cts +3 -3
  486. package/dist/ui/theme/ThemeProvider.d.ts +3 -3
  487. package/dist/ui/theme/ThemeProvider.mjs +1 -1
  488. package/dist/ui/theme/ThemeToggles.cjs +11 -11
  489. package/dist/ui/theme/ThemeToggles.d.cts +18 -3
  490. package/dist/ui/theme/ThemeToggles.d.ts +18 -3
  491. package/dist/ui/theme/ThemeToggles.mjs +9 -9
  492. package/dist/ui/theme/index.cjs +15 -15
  493. package/dist/ui/theme/index.mjs +9 -9
  494. package/dist/ui/theme/themeScript.d.cts +2 -2
  495. package/dist/ui/theme/themeScript.d.ts +2 -2
  496. package/dist/ui/toast.cjs +19 -3
  497. package/dist/ui/toast.d.cts +1 -1
  498. package/dist/ui/toast.d.ts +1 -1
  499. package/dist/ui/toast.mjs +17 -1
  500. package/dist/ui/toggle-buttons.cjs +11 -11
  501. package/dist/ui/toggle-buttons.d.cts +7 -7
  502. package/dist/ui/toggle-buttons.d.ts +7 -7
  503. package/dist/ui/toggle-buttons.mjs +6 -6
  504. package/dist/ui/toggle-group.cjs +9 -9
  505. package/dist/ui/toggle-group.d.cts +3 -3
  506. package/dist/ui/toggle-group.d.ts +3 -3
  507. package/dist/ui/toggle-group.mjs +6 -6
  508. package/dist/ui/toggle.cjs +8 -8
  509. package/dist/ui/toggle.mjs +6 -6
  510. package/dist/ui/toolbar.cjs +9 -9
  511. package/dist/ui/toolbar.mjs +6 -6
  512. package/dist/ui/tooltip.cjs +10 -10
  513. package/dist/ui/tooltip.d.cts +2 -2
  514. package/dist/ui/tooltip.d.ts +2 -2
  515. package/dist/ui/tooltip.mjs +6 -6
  516. package/dist/ui/tree-view/TreeSearchBar.cjs +9 -9
  517. package/dist/ui/tree-view/TreeSearchBar.mjs +8 -8
  518. package/dist/ui/tree-view/TreeView.cjs +10 -8
  519. package/dist/ui/tree-view/TreeView.d.cts +12 -6
  520. package/dist/ui/tree-view/TreeView.d.ts +12 -6
  521. package/dist/ui/tree-view/TreeView.mjs +8 -6
  522. package/dist/ui/tree-view/hooks.cjs +31 -3
  523. package/dist/ui/tree-view/hooks.d.cts +33 -1
  524. package/dist/ui/tree-view/hooks.d.ts +33 -1
  525. package/dist/ui/tree-view/hooks.mjs +1 -1
  526. package/dist/ui/tree-view/index.cjs +49 -20
  527. package/dist/ui/tree-view/index.d.cts +1 -1
  528. package/dist/ui/tree-view/index.d.ts +1 -1
  529. package/dist/ui/tree-view/index.mjs +11 -10
  530. package/dist/ui/tree-view/types.d.cts +1 -0
  531. package/dist/ui/tree-view/types.d.ts +1 -0
  532. package/dist/ui/tree-view-legacy.cjs +13 -13
  533. package/dist/ui/tree-view-legacy.mjs +9 -9
  534. package/dist/ui/virtual-grid/VirtualGrid.cjs +21 -0
  535. package/dist/ui/virtual-grid/VirtualGrid.d.cts +10 -0
  536. package/dist/ui/virtual-grid/VirtualGrid.d.ts +10 -0
  537. package/dist/ui/virtual-grid/VirtualGrid.mjs +12 -0
  538. package/dist/ui/virtual-grid/index.cjs +26 -0
  539. package/dist/ui/virtual-grid/index.d.cts +4 -0
  540. package/dist/ui/virtual-grid/index.d.ts +4 -0
  541. package/dist/ui/virtual-grid/index.mjs +13 -0
  542. package/dist/ui/virtual-grid/types.cjs +2 -0
  543. package/dist/ui/virtual-grid/types.d.cts +70 -0
  544. package/dist/ui/virtual-grid/types.d.ts +70 -0
  545. package/dist/ui/virtual-grid/types.mjs +1 -0
  546. package/dist/ui/virtual-grid/useVirtualGrid.cjs +10 -0
  547. package/dist/ui/virtual-grid/useVirtualGrid.d.cts +9 -0
  548. package/dist/ui/virtual-grid/useVirtualGrid.d.ts +9 -0
  549. package/dist/ui/virtual-grid/useVirtualGrid.mjs +1 -0
  550. package/dist/ui/virtual-list/VirtualList.cjs +21 -0
  551. package/dist/ui/virtual-list/VirtualList.d.cts +10 -0
  552. package/dist/ui/virtual-list/VirtualList.d.ts +10 -0
  553. package/dist/ui/virtual-list/VirtualList.mjs +12 -0
  554. package/dist/ui/virtual-list/index.cjs +26 -0
  555. package/dist/ui/virtual-list/index.d.cts +4 -0
  556. package/dist/ui/virtual-list/index.d.ts +4 -0
  557. package/dist/ui/virtual-list/index.mjs +13 -0
  558. package/dist/ui/virtual-list/types.cjs +2 -0
  559. package/dist/ui/virtual-list/types.d.cts +54 -0
  560. package/dist/ui/virtual-list/types.d.ts +54 -0
  561. package/dist/ui/virtual-list/types.mjs +1 -0
  562. package/dist/ui/virtual-list/useVirtualList.cjs +10 -0
  563. package/dist/ui/virtual-list/useVirtualList.d.cts +9 -0
  564. package/dist/ui/virtual-list/useVirtualList.d.ts +9 -0
  565. package/dist/ui/virtual-list/useVirtualList.mjs +1 -0
  566. package/dist/ui/waterfall/CursorOverlay.cjs +7 -7
  567. package/dist/ui/waterfall/CursorOverlay.mjs +6 -6
  568. package/dist/ui/waterfall/NavigationControls.d.cts +2 -2
  569. package/dist/ui/waterfall/NavigationControls.d.ts +2 -2
  570. package/dist/ui/waterfall/TimelineEvent.cjs +7 -7
  571. package/dist/ui/waterfall/TimelineEvent.mjs +6 -6
  572. package/dist/ui/waterfall/TimelineProcessBar.cjs +7 -7
  573. package/dist/ui/waterfall/TimelineProcessBar.mjs +6 -6
  574. package/dist/ui/waterfall/Wedges.cjs +8 -8
  575. package/dist/ui/waterfall/Wedges.mjs +6 -6
  576. package/dist/ui/waterfall/WheelZoomContext.d.cts +2 -2
  577. package/dist/ui/waterfall/WheelZoomContext.d.ts +2 -2
  578. package/dist/ui/waterfall/hooks/useTimelineState.d.cts +4 -3
  579. package/dist/ui/waterfall/hooks/useTimelineState.d.ts +4 -3
  580. package/dist/ui/waterfall/hooks/useViewport.d.cts +4 -4
  581. package/dist/ui/waterfall/hooks/useViewport.d.ts +4 -4
  582. package/dist/ui/waterfall/index.cjs +20 -19
  583. package/dist/ui/waterfall/index.d.cts +2 -2
  584. package/dist/ui/waterfall/index.d.ts +2 -2
  585. package/dist/ui/waterfall/index.mjs +19 -18
  586. package/package.json +6 -9
  587. package/src/dial/DialPanel.tsx +167 -30
  588. package/src/dial/DialProvider.tsx +20 -68
  589. package/src/dial/components/DialButton.tsx +52 -0
  590. package/src/dial/components/DialCustom.tsx +45 -0
  591. package/src/dial/components/index.ts +3 -0
  592. package/src/dial/index.ts +11 -6
  593. package/src/dial/types.ts +32 -0
  594. package/src/dial/wrapped-inputs/ControlledInputs.tsx +22 -16
  595. package/src/dial/wrapped-inputs/DialArrayInput.tsx +175 -0
  596. package/src/dial/wrapped-inputs/DialInputs.tsx +119 -23
  597. package/src/dial/wrapped-inputs/DialInterfaceInput.tsx +80 -0
  598. package/src/dial/wrapped-inputs/DialPresetsInput.tsx +4 -3
  599. package/src/dial/wrapped-inputs/DialTupleInput.tsx +102 -0
  600. package/src/dial/wrapped-inputs/DialVectorInput.tsx +11 -21
  601. package/src/dial/wrapped-inputs/index.ts +6 -0
  602. package/src/highlight-cursor/cursor-provider.tsx +279 -131
  603. package/src/highlight-cursor/types.ts +2 -1
  604. package/src/hooks/cn.ts +5 -0
  605. package/src/hooks/useIsMobile.ts +14 -30
  606. package/src/index.css +0 -1
  607. package/src/styles/theme.css +2 -2
  608. package/src/ui/DialBadge.tsx +7 -5
  609. package/src/ui/alert-dialog.tsx +168 -0
  610. package/src/ui/badge.tsx +1 -0
  611. package/src/ui/card.tsx +76 -8
  612. package/src/ui/context-menu.tsx +358 -0
  613. package/src/ui/index.ts +6 -0
  614. package/src/ui/inputs/color-input.tsx +92 -8
  615. package/src/ui/inputs/input-numbers.tsx +148 -92
  616. package/src/ui/inputs/number-inputs/EulerRadInput.tsx +43 -42
  617. package/src/ui/inputs/number-inputs/VectorInput.tsx +2 -1
  618. package/src/ui/inputs/presets-rad-input.tsx +5 -2
  619. package/src/ui/inputs/text-input.tsx +1 -1
  620. package/src/ui/layouts/dock-layout/DockLayoutView.tsx +15 -4
  621. package/src/ui/layouts/dock-layout/LayoutSlots.tsx +14 -5
  622. package/src/ui/layouts/liquid-layout/LiquidLayoutView.tsx +44 -5
  623. package/src/ui/popover.tsx +10 -49
  624. package/src/ui/progress.tsx +7 -14
  625. package/src/ui/select.tsx +5 -2
  626. package/src/ui/separator.tsx +1 -1
  627. package/src/ui/sheet.tsx +14 -116
  628. package/src/ui/sidebar.tsx +18 -19
  629. package/src/ui/switch.tsx +7 -2
  630. package/src/ui/tabs.tsx +29 -58
  631. package/src/ui/theme/ThemeProvider.tsx +4 -3
  632. package/src/ui/theme/ThemeToggles.tsx +48 -12
  633. package/src/ui/toast.tsx +13 -16
  634. package/src/ui/tooltip.tsx +3 -30
  635. package/src/ui/tree-view/TreeView.tsx +179 -21
  636. package/src/ui/tree-view/hooks.tsx +148 -0
  637. package/src/ui/tree-view/types.ts +2 -1
  638. package/src/ui/virtual-grid/VirtualGrid.tsx +345 -0
  639. package/src/ui/virtual-grid/index.ts +10 -0
  640. package/src/ui/virtual-grid/types.ts +72 -0
  641. package/src/ui/virtual-grid/useVirtualGrid.ts +243 -0
  642. package/src/ui/virtual-list/VirtualList.tsx +207 -0
  643. package/src/ui/virtual-list/index.ts +8 -0
  644. package/src/ui/virtual-list/types.ts +54 -0
  645. package/src/ui/virtual-list/useVirtualList.ts +203 -0
  646. package/src/ui/waterfall/TimelineProcessBar.tsx +10 -4
  647. package/dist/auth/components/index.cjs +0 -128
  648. package/dist/auth/components/index.d.cts +0 -2
  649. package/dist/auth/components/index.d.ts +0 -2
  650. package/dist/auth/components/index.mjs +0 -119
  651. package/dist/auth/components/user-avatar/index.cjs +0 -127
  652. package/dist/auth/components/user-avatar/index.d.cts +0 -8
  653. package/dist/auth/components/user-avatar/index.d.ts +0 -8
  654. package/dist/auth/components/user-avatar/index.mjs +0 -118
  655. package/dist/auth/context/user-context.cjs +0 -10
  656. package/dist/auth/context/user-context.d.cts +0 -13
  657. package/dist/auth/context/user-context.d.ts +0 -13
  658. package/dist/auth/context/user-context.mjs +0 -1
  659. package/dist/auth/handler/fetch-auth.cjs +0 -11
  660. package/dist/auth/handler/fetch-auth.d.cts +0 -3
  661. package/dist/auth/handler/fetch-auth.d.ts +0 -3
  662. package/dist/auth/handler/fetch-auth.mjs +0 -2
  663. package/dist/auth/handler/fetch-server.cjs +0 -11
  664. package/dist/auth/handler/fetch-server.d.cts +0 -3
  665. package/dist/auth/handler/fetch-server.d.ts +0 -3
  666. package/dist/auth/handler/fetch-server.mjs +0 -2
  667. package/dist/auth/handler/get-session.cjs +0 -12
  668. package/dist/auth/handler/get-session.d.cts +0 -21
  669. package/dist/auth/handler/get-session.d.ts +0 -21
  670. package/dist/auth/handler/get-session.mjs +0 -3
  671. package/dist/auth/handler/get-sessions.cjs +0 -12
  672. package/dist/auth/handler/get-sessions.d.cts +0 -21
  673. package/dist/auth/handler/get-sessions.d.ts +0 -21
  674. package/dist/auth/handler/get-sessions.mjs +0 -3
  675. package/dist/auth/handler/sign-in-handler.cjs +0 -11
  676. package/dist/auth/handler/sign-in-handler.d.cts +0 -6
  677. package/dist/auth/handler/sign-in-handler.d.ts +0 -6
  678. package/dist/auth/handler/sign-in-handler.mjs +0 -2
  679. package/dist/auth/handler/sign-out-handler.cjs +0 -12
  680. package/dist/auth/handler/sign-out-handler.d.cts +0 -5
  681. package/dist/auth/handler/sign-out-handler.d.ts +0 -5
  682. package/dist/auth/handler/sign-out-handler.mjs +0 -3
  683. package/dist/auth/hooks/use-sign-in.cjs +0 -14
  684. package/dist/auth/hooks/use-sign-in.d.cts +0 -9
  685. package/dist/auth/hooks/use-sign-in.d.ts +0 -9
  686. package/dist/auth/hooks/use-sign-in.mjs +0 -5
  687. package/dist/auth/hooks/use-sign-out.cjs +0 -15
  688. package/dist/auth/hooks/use-sign-out.d.cts +0 -6
  689. package/dist/auth/hooks/use-sign-out.d.ts +0 -6
  690. package/dist/auth/hooks/use-sign-out.mjs +0 -6
  691. package/dist/auth/hooks/use-user.cjs +0 -11
  692. package/dist/auth/hooks/use-user.d.cts +0 -8
  693. package/dist/auth/hooks/use-user.d.ts +0 -8
  694. package/dist/auth/hooks/use-user.mjs +0 -2
  695. package/dist/auth/hooks/use-vuer-sessions.cjs +0 -15
  696. package/dist/auth/hooks/use-vuer-sessions.d.cts +0 -9
  697. package/dist/auth/hooks/use-vuer-sessions.d.ts +0 -9
  698. package/dist/auth/hooks/use-vuer-sessions.mjs +0 -6
  699. package/dist/auth/index.cjs +0 -165
  700. package/dist/auth/index.d.cts +0 -13
  701. package/dist/auth/index.d.ts +0 -13
  702. package/dist/auth/index.mjs +0 -124
  703. package/dist/auth/localstorage-key.cjs +0 -14
  704. package/dist/auth/localstorage-key.d.cts +0 -4
  705. package/dist/auth/localstorage-key.d.ts +0 -4
  706. package/dist/auth/localstorage-key.mjs +0 -1
  707. package/dist/auth/types.d.cts +0 -27
  708. package/dist/auth/types.d.ts +0 -27
  709. package/dist/auth/vuer-user-provider.cjs +0 -14
  710. package/dist/auth/vuer-user-provider.d.cts +0 -9
  711. package/dist/auth/vuer-user-provider.d.ts +0 -9
  712. package/dist/auth/vuer-user-provider.mjs +0 -5
  713. package/dist/chunk-2DXJJLJL.mjs +0 -51
  714. package/dist/chunk-2GXIGEKC.mjs +0 -66
  715. package/dist/chunk-3WMO5QJJ.cjs +0 -8
  716. package/dist/chunk-5OHAV55L.mjs +0 -24
  717. package/dist/chunk-6C53NKMF.mjs +0 -206
  718. package/dist/chunk-6GJM7TPE.cjs +0 -28
  719. package/dist/chunk-7E5Y224I.cjs +0 -14
  720. package/dist/chunk-7R5HY3IM.cjs +0 -12
  721. package/dist/chunk-EMVKGL5D.mjs +0 -28
  722. package/dist/chunk-EMXEFZEB.cjs +0 -30
  723. package/dist/chunk-EOSYXHEH.mjs +0 -27
  724. package/dist/chunk-EXXV3BXT.cjs +0 -23
  725. package/dist/chunk-F4Z5KATZ.cjs +0 -8
  726. package/dist/chunk-FROQ45MN.mjs +0 -6
  727. package/dist/chunk-FZAGJSW2.cjs +0 -47
  728. package/dist/chunk-H7RH4CZ7.cjs +0 -54
  729. package/dist/chunk-HOMAESTR.mjs +0 -12
  730. package/dist/chunk-IPQU5CJD.mjs +0 -21
  731. package/dist/chunk-JR4TVE43.cjs +0 -31
  732. package/dist/chunk-KIZEJMW4.cjs +0 -15
  733. package/dist/chunk-KQW3YARN.cjs +0 -117
  734. package/dist/chunk-L2XJ5Q7T.cjs +0 -58
  735. package/dist/chunk-LAPOK2L4.mjs +0 -193
  736. package/dist/chunk-MFYDZKQF.mjs +0 -28
  737. package/dist/chunk-MNCBTS63.cjs +0 -68
  738. package/dist/chunk-MO5V43Z3.mjs +0 -13
  739. package/dist/chunk-MRMSCW3P.cjs +0 -19
  740. package/dist/chunk-OOHCJIRV.cjs +0 -26
  741. package/dist/chunk-PX2H7Z4D.mjs +0 -26
  742. package/dist/chunk-PXDT5GFJ.mjs +0 -13
  743. package/dist/chunk-Q3CJUGX3.cjs +0 -21
  744. package/dist/chunk-Q76WU4DL.cjs +0 -17
  745. package/dist/chunk-R4HT3SYR.cjs +0 -208
  746. package/dist/chunk-RSBVQ7SJ.cjs +0 -54
  747. package/dist/chunk-RTYZO2AC.cjs +0 -30
  748. package/dist/chunk-SO2UTKSV.mjs +0 -17
  749. package/dist/chunk-UT7B4TLZ.mjs +0 -5
  750. package/dist/chunk-V4KDK3BN.mjs +0 -52
  751. package/dist/chunk-V5T6XOSB.cjs +0 -222
  752. package/dist/chunk-VSFPXAGN.mjs +0 -10
  753. package/dist/chunk-VSIOXWSI.cjs +0 -53
  754. package/dist/chunk-WDS3VL7E.mjs +0 -56
  755. package/dist/chunk-X3H6FYAM.cjs +0 -15
  756. package/dist/chunk-XHJDRQD7.mjs +0 -29
  757. package/dist/chunk-Y2XVZEXM.mjs +0 -45
  758. package/dist/chunk-Z7BZFZEV.mjs +0 -15
  759. package/dist/dial/DialProvider.example.cjs +0 -72
  760. package/dist/dial/DialProvider.example.d.cts +0 -7
  761. package/dist/dial/DialProvider.example.d.ts +0 -7
  762. package/dist/dial/DialProvider.example.mjs +0 -68
  763. package/dist/styles/toast.css +0 -64
  764. package/dist/styles/toast.d.cts +0 -2
  765. package/dist/styles/toast.d.ts +0 -2
  766. package/src/auth/components/index.ts +0 -1
  767. package/src/auth/components/user-avatar/index.tsx +0 -94
  768. package/src/auth/context/user-context.ts +0 -15
  769. package/src/auth/handler/fetch-auth.ts +0 -10
  770. package/src/auth/handler/fetch-server.ts +0 -10
  771. package/src/auth/handler/get-session.ts +0 -19
  772. package/src/auth/handler/get-sessions.ts +0 -16
  773. package/src/auth/handler/sign-in-handler.ts +0 -64
  774. package/src/auth/handler/sign-out-handler.ts +0 -9
  775. package/src/auth/hooks/use-sign-in.ts +0 -33
  776. package/src/auth/hooks/use-sign-out.ts +0 -30
  777. package/src/auth/hooks/use-user.ts +0 -10
  778. package/src/auth/hooks/use-vuer-sessions.ts +0 -29
  779. package/src/auth/index.ts +0 -12
  780. package/src/auth/localstorage-key.ts +0 -3
  781. package/src/auth/types.ts +0 -38
  782. package/src/auth/vuer-user-provider.tsx +0 -58
  783. package/src/dial/DialProvider.example.tsx +0 -80
  784. package/src/styles/toast.css +0 -67
  785. /package/dist/{auth/types.mjs → chunk-6NZ5VXK7.mjs} +0 -0
  786. /package/dist/{chunk-UXWS62ZO.mjs → chunk-6THKQIF7.mjs} +0 -0
  787. /package/dist/{auth/types.cjs → chunk-AS3GNGJN.cjs} +0 -0
  788. /package/dist/{chunk-NK7L5H2Y.cjs → chunk-DPILGC4Y.cjs} +0 -0
  789. /package/dist/{chunk-YWECB5GR.cjs → chunk-F4NQLN5E.cjs} +0 -0
  790. /package/dist/{chunk-YYLBP356.mjs → chunk-NU5W73NH.mjs} +0 -0
@@ -0,0 +1,345 @@
1
+ import React, {
2
+ forwardRef,
3
+ useCallback,
4
+ useEffect,
5
+ useLayoutEffect,
6
+ useRef,
7
+ useState,
8
+ type ComponentProps,
9
+ } from "react";
10
+
11
+ import type { VirtualGridProps } from "./types";
12
+ import { useVirtualGrid } from "./useVirtualGrid";
13
+ import { cn } from "../../hooks";
14
+
15
+ interface VirtualGridComponentProps<T>
16
+ extends Omit<ComponentProps<"div">, "children">,
17
+ VirtualGridProps<T> {}
18
+
19
+ /**
20
+ * VirtualGrid component - renders only visible cells for efficient grid rendering.
21
+ * Supports both fixed and variable row/column sizes, cell spanning, and sticky headers/columns.
22
+ *
23
+ * @param data - 2D array of cell data
24
+ * @param rowCount - Number of rows in the grid
25
+ * @param columnCount - Number of columns in the grid
26
+ * @param rowHeight - Height for each row (fixed or function)
27
+ * @param columnWidth - Width for each column (fixed or function)
28
+ * @param height - Container height
29
+ * @param width - Container width (default: '100%')
30
+ * @param overscanRows - Extra rows to render outside visible area (default: 2)
31
+ * @param overscanColumns - Extra columns to render outside visible area (default: 2)
32
+ * @param getCellKey - Function to get a unique key for each cell
33
+ * @param getColSpan - Function to get column span for a cell
34
+ * @param getRowSpan - Function to get row span for a cell
35
+ * @param children - Render function for each cell
36
+ * @param stickyHeader - Keep first row visible
37
+ * @param stickyColumn - Keep first column visible
38
+ */
39
+ function VirtualGridInner<T>(
40
+ {
41
+ data,
42
+ rowCount,
43
+ columnCount,
44
+ rowHeight,
45
+ columnWidth,
46
+ height,
47
+ width = "100%",
48
+ overscanRows = 2,
49
+ overscanColumns = 2,
50
+ getCellKey,
51
+ getColSpan,
52
+ getRowSpan,
53
+ children,
54
+ stickyHeader = false,
55
+ stickyColumn = false,
56
+ className,
57
+ style,
58
+ ...props
59
+ }: VirtualGridComponentProps<T>,
60
+ ref: React.ForwardedRef<HTMLDivElement>,
61
+ ) {
62
+ const containerRef = useRef<HTMLDivElement>(null);
63
+ const stickyLayerRef = useRef<HTMLDivElement>(null);
64
+ const [scrollTop, setScrollTop] = useState(0);
65
+ const [scrollLeft, setScrollLeft] = useState(0);
66
+ const [containerWidth, setContainerWidth] = useState(0);
67
+ const [containerHeight, setContainerHeight] = useState(0);
68
+
69
+ // Track scroll position in ref for immediate updates
70
+ const scrollRef = useRef({ top: 0, left: 0 });
71
+
72
+ // Combine refs
73
+ const setRefs = useCallback(
74
+ (node: HTMLDivElement | null) => {
75
+ (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;
76
+ if (typeof ref === "function") {
77
+ ref(node);
78
+ } else if (ref) {
79
+ ref.current = node;
80
+ }
81
+ },
82
+ [ref],
83
+ );
84
+
85
+ // Measure container dimensions
86
+ useEffect(() => {
87
+ const container = containerRef.current;
88
+ if (!container) return;
89
+
90
+ const resizeObserver = new ResizeObserver((entries) => {
91
+ for (const entry of entries) {
92
+ setContainerWidth(entry.contentRect.width);
93
+ setContainerHeight(entry.contentRect.height);
94
+ }
95
+ });
96
+
97
+ resizeObserver.observe(container);
98
+ setContainerWidth(container.clientWidth);
99
+ setContainerHeight(container.clientHeight);
100
+
101
+ return () => resizeObserver.disconnect();
102
+ }, []);
103
+
104
+ const {
105
+ visibleRange,
106
+ totalWidth,
107
+ totalHeight,
108
+ getCellStyle,
109
+ getRowOffset,
110
+ getColumnOffset,
111
+ getRowHeight,
112
+ getColumnWidth,
113
+ } = useVirtualGrid({
114
+ rowCount,
115
+ columnCount,
116
+ rowHeight,
117
+ columnWidth,
118
+ containerWidth,
119
+ containerHeight,
120
+ scrollTop,
121
+ scrollLeft,
122
+ overscanRows,
123
+ overscanColumns,
124
+ getColSpan,
125
+ getRowSpan,
126
+ });
127
+
128
+ // Handle scroll - update CSS variables immediately, debounce state updates
129
+ const rafRef = useRef<number | null>(null);
130
+
131
+ const handleScroll = useCallback((e: React.UIEvent<HTMLDivElement>) => {
132
+ const newScrollTop = e.currentTarget.scrollTop;
133
+ const newScrollLeft = e.currentTarget.scrollLeft;
134
+
135
+ // Update ref immediately
136
+ scrollRef.current = { top: newScrollTop, left: newScrollLeft };
137
+
138
+ // Update CSS variables immediately for smooth sticky positioning
139
+ // Round to prevent sub-pixel jitter
140
+ if (stickyLayerRef.current) {
141
+ stickyLayerRef.current.style.setProperty("--scroll-top", `${Math.round(newScrollTop)}px`);
142
+ stickyLayerRef.current.style.setProperty("--scroll-left", `${Math.round(newScrollLeft)}px`);
143
+ }
144
+
145
+ // Debounce state updates for virtualization range calculation
146
+ if (rafRef.current) {
147
+ cancelAnimationFrame(rafRef.current);
148
+ }
149
+ rafRef.current = requestAnimationFrame(() => {
150
+ setScrollTop(newScrollTop);
151
+ setScrollLeft(newScrollLeft);
152
+ });
153
+ }, []);
154
+
155
+ // Cleanup RAF on unmount
156
+ useEffect(() => {
157
+ return () => {
158
+ if (rafRef.current) {
159
+ cancelAnimationFrame(rafRef.current);
160
+ }
161
+ };
162
+ }, []);
163
+
164
+ // Initialize CSS variables
165
+ useLayoutEffect(() => {
166
+ if (stickyLayerRef.current) {
167
+ stickyLayerRef.current.style.setProperty("--scroll-top", "0px");
168
+ stickyLayerRef.current.style.setProperty("--scroll-left", "0px");
169
+ }
170
+ }, []);
171
+
172
+ // Track which cells are covered by spans
173
+ const coveredCells = new Set<string>();
174
+
175
+ // Pre-calculate covered cells from spans
176
+ if (getColSpan || getRowSpan) {
177
+ for (let row = visibleRange.startRow; row <= visibleRange.endRow; row++) {
178
+ for (let col = visibleRange.startCol; col <= visibleRange.endCol; col++) {
179
+ const colspan = getColSpan?.(row, col) ?? 1;
180
+ const rowspan = getRowSpan?.(row, col) ?? 1;
181
+
182
+ if (colspan > 1 || rowspan > 1) {
183
+ for (let r = row; r < row + rowspan; r++) {
184
+ for (let c = col; c < col + colspan; c++) {
185
+ if (r !== row || c !== col) {
186
+ coveredCells.add(`${r}-${c}`);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ }
194
+
195
+ // Render visible cells
196
+ const visibleCells = [];
197
+ for (let row = visibleRange.startRow; row <= visibleRange.endRow && row < rowCount; row++) {
198
+ for (let col = visibleRange.startCol; col <= visibleRange.endCol && col < columnCount; col++) {
199
+ // Skip cells covered by spans
200
+ if (coveredCells.has(`${row}-${col}`)) {
201
+ continue;
202
+ }
203
+
204
+ // Skip header row and sticky column cells - they're rendered separately
205
+ if ((stickyHeader && row === 0) || (stickyColumn && col === 0)) {
206
+ continue;
207
+ }
208
+
209
+ const cellData = data[row]?.[col];
210
+ const key = getCellKey ? getCellKey(row, col) : `${row}-${col}`;
211
+ const cellStyle = getCellStyle(row, col);
212
+
213
+ visibleCells.push(
214
+ <React.Fragment key={key}>{children(cellData, row, col, cellStyle)}</React.Fragment>,
215
+ );
216
+ }
217
+ }
218
+
219
+ // Style for sticky cell content - fills the wrapper
220
+ const stickyContentStyle = { width: "100%", height: "100%" };
221
+
222
+ // Render sticky header cells (using CSS variable for Y position)
223
+ const stickyHeaderCells = [];
224
+ if (stickyHeader && rowCount > 0) {
225
+ for (let col = visibleRange.startCol; col <= visibleRange.endCol && col < columnCount; col++) {
226
+ // Skip first column if sticky column is enabled
227
+ if (stickyColumn && col === 0) continue;
228
+ if (coveredCells.has(`0-${col}`)) continue;
229
+
230
+ const cellData = data[0]?.[col];
231
+ const key = getCellKey ? getCellKey(0, col) : `header-${col}`;
232
+
233
+ stickyHeaderCells.push(
234
+ <div
235
+ key={key}
236
+ className="sticky-header-cell"
237
+ style={{
238
+ position: "absolute",
239
+ top: 0,
240
+ left: 0,
241
+ width: getColumnWidth(col),
242
+ height: getRowHeight(0),
243
+ transform: `translate3d(${getColumnOffset(col)}px, var(--scroll-top, 0px), 0)`,
244
+ willChange: "transform",
245
+ zIndex: 2,
246
+ }}
247
+ >
248
+ {children(cellData, 0, col, stickyContentStyle)}
249
+ </div>,
250
+ );
251
+ }
252
+ }
253
+
254
+ // Render sticky column cells (using CSS variable for X position)
255
+ const stickyColumnCells = [];
256
+ if (stickyColumn && columnCount > 0) {
257
+ for (let row = visibleRange.startRow; row <= visibleRange.endRow && row < rowCount; row++) {
258
+ // Skip first row if sticky header is enabled
259
+ if (stickyHeader && row === 0) continue;
260
+ if (coveredCells.has(`${row}-0`)) continue;
261
+
262
+ const cellData = data[row]?.[0];
263
+ const key = getCellKey ? getCellKey(row, 0) : `sticky-col-${row}`;
264
+
265
+ stickyColumnCells.push(
266
+ <div
267
+ key={key}
268
+ className="sticky-column-cell"
269
+ style={{
270
+ position: "absolute",
271
+ top: 0,
272
+ left: 0,
273
+ width: getColumnWidth(0),
274
+ height: getRowHeight(row),
275
+ transform: `translate3d(var(--scroll-left, 0px), ${getRowOffset(row)}px, 0)`,
276
+ willChange: "transform",
277
+ zIndex: 2,
278
+ }}
279
+ >
280
+ {children(cellData, row, 0, stickyContentStyle)}
281
+ </div>,
282
+ );
283
+ }
284
+ }
285
+
286
+ // Render sticky corner cell (using CSS variables for both X and Y)
287
+ const stickyCornerCell =
288
+ stickyHeader && stickyColumn && rowCount > 0 && columnCount > 0 ? (
289
+ <div
290
+ key="sticky-corner"
291
+ className="sticky-corner-cell"
292
+ style={{
293
+ position: "absolute",
294
+ top: 0,
295
+ left: 0,
296
+ width: getColumnWidth(0),
297
+ height: getRowHeight(0),
298
+ transform: `translate3d(var(--scroll-left, 0px), var(--scroll-top, 0px), 0)`,
299
+ willChange: "transform",
300
+ zIndex: 3,
301
+ }}
302
+ >
303
+ {children(data[0]?.[0], 0, 0, stickyContentStyle)}
304
+ </div>
305
+ ) : null;
306
+
307
+ const hasStickyElements = stickyHeader || stickyColumn;
308
+
309
+ return (
310
+ <div
311
+ ref={setRefs}
312
+ className={cn("relative overflow-auto", className)}
313
+ style={{
314
+ height,
315
+ width,
316
+ ...style,
317
+ }}
318
+ onScroll={handleScroll}
319
+ {...props}
320
+ >
321
+ <div
322
+ ref={hasStickyElements ? stickyLayerRef : undefined}
323
+ style={{
324
+ height: totalHeight,
325
+ width: totalWidth,
326
+ position: "relative",
327
+ }}
328
+ >
329
+ {/* Sticky elements first - stable position in DOM during scroll */}
330
+ {stickyCornerCell}
331
+ {stickyHeaderCells}
332
+ {stickyColumnCells}
333
+ {/* Visible cells last - changes frequently during scroll */}
334
+ {visibleCells}
335
+ </div>
336
+ </div>
337
+ );
338
+ }
339
+
340
+ // Use a generic forwardRef pattern
341
+ export const VirtualGrid = forwardRef(VirtualGridInner) as <T>(
342
+ props: VirtualGridComponentProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },
343
+ ) => React.ReactElement;
344
+
345
+ export type { VirtualGridProps };
@@ -0,0 +1,10 @@
1
+ export { VirtualGrid } from "./VirtualGrid";
2
+ export type {
3
+ VirtualGridProps,
4
+ RowHeight,
5
+ ColumnWidth,
6
+ GridRange,
7
+ UseVirtualGridOptions,
8
+ UseVirtualGridResult,
9
+ } from "./types";
10
+ export { useVirtualGrid } from "./useVirtualGrid";
@@ -0,0 +1,72 @@
1
+ import type { CSSProperties, ReactNode } from "react";
2
+
3
+ export type RowHeight = number | ((rowIndex: number) => number);
4
+ export type ColumnWidth = number | ((colIndex: number) => number);
5
+
6
+ export interface VirtualGridProps<T> {
7
+ /** 2D array of cell data */
8
+ data: T[][];
9
+ /** Number of rows in the grid */
10
+ rowCount: number;
11
+ /** Number of columns in the grid */
12
+ columnCount: number;
13
+ /** Height for each row - fixed number or function returning height for a given row */
14
+ rowHeight: RowHeight;
15
+ /** Width for each column - fixed number or function returning width for a given column */
16
+ columnWidth: ColumnWidth;
17
+ /** Container height */
18
+ height: number | string;
19
+ /** Container width (default: '100%') */
20
+ width?: number | string;
21
+ /** Number of extra rows to render outside visible area (default: 2) */
22
+ overscanRows?: number;
23
+ /** Number of extra columns to render outside visible area (default: 2) */
24
+ overscanColumns?: number;
25
+ /** Function to get a unique key for each cell */
26
+ getCellKey?: (row: number, col: number) => string;
27
+ /** Function to get column span for a cell (default: 1) */
28
+ getColSpan?: (row: number, col: number) => number;
29
+ /** Function to get row span for a cell (default: 1) */
30
+ getRowSpan?: (row: number, col: number) => number;
31
+ /** Render function for each cell */
32
+ children: (data: T, row: number, col: number, style: CSSProperties) => ReactNode;
33
+ /** Keep first row visible when scrolling vertically */
34
+ stickyHeader?: boolean;
35
+ /** Keep first column visible when scrolling horizontally */
36
+ stickyColumn?: boolean;
37
+ /** Additional className for the container */
38
+ className?: string;
39
+ }
40
+
41
+ export interface GridRange {
42
+ startRow: number;
43
+ endRow: number;
44
+ startCol: number;
45
+ endCol: number;
46
+ }
47
+
48
+ export interface UseVirtualGridOptions {
49
+ rowCount: number;
50
+ columnCount: number;
51
+ rowHeight: RowHeight;
52
+ columnWidth: ColumnWidth;
53
+ containerWidth: number;
54
+ containerHeight: number;
55
+ scrollTop: number;
56
+ scrollLeft: number;
57
+ overscanRows: number;
58
+ overscanColumns: number;
59
+ getColSpan?: (row: number, col: number) => number;
60
+ getRowSpan?: (row: number, col: number) => number;
61
+ }
62
+
63
+ export interface UseVirtualGridResult {
64
+ visibleRange: GridRange;
65
+ totalWidth: number;
66
+ totalHeight: number;
67
+ getRowOffset: (rowIndex: number) => number;
68
+ getColumnOffset: (colIndex: number) => number;
69
+ getRowHeight: (rowIndex: number) => number;
70
+ getColumnWidth: (colIndex: number) => number;
71
+ getCellStyle: (row: number, col: number) => CSSProperties;
72
+ }
@@ -0,0 +1,243 @@
1
+ import { useCallback, useMemo, type CSSProperties } from "react";
2
+
3
+ import type {
4
+ ColumnWidth,
5
+ GridRange,
6
+ RowHeight,
7
+ UseVirtualGridOptions,
8
+ UseVirtualGridResult,
9
+ } from "./types";
10
+
11
+ /**
12
+ * Get the height for a row
13
+ */
14
+ function getHeight(rowHeight: RowHeight, rowIndex: number): number {
15
+ return typeof rowHeight === "function" ? rowHeight(rowIndex) : rowHeight;
16
+ }
17
+
18
+ /**
19
+ * Get the width for a column
20
+ */
21
+ function getWidth(columnWidth: ColumnWidth, colIndex: number): number {
22
+ return typeof columnWidth === "function" ? columnWidth(colIndex) : columnWidth;
23
+ }
24
+
25
+ /**
26
+ * Binary search to find the start index for a given offset
27
+ */
28
+ function findStartIndex(
29
+ count: number,
30
+ scrollOffset: number,
31
+ getSize: (index: number) => number,
32
+ ): number {
33
+ if (count === 0) return 0;
34
+
35
+ let offset = 0;
36
+ let low = 0;
37
+ let high = count - 1;
38
+
39
+ // Binary search approximation
40
+ while (low <= high) {
41
+ const mid = Math.floor((low + high) / 2);
42
+
43
+ // Calculate offset for mid
44
+ let midOffset = 0;
45
+ for (let i = 0; i < mid; i++) {
46
+ midOffset += getSize(i);
47
+ }
48
+
49
+ if (midOffset < scrollOffset) {
50
+ low = mid + 1;
51
+ offset = midOffset;
52
+ } else if (midOffset > scrollOffset) {
53
+ high = mid - 1;
54
+ } else {
55
+ return mid;
56
+ }
57
+ }
58
+
59
+ // Fine-tune by scanning from low
60
+ let index = Math.max(0, low - 1);
61
+ offset = 0;
62
+ for (let i = 0; i < index; i++) {
63
+ offset += getSize(i);
64
+ }
65
+
66
+ while (index < count - 1 && offset + getSize(index) <= scrollOffset) {
67
+ offset += getSize(index);
68
+ index++;
69
+ }
70
+
71
+ return index;
72
+ }
73
+
74
+ /**
75
+ * Hook for virtualizing a 2D grid of items
76
+ */
77
+ export function useVirtualGrid({
78
+ rowCount,
79
+ columnCount,
80
+ rowHeight,
81
+ columnWidth,
82
+ containerWidth,
83
+ containerHeight,
84
+ scrollTop,
85
+ scrollLeft,
86
+ overscanRows,
87
+ overscanColumns,
88
+ getColSpan = () => 1,
89
+ getRowSpan = () => 1,
90
+ }: UseVirtualGridOptions): UseVirtualGridResult {
91
+ // Memoize size functions
92
+ const getRowHeightFn = useCallback((index: number) => getHeight(rowHeight, index), [rowHeight]);
93
+
94
+ const getColumnWidthFn = useCallback(
95
+ (index: number) => getWidth(columnWidth, index),
96
+ [columnWidth],
97
+ );
98
+
99
+ // Calculate total dimensions
100
+ const totalHeight = useMemo(() => {
101
+ let height = 0;
102
+ for (let i = 0; i < rowCount; i++) {
103
+ height += getRowHeightFn(i);
104
+ }
105
+ return height;
106
+ }, [rowCount, getRowHeightFn]);
107
+
108
+ const totalWidth = useMemo(() => {
109
+ let width = 0;
110
+ for (let i = 0; i < columnCount; i++) {
111
+ width += getColumnWidthFn(i);
112
+ }
113
+ return width;
114
+ }, [columnCount, getColumnWidthFn]);
115
+
116
+ // Calculate row offsets (memoized)
117
+ const rowOffsets = useMemo(() => {
118
+ const offsets: number[] = [0];
119
+ for (let i = 0; i < rowCount; i++) {
120
+ offsets.push(offsets[i] + getRowHeightFn(i));
121
+ }
122
+ return offsets;
123
+ }, [rowCount, getRowHeightFn]);
124
+
125
+ // Calculate column offsets (memoized)
126
+ const columnOffsets = useMemo(() => {
127
+ const offsets: number[] = [0];
128
+ for (let i = 0; i < columnCount; i++) {
129
+ offsets.push(offsets[i] + getColumnWidthFn(i));
130
+ }
131
+ return offsets;
132
+ }, [columnCount, getColumnWidthFn]);
133
+
134
+ // Get offset for a row
135
+ const getRowOffset = useCallback((rowIndex: number) => rowOffsets[rowIndex] ?? 0, [rowOffsets]);
136
+
137
+ // Get offset for a column
138
+ const getColumnOffset = useCallback(
139
+ (colIndex: number) => columnOffsets[colIndex] ?? 0,
140
+ [columnOffsets],
141
+ );
142
+
143
+ // Calculate visible range
144
+ const visibleRange = useMemo<GridRange>(() => {
145
+ if (rowCount === 0 || columnCount === 0) {
146
+ return { startRow: 0, endRow: 0, startCol: 0, endCol: 0 };
147
+ }
148
+
149
+ // Find start row
150
+ const startRow = findStartIndex(rowCount, scrollTop, getRowHeightFn);
151
+
152
+ // Find end row
153
+ let endRow = startRow;
154
+ let accumulatedHeight = getRowOffset(startRow) - scrollTop;
155
+ while (endRow < rowCount - 1 && accumulatedHeight < containerHeight) {
156
+ accumulatedHeight += getRowHeightFn(endRow);
157
+ endRow++;
158
+ }
159
+
160
+ // Find start column
161
+ const startCol = findStartIndex(columnCount, scrollLeft, getColumnWidthFn);
162
+
163
+ // Find end column
164
+ let endCol = startCol;
165
+ let accumulatedWidth = getColumnOffset(startCol) - scrollLeft;
166
+ while (endCol < columnCount - 1 && accumulatedWidth < containerWidth) {
167
+ accumulatedWidth += getColumnWidthFn(endCol);
168
+ endCol++;
169
+ }
170
+
171
+ return {
172
+ startRow: Math.max(0, startRow - overscanRows),
173
+ endRow: Math.min(rowCount - 1, endRow + overscanRows),
174
+ startCol: Math.max(0, startCol - overscanColumns),
175
+ endCol: Math.min(columnCount - 1, endCol + overscanColumns),
176
+ };
177
+ }, [
178
+ rowCount,
179
+ columnCount,
180
+ scrollTop,
181
+ scrollLeft,
182
+ containerHeight,
183
+ containerWidth,
184
+ overscanRows,
185
+ overscanColumns,
186
+ getRowHeightFn,
187
+ getColumnWidthFn,
188
+ getRowOffset,
189
+ getColumnOffset,
190
+ ]);
191
+
192
+ // Get style for a cell
193
+ const getCellStyle = useCallback(
194
+ (row: number, col: number): CSSProperties => {
195
+ const top = getRowOffset(row);
196
+ const left = getColumnOffset(col);
197
+
198
+ // Calculate width with colspan
199
+ const colspan = getColSpan(row, col);
200
+ let width = 0;
201
+ for (let c = col; c < col + colspan && c < columnCount; c++) {
202
+ width += getColumnWidthFn(c);
203
+ }
204
+
205
+ // Calculate height with rowspan
206
+ const rowspan = getRowSpan(row, col);
207
+ let height = 0;
208
+ for (let r = row; r < row + rowspan && r < rowCount; r++) {
209
+ height += getRowHeightFn(r);
210
+ }
211
+
212
+ return {
213
+ position: "absolute",
214
+ top: 0,
215
+ left: 0,
216
+ width,
217
+ height,
218
+ transform: `translate(${left}px, ${top}px)`,
219
+ };
220
+ },
221
+ [
222
+ getRowOffset,
223
+ getColumnOffset,
224
+ getColSpan,
225
+ getRowSpan,
226
+ columnCount,
227
+ rowCount,
228
+ getColumnWidthFn,
229
+ getRowHeightFn,
230
+ ],
231
+ );
232
+
233
+ return {
234
+ visibleRange,
235
+ totalWidth,
236
+ totalHeight,
237
+ getRowOffset,
238
+ getColumnOffset,
239
+ getRowHeight: getRowHeightFn,
240
+ getColumnWidth: getColumnWidthFn,
241
+ getCellStyle,
242
+ };
243
+ }