@vuer-ai/vuer-uikit 0.0.121 → 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 (628) hide show
  1. package/README.md +28 -0
  2. package/dist/SyncScroll/SyncScroll.cjs +4 -4
  3. package/dist/SyncScroll/SyncScroll.mjs +4 -4
  4. package/dist/SyncScroll/index.cjs +4 -4
  5. package/dist/SyncScroll/index.mjs +4 -4
  6. package/dist/SyncScroll/useSyncScroll.d.cts +5 -5
  7. package/dist/SyncScroll/useSyncScroll.d.ts +5 -5
  8. package/dist/{chunk-3SUV56TH.mjs → chunk-2IMCDH5J.mjs} +2 -2
  9. package/dist/{chunk-3P2OP4KO.mjs → chunk-2J466BYZ.mjs} +2 -1
  10. package/dist/{chunk-QF3JWGWX.cjs → chunk-2KBNQ5PY.cjs} +2 -2
  11. package/dist/{chunk-D5WTSBUX.cjs → chunk-3UQ323EB.cjs} +6 -40
  12. package/dist/{chunk-G45SP3DA.mjs → chunk-44U6VC46.mjs} +480 -62
  13. package/dist/{chunk-VW2NEQHK.cjs → chunk-4FIP3EXW.cjs} +2 -2
  14. package/dist/chunk-4SI4QV5R.cjs +14 -0
  15. package/dist/{chunk-O5YP3JQ4.mjs → chunk-4W7JKZVN.mjs} +2 -1
  16. package/dist/chunk-52GNIM6H.mjs +12 -0
  17. package/dist/{chunk-6ZLK2RYS.mjs → chunk-5GBMVMLS.mjs} +4 -4
  18. package/dist/{chunk-MMQR4IEY.cjs → chunk-753HUOAI.cjs} +6 -6
  19. package/dist/chunk-7MKCWXNV.cjs +32 -0
  20. package/dist/{chunk-ZQ2DPA2M.mjs → chunk-7WJ73FEI.mjs} +1 -1
  21. package/dist/{chunk-XMVARRN6.cjs → chunk-AFALU3AK.cjs} +2 -2
  22. package/dist/{chunk-XDIHVSZ5.cjs → chunk-BNXJ5VBE.cjs} +2 -2
  23. package/dist/{chunk-YBUMQX6M.mjs → chunk-BPCD4L7T.mjs} +1 -1
  24. package/dist/{chunk-BDFUHPX2.mjs → chunk-BTGAKK3B.mjs} +1 -1
  25. package/dist/{chunk-4G2LN6XU.cjs → chunk-BXJTOIRR.cjs} +513 -93
  26. package/dist/{chunk-B6CIRZI4.cjs → chunk-BZI74LKX.cjs} +1 -0
  27. package/dist/{chunk-KWSH253U.cjs → chunk-CMO3SLOU.cjs} +2 -2
  28. package/dist/{chunk-HGN7J4CP.mjs → chunk-D2LUQKPM.mjs} +128 -89
  29. package/dist/chunk-DF7WIFZK.cjs +316 -0
  30. package/dist/{chunk-HVACIZB5.cjs → chunk-DKLVWYTC.cjs} +29 -12
  31. package/dist/chunk-DKWLF3KW.mjs +149 -0
  32. package/dist/{chunk-4WKFVKFF.cjs → chunk-DPJPOBUT.cjs} +2 -2
  33. package/dist/{chunk-XHNM6XE3.mjs → chunk-EG6JETUN.mjs} +1 -1
  34. package/dist/{chunk-QYYMLZFE.mjs → chunk-EXM6QMNR.mjs} +1 -1
  35. package/dist/{chunk-2KQXKQNU.mjs → chunk-EYMZP5PL.mjs} +1 -1
  36. package/dist/chunk-FRM27RLN.cjs +264 -0
  37. package/dist/chunk-FTB337IJ.cjs +143 -0
  38. package/dist/{chunk-PZDC5ZKG.mjs → chunk-G35PQKU5.mjs} +3 -3
  39. package/dist/{chunk-BLG4IPRR.mjs → chunk-GAAP5JO4.mjs} +1 -1
  40. package/dist/{chunk-LOMLR5AA.mjs → chunk-HI4LO6IJ.mjs} +1 -1
  41. package/dist/{chunk-FUMJBAQI.mjs → chunk-HNW2DRPV.mjs} +2 -6
  42. package/dist/{chunk-YAFKQ5ZV.cjs → chunk-HSUL5OUG.cjs} +2 -1
  43. package/dist/{chunk-KKGDRIR2.cjs → chunk-I2COLDHC.cjs} +2 -2
  44. package/dist/{chunk-E7ACJ3NX.cjs → chunk-IAWMCOHS.cjs} +2 -2
  45. package/dist/{chunk-PC42NEBI.mjs → chunk-ITOTSGSL.mjs} +1 -1
  46. package/dist/{chunk-CEYNTMQP.mjs → chunk-IYTGWOZY.mjs} +1 -1
  47. package/dist/chunk-J74A5LNZ.cjs +179 -0
  48. package/dist/{chunk-CV2EDA3W.cjs → chunk-JDEZ6NNG.cjs} +2 -2
  49. package/dist/chunk-JEWTYDLX.cjs +119 -0
  50. package/dist/{chunk-UTHAZV2T.cjs → chunk-JTFQFULL.cjs} +2 -6
  51. package/dist/{chunk-GJKFQHUX.mjs → chunk-KXKUQSNY.mjs} +1 -1
  52. package/dist/chunk-L2AKG4VJ.mjs +258 -0
  53. package/dist/{chunk-7MR3M2HW.mjs → chunk-L2DME42Q.mjs} +1 -1
  54. package/dist/{chunk-Z7PWETGZ.mjs → chunk-LHP7FLGK.mjs} +1 -1
  55. package/dist/{chunk-LJYIEOGQ.mjs → chunk-LLFE3UHZ.mjs} +5 -5
  56. package/dist/chunk-NUBFD3YP.mjs +117 -0
  57. package/dist/{chunk-COL2MXGC.cjs → chunk-OX5FXH6W.cjs} +2 -2
  58. package/dist/{chunk-COJRGW3A.cjs → chunk-P7J7XHDE.cjs} +2 -2
  59. package/dist/chunk-PHRZ5JE6.mjs +1 -0
  60. package/dist/chunk-PMYOKSO3.mjs +30 -0
  61. package/dist/chunk-PTUZYCOY.mjs +314 -0
  62. package/dist/{chunk-WQT7JQN4.cjs → chunk-PZZW3E5D.cjs} +2 -2
  63. package/dist/chunk-Q3UN25WC.mjs +141 -0
  64. package/dist/{chunk-JVZ6J2UX.cjs → chunk-QS6WNNLM.cjs} +2 -2
  65. package/dist/{chunk-S4BL7C3Y.mjs → chunk-QSDYNIZB.mjs} +1 -0
  66. package/dist/{chunk-WYD3KNAT.cjs → chunk-QTLUPDLH.cjs} +5 -4
  67. package/dist/{chunk-NC2U7QTW.cjs → chunk-RHVKIZMQ.cjs} +2 -2
  68. package/dist/{chunk-67H3OSM3.mjs → chunk-RR76Z6OK.mjs} +2 -2
  69. package/dist/chunk-SBAVMK7J.cjs +181 -0
  70. package/dist/{chunk-GBRIW266.cjs → chunk-SOHGIAGF.cjs} +2 -2
  71. package/dist/{chunk-4YVKJKWV.mjs → chunk-TCCFFSXM.mjs} +27 -10
  72. package/dist/{chunk-EMZEL54F.cjs → chunk-THE6FZKP.cjs} +2 -0
  73. package/dist/{chunk-DGJ7E77I.mjs → chunk-TQOGGHSJ.mjs} +1 -1
  74. package/dist/{chunk-XC25ZQ7H.mjs → chunk-UBGNADCN.mjs} +1 -1
  75. package/dist/chunk-UEHPZIQB.cjs +2 -0
  76. package/dist/{chunk-DG2EVWIW.cjs → chunk-UZTOUPJ7.cjs} +128 -89
  77. package/dist/{chunk-HUPECWNG.mjs → chunk-V4THHKSO.mjs} +1 -1
  78. package/dist/chunk-VDYJAOMN.mjs +177 -0
  79. package/dist/{chunk-6NSLYQ35.mjs → chunk-VLNU7Y2K.mjs} +7 -42
  80. package/dist/{chunk-Z42BBOSG.cjs → chunk-VT6E2N6C.cjs} +2 -2
  81. package/dist/{chunk-RS4T6S3Z.mjs → chunk-VWLZKPDB.mjs} +5 -4
  82. package/dist/{chunk-OON7LFBQ.cjs → chunk-W22SQYEO.cjs} +6 -6
  83. package/dist/{chunk-42DBXENE.cjs → chunk-WGY33IHV.cjs} +2 -2
  84. package/dist/{chunk-EOTGD64D.cjs → chunk-WX3VWVWD.cjs} +2 -2
  85. package/dist/{chunk-UFYHIDMC.cjs → chunk-WZQ2BT3P.cjs} +25 -6
  86. package/dist/{chunk-KR7VBV3B.cjs → chunk-XIDCYS6G.cjs} +2 -1
  87. package/dist/chunk-YDF6VWBW.cjs +151 -0
  88. package/dist/{chunk-FB3M2JJV.cjs → chunk-YQL6JDVP.cjs} +5 -5
  89. package/dist/{chunk-7RRQ2HHL.mjs → chunk-YRNI7ZJ7.mjs} +25 -6
  90. package/dist/{chunk-FK6ZROZE.mjs → chunk-ZJYPKTF4.mjs} +2 -1
  91. package/dist/chunk-ZMRODJ3I.mjs +149 -0
  92. package/dist/dial/DialPanel.cjs +66 -56
  93. package/dist/dial/DialPanel.d.cts +4 -3
  94. package/dist/dial/DialPanel.d.ts +4 -3
  95. package/dist/dial/DialPanel.mjs +65 -55
  96. package/dist/dial/DialProvider.d.cts +3 -3
  97. package/dist/dial/DialProvider.d.ts +3 -3
  98. package/dist/dial/IconRenderer.d.cts +2 -2
  99. package/dist/dial/IconRenderer.d.ts +2 -2
  100. package/dist/dial/components/DialButton.cjs +22 -0
  101. package/dist/dial/components/DialButton.d.cts +28 -0
  102. package/dist/dial/components/DialButton.d.ts +28 -0
  103. package/dist/dial/components/DialButton.mjs +13 -0
  104. package/dist/dial/components/DialCustom.cjs +11 -0
  105. package/dist/dial/components/DialCustom.d.cts +34 -0
  106. package/dist/dial/components/DialCustom.d.ts +34 -0
  107. package/dist/dial/components/DialCustom.mjs +2 -0
  108. package/dist/dial/components/index.cjs +29 -0
  109. package/dist/dial/components/index.d.cts +4 -0
  110. package/dist/dial/components/index.d.ts +4 -0
  111. package/dist/dial/components/index.mjs +16 -0
  112. package/dist/dial/index.cjs +90 -72
  113. package/dist/dial/index.d.cts +4 -1
  114. package/dist/dial/index.d.ts +4 -1
  115. package/dist/dial/index.mjs +65 -55
  116. package/dist/dial/types.d.cts +4 -93
  117. package/dist/dial/types.d.ts +4 -93
  118. package/dist/dial/wrapped-inputs/ControlledInputs.cjs +70 -60
  119. package/dist/dial/wrapped-inputs/ControlledInputs.d.cts +7 -6
  120. package/dist/dial/wrapped-inputs/ControlledInputs.d.ts +7 -6
  121. package/dist/dial/wrapped-inputs/ControlledInputs.mjs +65 -55
  122. package/dist/{auth/components/index.cjs → dial/wrapped-inputs/DialArrayInput.cjs} +67 -57
  123. package/dist/dial/wrapped-inputs/DialArrayInput.d.cts +20 -0
  124. package/dist/dial/wrapped-inputs/DialArrayInput.d.ts +20 -0
  125. package/dist/{auth/components/index.mjs → dial/wrapped-inputs/DialArrayInput.mjs} +65 -55
  126. package/dist/dial/wrapped-inputs/DialInputs.cjs +79 -69
  127. package/dist/dial/wrapped-inputs/DialInputs.d.cts +18 -15
  128. package/dist/dial/wrapped-inputs/DialInputs.d.ts +18 -15
  129. package/dist/dial/wrapped-inputs/DialInputs.mjs +65 -55
  130. package/dist/dial/wrapped-inputs/DialInterfaceInput.cjs +66 -56
  131. package/dist/dial/wrapped-inputs/DialInterfaceInput.d.cts +7 -2
  132. package/dist/dial/wrapped-inputs/DialInterfaceInput.d.ts +7 -2
  133. package/dist/dial/wrapped-inputs/DialInterfaceInput.mjs +65 -55
  134. package/dist/dial/wrapped-inputs/DialPresetsInput.cjs +56 -49
  135. package/dist/dial/wrapped-inputs/DialPresetsInput.d.cts +3 -2
  136. package/dist/dial/wrapped-inputs/DialPresetsInput.d.ts +3 -2
  137. package/dist/dial/wrapped-inputs/DialPresetsInput.mjs +55 -48
  138. package/dist/dial/wrapped-inputs/DialTupleInput.cjs +139 -0
  139. package/dist/dial/wrapped-inputs/DialTupleInput.d.cts +18 -0
  140. package/dist/dial/wrapped-inputs/DialTupleInput.d.ts +18 -0
  141. package/dist/dial/wrapped-inputs/DialTupleInput.mjs +130 -0
  142. package/dist/dial/wrapped-inputs/DialVectorInput.cjs +66 -56
  143. package/dist/dial/wrapped-inputs/DialVectorInput.d.cts +2 -2
  144. package/dist/dial/wrapped-inputs/DialVectorInput.d.ts +2 -2
  145. package/dist/dial/wrapped-inputs/DialVectorInput.mjs +65 -55
  146. package/dist/dial/wrapped-inputs/index.cjs +94 -76
  147. package/dist/dial/wrapped-inputs/index.d.cts +3 -0
  148. package/dist/dial/wrapped-inputs/index.d.ts +3 -0
  149. package/dist/dial/wrapped-inputs/index.mjs +65 -55
  150. package/dist/highlight-cursor/cursor-context.d.cts +2 -2
  151. package/dist/highlight-cursor/cursor-context.d.ts +2 -2
  152. package/dist/highlight-cursor/cursor-provider.cjs +2 -2
  153. package/dist/highlight-cursor/cursor-provider.d.cts +1 -1
  154. package/dist/highlight-cursor/cursor-provider.d.ts +1 -1
  155. package/dist/highlight-cursor/cursor-provider.mjs +1 -1
  156. package/dist/highlight-cursor/enhanced-components.cjs +14 -14
  157. package/dist/highlight-cursor/enhanced-components.d.cts +4 -4
  158. package/dist/highlight-cursor/enhanced-components.d.ts +4 -4
  159. package/dist/highlight-cursor/enhanced-components.mjs +9 -9
  160. package/dist/highlight-cursor/index.cjs +16 -16
  161. package/dist/highlight-cursor/index.mjs +10 -10
  162. package/dist/highlight-cursor/types.d.cts +2 -1
  163. package/dist/highlight-cursor/types.d.ts +2 -1
  164. package/dist/highlight-cursor/with-cursor.d.cts +2 -2
  165. package/dist/highlight-cursor/with-cursor.d.ts +2 -2
  166. package/dist/hooks/clientOnly.d.cts +4 -4
  167. package/dist/hooks/clientOnly.d.ts +4 -4
  168. package/dist/hooks/index.cjs +20 -20
  169. package/dist/hooks/index.mjs +4 -4
  170. package/dist/index.cjs +340 -254
  171. package/dist/index.css +13 -13
  172. package/dist/index.d.cts +14 -3
  173. package/dist/index.d.ts +14 -3
  174. package/dist/index.mjs +65 -55
  175. package/dist/schema-types-D9b7Dc1G.d.cts +163 -0
  176. package/dist/schema-types-D9b7Dc1G.d.ts +163 -0
  177. package/dist/styles/theme.css +1 -1
  178. package/dist/ui/DialBadge.cjs +9 -9
  179. package/dist/ui/DialBadge.mjs +5 -5
  180. package/dist/ui/UIKitBadge.cjs +9 -9
  181. package/dist/ui/UIKitBadge.mjs +5 -5
  182. package/dist/ui/alert-dialog.cjs +60 -0
  183. package/dist/ui/alert-dialog.d.cts +17 -0
  184. package/dist/ui/alert-dialog.d.ts +17 -0
  185. package/dist/ui/alert-dialog.mjs +11 -0
  186. package/dist/ui/avatar.cjs +4 -4
  187. package/dist/ui/avatar.d.cts +2 -2
  188. package/dist/ui/avatar.d.ts +2 -2
  189. package/dist/ui/avatar.mjs +4 -4
  190. package/dist/ui/badge.cjs +7 -7
  191. package/dist/ui/badge.d.cts +2 -2
  192. package/dist/ui/badge.d.ts +2 -2
  193. package/dist/ui/badge.mjs +5 -5
  194. package/dist/ui/button.cjs +4 -4
  195. package/dist/ui/button.d.cts +2 -2
  196. package/dist/ui/button.d.ts +2 -2
  197. package/dist/ui/button.mjs +4 -4
  198. package/dist/ui/card.cjs +12 -12
  199. package/dist/ui/card.mjs +5 -5
  200. package/dist/ui/checkbox.cjs +4 -4
  201. package/dist/ui/checkbox.mjs +4 -4
  202. package/dist/ui/collapsible.cjs +4 -4
  203. package/dist/ui/collapsible.mjs +4 -4
  204. package/dist/ui/context-menu.cjs +4 -4
  205. package/dist/ui/context-menu.mjs +4 -4
  206. package/dist/ui/drag-selectable/createSelectable.d.cts +2 -2
  207. package/dist/ui/drag-selectable/createSelectable.d.ts +2 -2
  208. package/dist/ui/drawer.cjs +4 -4
  209. package/dist/ui/drawer.d.cts +11 -11
  210. package/dist/ui/drawer.d.ts +11 -11
  211. package/dist/ui/drawer.mjs +4 -4
  212. package/dist/ui/dropdown.cjs +4 -4
  213. package/dist/ui/dropdown.mjs +4 -4
  214. package/dist/ui/icons/index.cjs +9 -9
  215. package/dist/ui/icons/index.mjs +1 -1
  216. package/dist/ui/index.cjs +246 -171
  217. package/dist/ui/index.d.cts +10 -2
  218. package/dist/ui/index.d.ts +10 -2
  219. package/dist/ui/index.mjs +52 -45
  220. package/dist/ui/inputs/color-input.cjs +6 -6
  221. package/dist/ui/inputs/color-input.d.cts +7 -3
  222. package/dist/ui/inputs/color-input.d.ts +7 -3
  223. package/dist/ui/inputs/color-input.mjs +5 -5
  224. package/dist/ui/inputs/index.cjs +50 -50
  225. package/dist/ui/inputs/index.mjs +21 -21
  226. package/dist/ui/inputs/input-numbers.cjs +6 -6
  227. package/dist/ui/inputs/input-numbers.d.cts +7 -3
  228. package/dist/ui/inputs/input-numbers.d.ts +7 -3
  229. package/dist/ui/inputs/input-numbers.mjs +5 -5
  230. package/dist/ui/inputs/input.cjs +4 -4
  231. package/dist/ui/inputs/input.d.cts +4 -4
  232. package/dist/ui/inputs/input.d.ts +4 -4
  233. package/dist/ui/inputs/input.mjs +4 -4
  234. package/dist/ui/inputs/number-inputs/CmInput.cjs +7 -7
  235. package/dist/ui/inputs/number-inputs/CmInput.d.cts +2 -2
  236. package/dist/ui/inputs/number-inputs/CmInput.d.ts +2 -2
  237. package/dist/ui/inputs/number-inputs/CmInput.mjs +6 -6
  238. package/dist/ui/inputs/number-inputs/DegInput.cjs +7 -7
  239. package/dist/ui/inputs/number-inputs/DegInput.d.cts +2 -2
  240. package/dist/ui/inputs/number-inputs/DegInput.d.ts +2 -2
  241. package/dist/ui/inputs/number-inputs/DegInput.mjs +6 -6
  242. package/dist/ui/inputs/number-inputs/EulerDegInput.cjs +9 -9
  243. package/dist/ui/inputs/number-inputs/EulerDegInput.d.cts +2 -2
  244. package/dist/ui/inputs/number-inputs/EulerDegInput.d.ts +2 -2
  245. package/dist/ui/inputs/number-inputs/EulerDegInput.mjs +8 -8
  246. package/dist/ui/inputs/number-inputs/EulerInput.cjs +8 -8
  247. package/dist/ui/inputs/number-inputs/EulerInput.d.cts +2 -2
  248. package/dist/ui/inputs/number-inputs/EulerInput.d.ts +2 -2
  249. package/dist/ui/inputs/number-inputs/EulerInput.mjs +7 -7
  250. package/dist/ui/inputs/number-inputs/EulerRadInput.cjs +8 -8
  251. package/dist/ui/inputs/number-inputs/EulerRadInput.d.cts +2 -2
  252. package/dist/ui/inputs/number-inputs/EulerRadInput.d.ts +2 -2
  253. package/dist/ui/inputs/number-inputs/EulerRadInput.mjs +7 -7
  254. package/dist/ui/inputs/number-inputs/InchInput.cjs +7 -7
  255. package/dist/ui/inputs/number-inputs/InchInput.d.cts +2 -2
  256. package/dist/ui/inputs/number-inputs/InchInput.d.ts +2 -2
  257. package/dist/ui/inputs/number-inputs/InchInput.mjs +6 -6
  258. package/dist/ui/inputs/number-inputs/IntInput.cjs +7 -7
  259. package/dist/ui/inputs/number-inputs/IntInput.d.cts +2 -2
  260. package/dist/ui/inputs/number-inputs/IntInput.d.ts +2 -2
  261. package/dist/ui/inputs/number-inputs/IntInput.mjs +6 -6
  262. package/dist/ui/inputs/number-inputs/KVectorInput.cjs +8 -8
  263. package/dist/ui/inputs/number-inputs/KVectorInput.d.cts +2 -2
  264. package/dist/ui/inputs/number-inputs/KVectorInput.d.ts +2 -2
  265. package/dist/ui/inputs/number-inputs/KVectorInput.mjs +7 -7
  266. package/dist/ui/inputs/number-inputs/QuaternionInput.cjs +8 -8
  267. package/dist/ui/inputs/number-inputs/QuaternionInput.d.cts +2 -2
  268. package/dist/ui/inputs/number-inputs/QuaternionInput.d.ts +2 -2
  269. package/dist/ui/inputs/number-inputs/QuaternionInput.mjs +7 -7
  270. package/dist/ui/inputs/number-inputs/RadInput.cjs +7 -7
  271. package/dist/ui/inputs/number-inputs/RadInput.d.cts +2 -2
  272. package/dist/ui/inputs/number-inputs/RadInput.d.ts +2 -2
  273. package/dist/ui/inputs/number-inputs/RadInput.mjs +6 -6
  274. package/dist/ui/inputs/number-inputs/TimeInput.cjs +7 -7
  275. package/dist/ui/inputs/number-inputs/TimeInput.d.cts +2 -2
  276. package/dist/ui/inputs/number-inputs/TimeInput.d.ts +2 -2
  277. package/dist/ui/inputs/number-inputs/TimeInput.mjs +6 -6
  278. package/dist/ui/inputs/number-inputs/Vec3Input.cjs +8 -8
  279. package/dist/ui/inputs/number-inputs/Vec3Input.d.cts +2 -2
  280. package/dist/ui/inputs/number-inputs/Vec3Input.d.ts +2 -2
  281. package/dist/ui/inputs/number-inputs/Vec3Input.mjs +7 -7
  282. package/dist/ui/inputs/number-inputs/VectorInput.cjs +7 -7
  283. package/dist/ui/inputs/number-inputs/VectorInput.d.cts +4 -2
  284. package/dist/ui/inputs/number-inputs/VectorInput.d.ts +4 -2
  285. package/dist/ui/inputs/number-inputs/VectorInput.mjs +6 -6
  286. package/dist/ui/inputs/number-inputs/index.cjs +41 -41
  287. package/dist/ui/inputs/number-inputs/index.mjs +18 -18
  288. package/dist/ui/inputs/presets-input.cjs +7 -7
  289. package/dist/ui/inputs/presets-input.d.cts +2 -2
  290. package/dist/ui/inputs/presets-input.d.ts +2 -2
  291. package/dist/ui/inputs/presets-input.mjs +6 -6
  292. package/dist/ui/inputs/presets-rad-input.cjs +8 -8
  293. package/dist/ui/inputs/presets-rad-input.d.cts +2 -2
  294. package/dist/ui/inputs/presets-rad-input.d.ts +2 -2
  295. package/dist/ui/inputs/presets-rad-input.mjs +7 -7
  296. package/dist/ui/inputs/text-input.cjs +4 -4
  297. package/dist/ui/inputs/text-input.d.cts +2 -2
  298. package/dist/ui/inputs/text-input.d.ts +2 -2
  299. package/dist/ui/inputs/text-input.mjs +4 -4
  300. package/dist/ui/label.cjs +4 -4
  301. package/dist/ui/label.d.cts +4 -4
  302. package/dist/ui/label.d.ts +4 -4
  303. package/dist/ui/label.mjs +4 -4
  304. package/dist/ui/layout.cjs +4 -4
  305. package/dist/ui/layout.mjs +4 -4
  306. package/dist/ui/layouts/dock-layout/DockLayoutView.cjs +4 -4
  307. package/dist/ui/layouts/dock-layout/DockLayoutView.mjs +4 -4
  308. package/dist/ui/layouts/dock-layout/LayoutSlots.cjs +4 -4
  309. package/dist/ui/layouts/dock-layout/LayoutSlots.d.cts +3 -3
  310. package/dist/ui/layouts/dock-layout/LayoutSlots.d.ts +3 -3
  311. package/dist/ui/layouts/dock-layout/LayoutSlots.mjs +4 -4
  312. package/dist/ui/layouts/dock-layout/index.cjs +4 -4
  313. package/dist/ui/layouts/dock-layout/index.mjs +4 -4
  314. package/dist/ui/layouts/index.cjs +5 -5
  315. package/dist/ui/layouts/index.mjs +5 -5
  316. package/dist/ui/layouts/liquid-layout/LayoutSlots.cjs +4 -4
  317. package/dist/ui/layouts/liquid-layout/LayoutSlots.mjs +4 -4
  318. package/dist/ui/layouts/liquid-layout/LiquidLayoutView.cjs +4 -4
  319. package/dist/ui/layouts/liquid-layout/LiquidLayoutView.mjs +4 -4
  320. package/dist/ui/layouts/liquid-layout/index.cjs +4 -4
  321. package/dist/ui/layouts/liquid-layout/index.mjs +4 -4
  322. package/dist/ui/modal.cjs +4 -4
  323. package/dist/ui/modal.mjs +4 -4
  324. package/dist/ui/navigation.cjs +4 -4
  325. package/dist/ui/navigation.d.cts +2 -2
  326. package/dist/ui/navigation.d.ts +2 -2
  327. package/dist/ui/navigation.mjs +4 -4
  328. package/dist/ui/pagination.cjs +4 -4
  329. package/dist/ui/pagination.mjs +4 -4
  330. package/dist/ui/popover.cjs +13 -9
  331. package/dist/ui/popover.d.cts +18 -8
  332. package/dist/ui/popover.d.ts +18 -8
  333. package/dist/ui/popover.mjs +5 -5
  334. package/dist/ui/progress.cjs +4 -4
  335. package/dist/ui/progress.mjs +4 -4
  336. package/dist/ui/radio-group.cjs +4 -4
  337. package/dist/ui/radio-group.mjs +4 -4
  338. package/dist/ui/resizable.cjs +4 -4
  339. package/dist/ui/resizable.d.cts +2 -2
  340. package/dist/ui/resizable.d.ts +2 -2
  341. package/dist/ui/resizable.mjs +4 -4
  342. package/dist/ui/select.cjs +16 -16
  343. package/dist/ui/select.d.cts +3 -2
  344. package/dist/ui/select.d.ts +3 -2
  345. package/dist/ui/select.mjs +5 -5
  346. package/dist/ui/separator.cjs +4 -4
  347. package/dist/ui/separator.mjs +4 -4
  348. package/dist/ui/sheet.cjs +4 -4
  349. package/dist/ui/sheet.mjs +4 -4
  350. package/dist/ui/sidebar.cjs +4 -4
  351. package/dist/ui/sidebar.mjs +4 -4
  352. package/dist/ui/simple-tree-view.cjs +4 -4
  353. package/dist/ui/simple-tree-view.d.cts +2 -2
  354. package/dist/ui/simple-tree-view.d.ts +2 -2
  355. package/dist/ui/simple-tree-view.mjs +4 -4
  356. package/dist/ui/skeleton.cjs +4 -4
  357. package/dist/ui/skeleton.mjs +4 -4
  358. package/dist/ui/slider.cjs +4 -4
  359. package/dist/ui/slider.d.cts +2 -2
  360. package/dist/ui/slider.d.ts +2 -2
  361. package/dist/ui/slider.mjs +4 -4
  362. package/dist/ui/switch.cjs +6 -6
  363. package/dist/ui/switch.d.cts +4 -1
  364. package/dist/ui/switch.d.ts +4 -1
  365. package/dist/ui/switch.mjs +5 -5
  366. package/dist/ui/table.cjs +4 -4
  367. package/dist/ui/table.d.cts +9 -9
  368. package/dist/ui/table.d.ts +9 -9
  369. package/dist/ui/table.mjs +4 -4
  370. package/dist/ui/tabs.cjs +13 -9
  371. package/dist/ui/tabs.d.cts +4 -1
  372. package/dist/ui/tabs.d.ts +4 -1
  373. package/dist/ui/tabs.mjs +5 -5
  374. package/dist/ui/textarea.cjs +4 -4
  375. package/dist/ui/textarea.d.cts +1 -1
  376. package/dist/ui/textarea.d.ts +1 -1
  377. package/dist/ui/textarea.mjs +4 -4
  378. package/dist/ui/theme/ThemeProvider.cjs +15 -15
  379. package/dist/ui/theme/ThemeProvider.d.cts +2 -2
  380. package/dist/ui/theme/ThemeProvider.d.ts +2 -2
  381. package/dist/ui/theme/ThemeProvider.mjs +1 -1
  382. package/dist/ui/theme/ThemeToggles.cjs +8 -8
  383. package/dist/ui/theme/ThemeToggles.d.cts +18 -3
  384. package/dist/ui/theme/ThemeToggles.d.ts +18 -3
  385. package/dist/ui/theme/ThemeToggles.mjs +6 -6
  386. package/dist/ui/theme/index.cjs +12 -12
  387. package/dist/ui/theme/index.mjs +6 -6
  388. package/dist/ui/theme/themeScript.d.cts +2 -2
  389. package/dist/ui/theme/themeScript.d.ts +2 -2
  390. package/dist/ui/toast.cjs +9 -9
  391. package/dist/ui/toast.mjs +7 -7
  392. package/dist/ui/toggle-buttons.cjs +4 -4
  393. package/dist/ui/toggle-buttons.d.cts +7 -7
  394. package/dist/ui/toggle-buttons.d.ts +7 -7
  395. package/dist/ui/toggle-buttons.mjs +4 -4
  396. package/dist/ui/toggle-group.cjs +4 -4
  397. package/dist/ui/toggle-group.d.cts +3 -3
  398. package/dist/ui/toggle-group.d.ts +3 -3
  399. package/dist/ui/toggle-group.mjs +4 -4
  400. package/dist/ui/toggle.cjs +4 -4
  401. package/dist/ui/toggle.mjs +4 -4
  402. package/dist/ui/toolbar.cjs +4 -4
  403. package/dist/ui/toolbar.mjs +4 -4
  404. package/dist/ui/tooltip.cjs +4 -4
  405. package/dist/ui/tooltip.mjs +4 -4
  406. package/dist/ui/tree-view/TreeSearchBar.cjs +4 -4
  407. package/dist/ui/tree-view/TreeSearchBar.mjs +4 -4
  408. package/dist/ui/tree-view/TreeView.cjs +7 -7
  409. package/dist/ui/tree-view/TreeView.mjs +5 -5
  410. package/dist/ui/tree-view/index.cjs +12 -12
  411. package/dist/ui/tree-view/index.mjs +6 -6
  412. package/dist/ui/tree-view/types.d.cts +1 -0
  413. package/dist/ui/tree-view/types.d.ts +1 -0
  414. package/dist/ui/tree-view-legacy.cjs +4 -4
  415. package/dist/ui/tree-view-legacy.mjs +4 -4
  416. package/dist/ui/virtual-grid/VirtualGrid.cjs +21 -0
  417. package/dist/ui/virtual-grid/VirtualGrid.d.cts +10 -0
  418. package/dist/ui/virtual-grid/VirtualGrid.d.ts +10 -0
  419. package/dist/ui/virtual-grid/VirtualGrid.mjs +12 -0
  420. package/dist/ui/virtual-grid/index.cjs +26 -0
  421. package/dist/ui/virtual-grid/index.d.cts +4 -0
  422. package/dist/ui/virtual-grid/index.d.ts +4 -0
  423. package/dist/ui/virtual-grid/index.mjs +13 -0
  424. package/dist/ui/virtual-grid/types.cjs +2 -0
  425. package/dist/ui/virtual-grid/types.d.cts +70 -0
  426. package/dist/ui/virtual-grid/types.d.ts +70 -0
  427. package/dist/ui/virtual-grid/types.mjs +1 -0
  428. package/dist/ui/virtual-grid/useVirtualGrid.cjs +10 -0
  429. package/dist/ui/virtual-grid/useVirtualGrid.d.cts +9 -0
  430. package/dist/ui/virtual-grid/useVirtualGrid.d.ts +9 -0
  431. package/dist/ui/virtual-grid/useVirtualGrid.mjs +1 -0
  432. package/dist/ui/virtual-list/VirtualList.cjs +21 -0
  433. package/dist/ui/virtual-list/VirtualList.d.cts +10 -0
  434. package/dist/ui/virtual-list/VirtualList.d.ts +10 -0
  435. package/dist/ui/virtual-list/VirtualList.mjs +12 -0
  436. package/dist/ui/virtual-list/index.cjs +26 -0
  437. package/dist/ui/virtual-list/index.d.cts +4 -0
  438. package/dist/ui/virtual-list/index.d.ts +4 -0
  439. package/dist/ui/virtual-list/index.mjs +13 -0
  440. package/dist/ui/virtual-list/types.cjs +2 -0
  441. package/dist/ui/virtual-list/types.d.cts +54 -0
  442. package/dist/ui/virtual-list/types.d.ts +54 -0
  443. package/dist/ui/virtual-list/types.mjs +1 -0
  444. package/dist/ui/virtual-list/useVirtualList.cjs +10 -0
  445. package/dist/ui/virtual-list/useVirtualList.d.cts +9 -0
  446. package/dist/ui/virtual-list/useVirtualList.d.ts +9 -0
  447. package/dist/ui/virtual-list/useVirtualList.mjs +1 -0
  448. package/dist/ui/waterfall/CursorOverlay.cjs +4 -4
  449. package/dist/ui/waterfall/CursorOverlay.mjs +4 -4
  450. package/dist/ui/waterfall/NavigationControls.d.cts +2 -2
  451. package/dist/ui/waterfall/NavigationControls.d.ts +2 -2
  452. package/dist/ui/waterfall/TimelineEvent.cjs +4 -4
  453. package/dist/ui/waterfall/TimelineEvent.mjs +4 -4
  454. package/dist/ui/waterfall/TimelineProcessBar.cjs +4 -4
  455. package/dist/ui/waterfall/TimelineProcessBar.mjs +4 -4
  456. package/dist/ui/waterfall/Wedges.cjs +4 -4
  457. package/dist/ui/waterfall/Wedges.mjs +4 -4
  458. package/dist/ui/waterfall/WheelZoomContext.d.cts +2 -2
  459. package/dist/ui/waterfall/WheelZoomContext.d.ts +2 -2
  460. package/dist/ui/waterfall/hooks/useTimelineState.d.cts +4 -3
  461. package/dist/ui/waterfall/hooks/useTimelineState.d.ts +4 -3
  462. package/dist/ui/waterfall/hooks/useViewport.d.cts +4 -4
  463. package/dist/ui/waterfall/hooks/useViewport.d.ts +4 -4
  464. package/dist/ui/waterfall/index.cjs +13 -13
  465. package/dist/ui/waterfall/index.d.cts +2 -2
  466. package/dist/ui/waterfall/index.d.ts +2 -2
  467. package/dist/ui/waterfall/index.mjs +12 -12
  468. package/package.json +5 -9
  469. package/src/dial/DialPanel.tsx +118 -6
  470. package/src/dial/components/DialButton.tsx +52 -0
  471. package/src/dial/components/DialCustom.tsx +45 -0
  472. package/src/dial/components/index.ts +3 -0
  473. package/src/dial/index.ts +4 -1
  474. package/src/dial/types.ts +4 -12
  475. package/src/dial/wrapped-inputs/ControlledInputs.tsx +16 -11
  476. package/src/dial/wrapped-inputs/DialArrayInput.tsx +175 -0
  477. package/src/dial/wrapped-inputs/DialInputs.tsx +117 -22
  478. package/src/dial/wrapped-inputs/DialInterfaceInput.tsx +48 -12
  479. package/src/dial/wrapped-inputs/DialPresetsInput.tsx +1 -1
  480. package/src/dial/wrapped-inputs/DialTupleInput.tsx +102 -0
  481. package/src/dial/wrapped-inputs/DialVectorInput.tsx +9 -4
  482. package/src/dial/wrapped-inputs/index.ts +6 -0
  483. package/src/highlight-cursor/cursor-provider.tsx +279 -131
  484. package/src/highlight-cursor/types.ts +2 -1
  485. package/src/styles/theme.css +2 -2
  486. package/src/ui/alert-dialog.tsx +168 -0
  487. package/src/ui/badge.tsx +1 -0
  488. package/src/ui/card.tsx +1 -5
  489. package/src/ui/index.ts +4 -0
  490. package/src/ui/inputs/color-input.tsx +92 -8
  491. package/src/ui/inputs/input-numbers.tsx +148 -92
  492. package/src/ui/inputs/number-inputs/VectorInput.tsx +2 -0
  493. package/src/ui/popover.tsx +10 -49
  494. package/src/ui/select.tsx +5 -2
  495. package/src/ui/switch.tsx +7 -2
  496. package/src/ui/tabs.tsx +2 -1
  497. package/src/ui/theme/ThemeProvider.tsx +4 -3
  498. package/src/ui/theme/ThemeToggles.tsx +48 -12
  499. package/src/ui/toast.tsx +1 -3
  500. package/src/ui/tree-view/TreeView.tsx +37 -8
  501. package/src/ui/tree-view/types.ts +1 -0
  502. package/src/ui/virtual-grid/VirtualGrid.tsx +345 -0
  503. package/src/ui/virtual-grid/index.ts +10 -0
  504. package/src/ui/virtual-grid/types.ts +72 -0
  505. package/src/ui/virtual-grid/useVirtualGrid.ts +243 -0
  506. package/src/ui/virtual-list/VirtualList.tsx +207 -0
  507. package/src/ui/virtual-list/index.ts +8 -0
  508. package/src/ui/virtual-list/types.ts +54 -0
  509. package/src/ui/virtual-list/useVirtualList.ts +203 -0
  510. package/dist/auth/components/index.d.cts +0 -2
  511. package/dist/auth/components/index.d.ts +0 -2
  512. package/dist/auth/components/user-avatar/index.cjs +0 -128
  513. package/dist/auth/components/user-avatar/index.d.cts +0 -8
  514. package/dist/auth/components/user-avatar/index.d.ts +0 -8
  515. package/dist/auth/components/user-avatar/index.mjs +0 -119
  516. package/dist/auth/context/user-context.cjs +0 -10
  517. package/dist/auth/context/user-context.d.cts +0 -13
  518. package/dist/auth/context/user-context.d.ts +0 -13
  519. package/dist/auth/context/user-context.mjs +0 -1
  520. package/dist/auth/handler/fetch-auth.cjs +0 -11
  521. package/dist/auth/handler/fetch-auth.d.cts +0 -3
  522. package/dist/auth/handler/fetch-auth.d.ts +0 -3
  523. package/dist/auth/handler/fetch-auth.mjs +0 -2
  524. package/dist/auth/handler/fetch-server.cjs +0 -11
  525. package/dist/auth/handler/fetch-server.d.cts +0 -3
  526. package/dist/auth/handler/fetch-server.d.ts +0 -3
  527. package/dist/auth/handler/fetch-server.mjs +0 -2
  528. package/dist/auth/handler/get-session.cjs +0 -12
  529. package/dist/auth/handler/get-session.d.cts +0 -21
  530. package/dist/auth/handler/get-session.d.ts +0 -21
  531. package/dist/auth/handler/get-session.mjs +0 -3
  532. package/dist/auth/handler/get-sessions.cjs +0 -12
  533. package/dist/auth/handler/get-sessions.d.cts +0 -21
  534. package/dist/auth/handler/get-sessions.d.ts +0 -21
  535. package/dist/auth/handler/get-sessions.mjs +0 -3
  536. package/dist/auth/handler/sign-in-handler.cjs +0 -11
  537. package/dist/auth/handler/sign-in-handler.d.cts +0 -6
  538. package/dist/auth/handler/sign-in-handler.d.ts +0 -6
  539. package/dist/auth/handler/sign-in-handler.mjs +0 -2
  540. package/dist/auth/handler/sign-out-handler.cjs +0 -12
  541. package/dist/auth/handler/sign-out-handler.d.cts +0 -5
  542. package/dist/auth/handler/sign-out-handler.d.ts +0 -5
  543. package/dist/auth/handler/sign-out-handler.mjs +0 -3
  544. package/dist/auth/hooks/use-sign-in.cjs +0 -14
  545. package/dist/auth/hooks/use-sign-in.d.cts +0 -9
  546. package/dist/auth/hooks/use-sign-in.d.ts +0 -9
  547. package/dist/auth/hooks/use-sign-in.mjs +0 -5
  548. package/dist/auth/hooks/use-sign-out.cjs +0 -15
  549. package/dist/auth/hooks/use-sign-out.d.cts +0 -6
  550. package/dist/auth/hooks/use-sign-out.d.ts +0 -6
  551. package/dist/auth/hooks/use-sign-out.mjs +0 -6
  552. package/dist/auth/hooks/use-user.cjs +0 -11
  553. package/dist/auth/hooks/use-user.d.cts +0 -8
  554. package/dist/auth/hooks/use-user.d.ts +0 -8
  555. package/dist/auth/hooks/use-user.mjs +0 -2
  556. package/dist/auth/hooks/use-vuer-sessions.cjs +0 -15
  557. package/dist/auth/hooks/use-vuer-sessions.d.cts +0 -9
  558. package/dist/auth/hooks/use-vuer-sessions.d.ts +0 -9
  559. package/dist/auth/hooks/use-vuer-sessions.mjs +0 -6
  560. package/dist/auth/index.cjs +0 -166
  561. package/dist/auth/index.d.cts +0 -13
  562. package/dist/auth/index.d.ts +0 -13
  563. package/dist/auth/index.mjs +0 -125
  564. package/dist/auth/localstorage-key.cjs +0 -14
  565. package/dist/auth/localstorage-key.d.cts +0 -4
  566. package/dist/auth/localstorage-key.d.ts +0 -4
  567. package/dist/auth/localstorage-key.mjs +0 -1
  568. package/dist/auth/types.d.cts +0 -27
  569. package/dist/auth/types.d.ts +0 -27
  570. package/dist/auth/vuer-user-provider.cjs +0 -14
  571. package/dist/auth/vuer-user-provider.d.cts +0 -9
  572. package/dist/auth/vuer-user-provider.d.ts +0 -9
  573. package/dist/auth/vuer-user-provider.mjs +0 -5
  574. package/dist/chunk-2DXJJLJL.mjs +0 -51
  575. package/dist/chunk-3WMO5QJJ.cjs +0 -8
  576. package/dist/chunk-4TRHQ7MJ.cjs +0 -68
  577. package/dist/chunk-5OHAV55L.mjs +0 -24
  578. package/dist/chunk-6GJM7TPE.cjs +0 -28
  579. package/dist/chunk-7E5Y224I.cjs +0 -14
  580. package/dist/chunk-7R5HY3IM.cjs +0 -12
  581. package/dist/chunk-C4U5BMQH.mjs +0 -206
  582. package/dist/chunk-EMVKGL5D.mjs +0 -28
  583. package/dist/chunk-EMXEFZEB.cjs +0 -30
  584. package/dist/chunk-F4Z5KATZ.cjs +0 -8
  585. package/dist/chunk-FROQ45MN.mjs +0 -6
  586. package/dist/chunk-HOMAESTR.mjs +0 -12
  587. package/dist/chunk-HZBP6QTE.cjs +0 -208
  588. package/dist/chunk-IKSER6BF.mjs +0 -66
  589. package/dist/chunk-KIZEJMW4.cjs +0 -15
  590. package/dist/chunk-MO5V43Z3.mjs +0 -13
  591. package/dist/chunk-MRMSCW3P.cjs +0 -19
  592. package/dist/chunk-OOHCJIRV.cjs +0 -26
  593. package/dist/chunk-PX2H7Z4D.mjs +0 -26
  594. package/dist/chunk-PXDT5GFJ.mjs +0 -13
  595. package/dist/chunk-Q76WU4DL.cjs +0 -17
  596. package/dist/chunk-RSBVQ7SJ.cjs +0 -54
  597. package/dist/chunk-RTZNHV43.cjs +0 -58
  598. package/dist/chunk-SO2UTKSV.mjs +0 -17
  599. package/dist/chunk-SQJL67BU.mjs +0 -56
  600. package/dist/chunk-UT7B4TLZ.mjs +0 -5
  601. package/dist/chunk-V4KDK3BN.mjs +0 -52
  602. package/dist/chunk-VSFPXAGN.mjs +0 -10
  603. package/dist/chunk-VSIOXWSI.cjs +0 -53
  604. package/dist/chunk-X3H6FYAM.cjs +0 -15
  605. package/dist/chunk-Z7BZFZEV.mjs +0 -15
  606. package/src/auth/components/index.ts +0 -1
  607. package/src/auth/components/user-avatar/index.tsx +0 -94
  608. package/src/auth/context/user-context.ts +0 -15
  609. package/src/auth/handler/fetch-auth.ts +0 -10
  610. package/src/auth/handler/fetch-server.ts +0 -10
  611. package/src/auth/handler/get-session.ts +0 -19
  612. package/src/auth/handler/get-sessions.ts +0 -16
  613. package/src/auth/handler/sign-in-handler.ts +0 -64
  614. package/src/auth/handler/sign-out-handler.ts +0 -9
  615. package/src/auth/hooks/use-sign-in.ts +0 -33
  616. package/src/auth/hooks/use-sign-out.ts +0 -30
  617. package/src/auth/hooks/use-user.ts +0 -10
  618. package/src/auth/hooks/use-vuer-sessions.ts +0 -29
  619. package/src/auth/index.ts +0 -12
  620. package/src/auth/localstorage-key.ts +0 -3
  621. package/src/auth/types.ts +0 -38
  622. package/src/auth/vuer-user-provider.tsx +0 -58
  623. /package/dist/{auth/types.mjs → chunk-6NZ5VXK7.mjs} +0 -0
  624. /package/dist/{auth/types.cjs → chunk-AS3GNGJN.cjs} +0 -0
  625. /package/dist/{chunk-NK7L5H2Y.cjs → chunk-DPILGC4Y.cjs} +0 -0
  626. /package/dist/{chunk-OBWKFURE.cjs → chunk-IM5QVMGO.cjs} +0 -0
  627. /package/dist/{chunk-U4AANBRZ.mjs → chunk-NU5W73NH.mjs} +0 -0
  628. /package/dist/{chunk-UXWS62ZO.mjs → chunk-O57DAVOQ.mjs} +0 -0
@@ -0,0 +1,175 @@
1
+ import { Plus, X } from "lucide-react";
2
+ import React, { useCallback, useMemo } from "react";
3
+
4
+ import { Button, FormLayout, Input, Label, Switch, type LayoutType } from "../../index";
5
+ import { useDialSchema } from "../DialProvider";
6
+ import { IconRenderer } from "../IconRenderer";
7
+ import { LabelPositionT } from "../types";
8
+
9
+ interface DialArrayInputProps {
10
+ name: string;
11
+ label?: string;
12
+ labelPosition?: LabelPositionT;
13
+ icon?: string;
14
+ }
15
+
16
+ /**
17
+ * Array input component for primitive types (string, number, boolean)
18
+ * Supports add/remove operations for dynamic arrays
19
+ *
20
+ * Note: Currently only supports primitive element types.
21
+ * Complex types (objects, nested arrays) are not supported.
22
+ */
23
+ export const DialArrayInput: React.FC<DialArrayInputProps> = ({
24
+ name,
25
+ label,
26
+ labelPosition = "top",
27
+ icon,
28
+ }) => {
29
+ const { getValue, setValue, schemas } = useDialSchema();
30
+
31
+ const schema = schemas.find((s) => s.name === name);
32
+ const arrayValue = useMemo(
33
+ () => (getValue(name) || []) as Array<string | number | boolean>,
34
+ [getValue, name],
35
+ );
36
+ const elementType = schema?.arrayElementType || "string";
37
+
38
+ const handleAddItem = useCallback(() => {
39
+ const newValue = [...arrayValue];
40
+ // Add default value based on element type
41
+ switch (elementType) {
42
+ case "number":
43
+ newValue.push(0);
44
+ break;
45
+ case "boolean":
46
+ newValue.push(false);
47
+ break;
48
+ default: // string
49
+ newValue.push("");
50
+ break;
51
+ }
52
+ setValue(name, newValue);
53
+ }, [arrayValue, elementType, name, setValue]);
54
+
55
+ const handleRemoveItem = useCallback(
56
+ (index: number) => {
57
+ const newValue = arrayValue.filter((_, i) => i !== index);
58
+ setValue(name, newValue);
59
+ },
60
+ [arrayValue, name, setValue],
61
+ );
62
+
63
+ const handleItemChange = useCallback(
64
+ (index: number, value: string | number | boolean) => {
65
+ const newValue = [...arrayValue];
66
+ newValue[index] = value;
67
+ setValue(name, newValue);
68
+ },
69
+ [arrayValue, name, setValue],
70
+ );
71
+
72
+ if (!schema) {
73
+ return null;
74
+ }
75
+
76
+ const renderItemInput = (item: string | number | boolean, index: number) => {
77
+ const itemKey = `${name}-${index}`;
78
+
79
+ switch (elementType) {
80
+ case "boolean":
81
+ return (
82
+ <Switch
83
+ key={itemKey}
84
+ checked={item as boolean}
85
+ onCheckedChange={(checked) => handleItemChange(index, checked)}
86
+ />
87
+ );
88
+
89
+ case "number":
90
+ return (
91
+ <Input
92
+ key={itemKey}
93
+ type="number"
94
+ value={item as number}
95
+ onChange={(e) => handleItemChange(index, Number(e.target.value))}
96
+ className="flex-1"
97
+ step={schema.step || 0.1}
98
+ min={schema.min}
99
+ max={schema.max}
100
+ />
101
+ );
102
+
103
+ default: // string
104
+ return (
105
+ <Input
106
+ key={itemKey}
107
+ type="text"
108
+ value={item as string}
109
+ onChange={(e) => handleItemChange(index, e.target.value)}
110
+ className="flex-1"
111
+ placeholder={schema.placeholder}
112
+ />
113
+ );
114
+ }
115
+ };
116
+
117
+ const arrayContent = (
118
+ <div className="flex flex-col gap-2">
119
+ {/* Array items */}
120
+ {arrayValue.map((item, index) => (
121
+ <div key={`${name}-item-${index}`} className="flex items-center gap-2">
122
+ <span className="text-text-secondary min-w-[20px] text-xs">{index + 1}.</span>
123
+ {renderItemInput(item, index)}
124
+ <Button
125
+ variant="ghost"
126
+ size="sm"
127
+ icon
128
+ onClick={() => handleRemoveItem(index)}
129
+ className="h-8 w-8"
130
+ title="Remove item"
131
+ >
132
+ <X className="h-4 w-4" />
133
+ </Button>
134
+ </div>
135
+ ))}
136
+
137
+ {/* Add button */}
138
+ <Button variant="secondary" size="sm" onClick={handleAddItem} className="self-start">
139
+ <Plus className="mr-1 h-4 w-4" />
140
+ Add {elementType}
141
+ </Button>
142
+
143
+ {/* Empty state */}
144
+ {arrayValue.length === 0 && (
145
+ <div className="text-text-secondary text-sm italic">
146
+ No items. Click "Add {elementType}" to start.
147
+ </div>
148
+ )}
149
+ </div>
150
+ );
151
+
152
+ if (!label) {
153
+ return arrayContent;
154
+ }
155
+
156
+ return (
157
+ <FormLayout orientation={`label-${labelPosition}` as LayoutType}>
158
+ <Label size="sm" className="flex items-center gap-1 pl-1.5">
159
+ <IconRenderer iconName={icon} size={14} className="text-text-secondary" />
160
+ {label}
161
+ </Label>
162
+ <div className="flex flex-col gap-2 pl-1.5">
163
+ {schema.helpText && (
164
+ <span
165
+ className="text-text-secondary cursor-help text-xs"
166
+ title={schema.helpText as string}
167
+ >
168
+ ⓘ {schema.helpText}
169
+ </span>
170
+ )}
171
+ <div className="border-surface-secondary rounded-md border p-2">{arrayContent}</div>
172
+ </div>
173
+ </FormLayout>
174
+ );
175
+ };
@@ -1,6 +1,8 @@
1
- import React, { PropsWithChildren } from "react";
1
+ import { LockKeyhole, LockOpen } from "lucide-react";
2
+ import React, { PropsWithChildren, useCallback, useMemo } from "react";
2
3
 
3
4
  import {
5
+ Button,
4
6
  CmInput,
5
7
  DegInput,
6
8
  EulerDegInput,
@@ -32,6 +34,8 @@ interface DialWrapperProps {
32
34
  max?: number;
33
35
  labelPosition?: LabelPositionT;
34
36
  icon?: string;
37
+ /** Display format for angle values: rad (default), deg, or pi */
38
+ format?: "rad" | "deg" | "pi";
35
39
  }
36
40
 
37
41
  // Helper component for wrapping inputs with labels
@@ -47,7 +51,7 @@ const DialInputWrapper: React.FC<PropsWithChildren<DialWrapperProps>> = ({
47
51
 
48
52
  return (
49
53
  <FormLayout orientation={`label-${labelPosition}` as LayoutType} className="overflow-x-hidden">
50
- <Label size="sm" className="flex items-center gap-1">
54
+ <Label size="sm" className="flex items-center gap-1 pl-1.5">
51
55
  <IconRenderer iconName={icon} size={14} className="text-text-secondary" />
52
56
  {label}
53
57
  </Label>
@@ -73,15 +77,103 @@ export const DialVec3Input: React.FC<DialWrapperProps> = ({
73
77
  const minArray = min !== undefined ? [min, min, min] : undefined;
74
78
  const maxArray = max !== undefined ? [max, max, max] : undefined;
75
79
 
80
+ const isLockable = ["position", "rotation", "scale"].includes(name);
81
+
82
+ // Get disabled fields from the schema values
83
+ const disabledFields = (getValue("disabledFields") as string[]) ?? [];
84
+
85
+ // Create disabled array for each axis
86
+ const disabled = useMemo(() => {
87
+ if (!isLockable) return undefined;
88
+ return [
89
+ disabledFields.includes(`${name}.0`),
90
+ disabledFields.includes(`${name}.1`),
91
+ disabledFields.includes(`${name}.2`),
92
+ ];
93
+ }, [isLockable, name, disabledFields]);
94
+
95
+ // Handle suffix batch action (drag to lock/unlock multiple inputs)
96
+ const handleSuffixBatchAction = useCallback(
97
+ (indices: number[]) => {
98
+ if (indices.length === 0) return;
99
+
100
+ const firstIndex = indices[0];
101
+ const firstFieldName = `${name}.${firstIndex}`;
102
+ const shouldLock = !disabledFields.includes(firstFieldName);
103
+
104
+ const newDisabledFields = [...disabledFields];
105
+
106
+ indices.forEach((index) => {
107
+ const fieldName = `${name}.${index}`;
108
+ const fieldIndex = newDisabledFields.indexOf(fieldName);
109
+
110
+ if (shouldLock && fieldIndex === -1) {
111
+ // Lock this field
112
+ newDisabledFields.push(fieldName);
113
+ } else if (!shouldLock && fieldIndex > -1) {
114
+ // Unlock this field
115
+ newDisabledFields.splice(fieldIndex, 1);
116
+ }
117
+ });
118
+
119
+ setValue("disabledFields", newDisabledFields);
120
+ },
121
+ [name, disabledFields, setValue],
122
+ );
123
+
124
+ // Create lock button suffix array
125
+ const suffix = useMemo(() => {
126
+ if (!isLockable) return undefined;
127
+ return [0, 1, 2].map((index) => {
128
+ const isLocked = disabled?.[index] ?? false;
129
+
130
+ return (
131
+ <Button
132
+ variant="ghost"
133
+ size="sm"
134
+ icon
135
+ className="hover:bg-shadow-secondary size-4 p-0"
136
+ title={isLocked ? `Unlock ${["X", "Y", "Z"][index]}` : `Lock ${["X", "Y", "Z"][index]}`}
137
+ >
138
+ {isLocked ? (
139
+ <LockKeyhole strokeWidth={1.5} className="text-icon-tertiary size-2.5" />
140
+ ) : (
141
+ <LockOpen strokeWidth={1.5} className="text-icon-tertiary size-2.5" />
142
+ )}
143
+ </Button>
144
+ );
145
+ });
146
+ }, [isLockable, disabled]);
147
+
148
+ // Handle value change - filter out locked values
149
+ const handleValueChange = useCallback(
150
+ (newValue: [number, number, number]) => {
151
+ if (!isLockable || !disabled) {
152
+ setValue(name, newValue);
153
+ return;
154
+ }
155
+ const filteredValue = newValue.map((v, i) => (disabled[i] ? value[i] : v)) as [
156
+ number,
157
+ number,
158
+ number,
159
+ ];
160
+ setValue(name, filteredValue);
161
+ },
162
+ [name, setValue, value, isLockable, disabled],
163
+ );
164
+
76
165
  if (labelPosition === "inline") {
77
166
  return (
78
167
  <Vec3Input
79
168
  value={value}
80
- onValuesChange={(val) => setValue(name, val)}
169
+ onValuesChange={handleValueChange}
81
170
  size={size}
82
171
  step={step}
83
172
  min={minArray}
84
173
  max={maxArray}
174
+ disabledItems={disabled}
175
+ suffix={suffix}
176
+ onSuffixBatchAction={isLockable ? handleSuffixBatchAction : undefined}
85
177
  prefix={label ? [label, "", ""] : undefined}
86
178
  />
87
179
  );
@@ -90,11 +182,14 @@ export const DialVec3Input: React.FC<DialWrapperProps> = ({
90
182
  <DialInputWrapper name={name} label={label} icon={icon}>
91
183
  <Vec3Input
92
184
  value={value}
93
- onValuesChange={(val) => setValue(name, val)}
185
+ onValuesChange={handleValueChange}
94
186
  size={size}
95
187
  step={step}
96
188
  min={minArray}
97
189
  max={maxArray}
190
+ disabledItems={disabled}
191
+ suffix={suffix}
192
+ onSuffixBatchAction={isLockable ? handleSuffixBatchAction : undefined}
98
193
  />
99
194
  </DialInputWrapper>
100
195
  );
@@ -467,7 +562,7 @@ export const DialTextInput: React.FC<DialWrapperProps & { placeholder?: string }
467
562
  );
468
563
  } else {
469
564
  return (
470
- <DialInputWrapper name={name} label={label} icon={icon}>
565
+ <DialInputWrapper name={name} label={label} icon={icon} labelPosition={labelPosition}>
471
566
  <TextInput
472
567
  value={value}
473
568
  onChange={(val) => setValue(name, val)}
@@ -479,7 +574,7 @@ export const DialTextInput: React.FC<DialWrapperProps & { placeholder?: string }
479
574
  }
480
575
  };
481
576
 
482
- // Dial-wrapped EulerRadInput (radians with degree display)
577
+ // Dial-wrapped EulerRadInput (radians with configurable display format)
483
578
  export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
484
579
  name,
485
580
  label,
@@ -487,6 +582,7 @@ export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
487
582
  step,
488
583
  labelPosition,
489
584
  icon,
585
+ format = "rad", // Default to radians
490
586
  }) => {
491
587
  const { getValue, setValue } = useDialSchema();
492
588
  const value = (getValue(name) ?? [0, 0, 0]) as [number, number, number];
@@ -498,7 +594,7 @@ export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
498
594
  onValuesChange={(val) => setValue(name, val)}
499
595
  size={size}
500
596
  step={step}
501
- display="deg"
597
+ display={format}
502
598
  prefix={label ? [label, "", ""] : undefined}
503
599
  />
504
600
  );
@@ -510,14 +606,14 @@ export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
510
606
  onValuesChange={(val) => setValue(name, val)}
511
607
  size={size}
512
608
  step={step}
513
- display="deg"
609
+ display={format}
514
610
  />
515
611
  </DialInputWrapper>
516
612
  );
517
613
  }
518
614
  };
519
615
 
520
- // Dial-wrapped number-rad input (displays as degrees but stores as radians)
616
+ // Dial-wrapped number-rad input (stores radians, configurable display format)
521
617
  export const DialNumberRadInput: React.FC<DialWrapperProps> = ({
522
618
  name,
523
619
  label,
@@ -525,24 +621,17 @@ export const DialNumberRadInput: React.FC<DialWrapperProps> = ({
525
621
  step,
526
622
  labelPosition,
527
623
  icon,
624
+ format = "rad", // Default to radians
528
625
  }) => {
529
626
  const { getValue, setValue } = useDialSchema();
530
627
  const value = (getValue(name) ?? 0) as number;
531
628
 
532
- // Convert radians to degrees for display
533
- const degValue = (value * 180) / Math.PI;
534
-
535
- // Handler to convert degrees back to radians
536
- const handleChange = (deg: number) => {
537
- const rad = (deg * Math.PI) / 180;
538
- setValue(name, rad);
539
- };
540
-
541
629
  if (labelPosition === "inline") {
542
630
  return (
543
- <DegInput
544
- value={degValue}
545
- onChange={handleChange}
631
+ <RadInput
632
+ value={value}
633
+ onChange={(val) => setValue(name, val)}
634
+ display={format}
546
635
  size={size}
547
636
  step={step}
548
637
  prefix={label ? [label] : undefined}
@@ -551,7 +640,13 @@ export const DialNumberRadInput: React.FC<DialWrapperProps> = ({
551
640
  } else {
552
641
  return (
553
642
  <DialInputWrapper name={name} label={label} icon={icon}>
554
- <DegInput value={degValue} onChange={handleChange} size={size} step={step} />
643
+ <RadInput
644
+ value={value}
645
+ onChange={(val) => setValue(name, val)}
646
+ display={format}
647
+ size={size}
648
+ step={step}
649
+ />
555
650
  </DialInputWrapper>
556
651
  );
557
652
  }
@@ -1,14 +1,24 @@
1
1
  import React, { useCallback } from "react";
2
2
 
3
+ import { FormLayout, Label, type LayoutType } from "../../index";
3
4
  import { DialPanel } from "../DialPanel";
4
5
  import { DialProvider, useDialSchema } from "../DialProvider";
6
+ import { IconRenderer } from "../IconRenderer";
5
7
  import { LabelPositionT } from "../types";
6
8
 
7
9
  interface DialInterfaceInputProps {
8
10
  name: string;
11
+ label?: string;
12
+ labelPosition?: LabelPositionT;
13
+ icon?: string;
9
14
  }
10
15
 
11
- export const DialInterfaceInput: React.FC<DialInterfaceInputProps> = ({ name }) => {
16
+ export const DialInterfaceInput: React.FC<DialInterfaceInputProps> = ({
17
+ name,
18
+ label,
19
+ labelPosition = "top",
20
+ icon,
21
+ }) => {
12
22
  const { getValue, setValue, schemas } = useDialSchema();
13
23
 
14
24
  const values: Record<string, unknown> = getValue(name) as Record<string, unknown>;
@@ -28,17 +38,43 @@ export const DialInterfaceInput: React.FC<DialInterfaceInputProps> = ({ name })
28
38
  return null;
29
39
  }
30
40
 
31
- return (
32
- <DialProvider
33
- schemas={schema.typeDefinition.schemas}
34
- values={values}
35
- onValueChange={handlePropertyChange}
36
- >
37
- <DialPanel
41
+ const interfaceContent = (
42
+ <div className="border-surface-secondary flex flex-col gap-2 rounded-md border p-2">
43
+ <DialProvider
38
44
  schemas={schema.typeDefinition.schemas}
39
- groups={schema.typeDefinition.groups}
40
- labelLayout={schema.labelPosition as LabelPositionT}
41
- />
42
- </DialProvider>
45
+ values={values}
46
+ onValueChange={handlePropertyChange}
47
+ >
48
+ <DialPanel
49
+ schemas={schema.typeDefinition.schemas}
50
+ groups={schema.typeDefinition.groups}
51
+ labelLayout={schema.labelPosition as LabelPositionT}
52
+ />
53
+ </DialProvider>
54
+ </div>
55
+ );
56
+
57
+ if (!label) {
58
+ return interfaceContent;
59
+ }
60
+
61
+ return (
62
+ <FormLayout orientation={`label-${labelPosition}` as LayoutType}>
63
+ <Label size="sm" className="flex items-center gap-1 pl-1.5">
64
+ <IconRenderer iconName={icon} size={14} className="text-text-secondary" />
65
+ {label}
66
+ </Label>
67
+ <div className="flex flex-col gap-2 pl-1.5">
68
+ {schema.helpText && (
69
+ <span
70
+ className="text-text-secondary cursor-help text-xs"
71
+ title={schema.helpText as string}
72
+ >
73
+ ⓘ {schema.helpText}
74
+ </span>
75
+ )}
76
+ {interfaceContent}
77
+ </div>
78
+ </FormLayout>
43
79
  );
44
80
  };
@@ -18,7 +18,7 @@ const DialInputWrapper: React.FC<{
18
18
 
19
19
  return (
20
20
  <FormLayout orientation={`label-${labelPosition}` as LayoutType}>
21
- <Label size="sm" className="flex items-center gap-1">
21
+ <Label size="sm" className="flex items-center gap-1 pl-1.5">
22
22
  <IconRenderer iconName={icon} size={14} className="text-text-secondary" />
23
23
  {label}
24
24
  </Label>
@@ -0,0 +1,102 @@
1
+ import React, { useCallback, useMemo } from "react";
2
+
3
+ import { FormLayout, Label, type LayoutType } from "../../index";
4
+ import { DialPanel } from "../DialPanel";
5
+ import { DialProvider, useDialSchema } from "../DialProvider";
6
+ import { IconRenderer } from "../IconRenderer";
7
+ import { LabelPositionT } from "../types";
8
+
9
+ interface DialTupleInputProps {
10
+ name: string;
11
+ label?: string;
12
+ labelPosition?: LabelPositionT;
13
+ icon?: string;
14
+ }
15
+
16
+ /**
17
+ * General tuple input component that handles mixed-type tuples
18
+ * Similar to interface/object but displays elements in a more compact layout
19
+ * Used for tuples containing strings, objects, or other complex types
20
+ */
21
+ export const DialTupleInput: React.FC<DialTupleInputProps> = ({
22
+ name,
23
+ label,
24
+ labelPosition = "top",
25
+ icon,
26
+ }) => {
27
+ const { getValue, setValue, schemas } = useDialSchema();
28
+
29
+ const values = useMemo(() => getValue(name) || [], [getValue, name]);
30
+
31
+ const handleElementChange = useCallback(
32
+ (elementName: string, value: unknown) => {
33
+ const newValues = Array.isArray(values) ? [...values] : [];
34
+
35
+ // Extract index from element name (e.g., "[0]" -> 0 or "x" -> find by name)
36
+ const schema = schemas.find((s) => s.name === name);
37
+ if (!schema || !schema.typeDefinition?.schemas) {
38
+ return;
39
+ }
40
+
41
+ const elementIndex = schema.typeDefinition.schemas.findIndex((s) => s.name === elementName);
42
+
43
+ if (elementIndex >= 0) {
44
+ newValues[elementIndex] = value;
45
+ setValue(name, newValues);
46
+ }
47
+ },
48
+ [name, setValue, values, schemas],
49
+ );
50
+
51
+ const schema = schemas.find((s) => s.name === name);
52
+
53
+ if (!schema || !schema.typeDefinition?.schemas) {
54
+ return null;
55
+ }
56
+
57
+ // Convert tuple array to object format for DialProvider
58
+ const valuesObject: Record<string, unknown> = {};
59
+ schema.typeDefinition.schemas.forEach((elemSchema, index) => {
60
+ valuesObject[elemSchema.name] = Array.isArray(values) ? values[index] : undefined;
61
+ });
62
+
63
+ const tupleContent = (
64
+ <div className="border-surface-secondary flex flex-col gap-2 rounded-md border p-2">
65
+ <DialProvider
66
+ schemas={schema.typeDefinition.schemas}
67
+ values={valuesObject}
68
+ onValueChange={handleElementChange}
69
+ >
70
+ <DialPanel
71
+ schemas={schema.typeDefinition.schemas}
72
+ groups={schema.typeDefinition.groups}
73
+ labelLayout={schema.labelPosition as LabelPositionT}
74
+ />
75
+ </DialProvider>
76
+ </div>
77
+ );
78
+
79
+ if (!label) {
80
+ return tupleContent;
81
+ }
82
+
83
+ return (
84
+ <FormLayout orientation={`label-${labelPosition}` as LayoutType}>
85
+ <Label size="sm" className="flex items-center gap-1 pl-1.5">
86
+ <IconRenderer iconName={icon} size={14} className="text-text-secondary" />
87
+ {label}
88
+ </Label>
89
+ <div className="flex flex-col gap-2 pl-1.5">
90
+ {schema.helpText && (
91
+ <span
92
+ className="text-text-secondary cursor-help text-xs"
93
+ title={schema.helpText as string}
94
+ >
95
+ ⓘ {schema.helpText}
96
+ </span>
97
+ )}
98
+ {tupleContent}
99
+ </div>
100
+ </FormLayout>
101
+ );
102
+ };
@@ -65,17 +65,22 @@ export const DialVectorInput: React.FC<DialVectorInputProps> = ({
65
65
  const steps = schema.steps || [];
66
66
  const mins = schema.mins || [];
67
67
  const maxs = schema.maxs || [];
68
+ const defaults = Array.isArray(schema.value) ? schema.value : [];
68
69
 
69
70
  // Ensure value is an array with correct dimensions
70
71
  const vectorValue = Array.isArray(value)
71
- ? value.concat(Array(Math.max(0, dimensions - value.length)).fill(0))
72
- : Array(dimensions).fill(0);
72
+ ? value.concat(
73
+ Array.from({ length: Math.max(0, dimensions - value.length) }, (_, i) =>
74
+ defaults[value.length + i] !== undefined ? defaults[value.length + i] : 0,
75
+ ),
76
+ )
77
+ : Array.from({ length: dimensions }, (_, i) => (defaults[i] !== undefined ? defaults[i] : 0));
73
78
 
74
79
  // Check if we have mixed types (contains boolean)
75
80
  const hasMixedTypes = dtypes.some((dtype) => dtype === "boolean");
76
81
 
77
82
  // Determine layout from tags
78
- const gridAutoFlow = schema.vectorFlow === "column" ? "column" : "row";
83
+ const gridAutoFlow = schema.vectorFlow === "row" ? "row" : "column";
79
84
  const gridColumns = typeof schema.vectorCols === "number" ? schema.vectorCols : undefined;
80
85
  const gridRows = typeof schema.vectorRows === "number" ? schema.vectorRows : undefined;
81
86
 
@@ -222,7 +227,7 @@ export const DialVectorInput: React.FC<DialVectorInputProps> = ({
222
227
 
223
228
  return (
224
229
  <FormLayout orientation={`label-${labelPosition}` as LayoutType}>
225
- <Label size="sm" className="flex items-center gap-1">
230
+ <Label size="sm" className="flex items-center gap-1 pl-1.5">
226
231
  <IconRenderer iconName={icon} size={14} className="text-text-secondary" />
227
232
  {label}
228
233
  </Label>
@@ -30,3 +30,9 @@ export { DialPresetsInput } from "./DialPresetsInput";
30
30
 
31
31
  // Variable-dimension vector input
32
32
  export { DialVectorInput } from "./DialVectorInput";
33
+
34
+ // General tuple input for mixed types
35
+ export { DialTupleInput } from "./DialTupleInput";
36
+
37
+ // Array input for primitive types
38
+ export { DialArrayInput } from "./DialArrayInput";