@startdownnotez404/ui 1.0.0 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/README.md +110 -0
  2. package/dist/AutocompleteField-ZKNU2IRR.mjs +181 -0
  3. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +1 -0
  4. package/dist/AvatarField-SAODT3CZ.mjs +275 -0
  5. package/dist/AvatarField-SAODT3CZ.mjs.map +1 -0
  6. package/dist/CodeEditor-JF55ZNVD.mjs +34 -0
  7. package/dist/CodeEditor-JF55ZNVD.mjs.map +1 -0
  8. package/dist/DateField-ZYMZFHL4.mjs +82 -0
  9. package/dist/DateField-ZYMZFHL4.mjs.map +1 -0
  10. package/dist/DateTimeField-TPTJ7YIZ.mjs +65 -0
  11. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +1 -0
  12. package/dist/FileUploadField-NTMWBJER.mjs +78 -0
  13. package/dist/FileUploadField-NTMWBJER.mjs.map +1 -0
  14. package/dist/JSONEditorField-TMRWGXVR.mjs +64 -0
  15. package/dist/JSONEditorField-TMRWGXVR.mjs.map +1 -0
  16. package/dist/PopperMenu-LJ36RPBW.mjs +416 -0
  17. package/dist/PopperMenu-LJ36RPBW.mjs.map +1 -0
  18. package/dist/TelField-LOGRVZ4I.mjs +88 -0
  19. package/dist/TelField-LOGRVZ4I.mjs.map +1 -0
  20. package/dist/alert.d.mts +202 -0
  21. package/dist/alert.d.ts +202 -0
  22. package/dist/alert.js +784 -0
  23. package/dist/alert.js.map +1 -0
  24. package/dist/alert.mjs +47 -0
  25. package/dist/alert.mjs.map +1 -0
  26. package/dist/appBar.d.mts +21 -0
  27. package/dist/appBar.d.ts +21 -0
  28. package/dist/appBar.js +64 -0
  29. package/dist/appBar.js.map +1 -0
  30. package/dist/appBar.mjs +12 -0
  31. package/dist/appBar.mjs.map +1 -0
  32. package/dist/autocomplete.d.mts +121 -0
  33. package/dist/autocomplete.d.ts +121 -0
  34. package/dist/autocomplete.js +2052 -0
  35. package/dist/autocomplete.js.map +1 -0
  36. package/dist/autocomplete.mjs +21 -0
  37. package/dist/autocomplete.mjs.map +1 -0
  38. package/dist/avatar.d.mts +253 -0
  39. package/dist/avatar.d.ts +253 -0
  40. package/dist/avatar.js +992 -0
  41. package/dist/avatar.js.map +1 -0
  42. package/dist/avatar.mjs +41 -0
  43. package/dist/avatar.mjs.map +1 -0
  44. package/dist/badge.d.mts +123 -0
  45. package/dist/badge.d.ts +123 -0
  46. package/dist/badge.js +151 -0
  47. package/dist/badge.js.map +1 -0
  48. package/dist/badge.mjs +10 -0
  49. package/dist/badge.mjs.map +1 -0
  50. package/dist/box.d.mts +36 -0
  51. package/dist/box.d.ts +36 -0
  52. package/dist/box.js +199 -0
  53. package/dist/box.js.map +1 -0
  54. package/dist/box.mjs +14 -0
  55. package/dist/box.mjs.map +1 -0
  56. package/dist/button.d.mts +230 -52
  57. package/dist/button.d.ts +230 -52
  58. package/dist/button.js +392 -60
  59. package/dist/button.js.map +1 -1
  60. package/dist/button.mjs +14 -8
  61. package/dist/card.d.mts +47 -0
  62. package/dist/card.d.ts +47 -0
  63. package/dist/card.js +135 -0
  64. package/dist/card.js.map +1 -0
  65. package/dist/card.mjs +24 -0
  66. package/dist/card.mjs.map +1 -0
  67. package/dist/chart.d.mts +40 -0
  68. package/dist/chart.d.ts +40 -0
  69. package/dist/chart.js +1234 -0
  70. package/dist/chart.js.map +1 -0
  71. package/dist/chart.mjs +10 -0
  72. package/dist/chart.mjs.map +1 -0
  73. package/dist/checkbox.d.mts +62 -0
  74. package/dist/checkbox.d.ts +62 -0
  75. package/dist/checkbox.js +299 -0
  76. package/dist/checkbox.js.map +1 -0
  77. package/dist/checkbox.mjs +14 -0
  78. package/dist/checkbox.mjs.map +1 -0
  79. package/dist/chip.d.mts +96 -0
  80. package/dist/chip.d.ts +96 -0
  81. package/dist/chip.js +112 -0
  82. package/dist/chip.js.map +1 -0
  83. package/dist/chip.mjs +10 -0
  84. package/dist/chip.mjs.map +1 -0
  85. package/dist/chunk-24XDGNJ6.mjs +1450 -0
  86. package/dist/chunk-24XDGNJ6.mjs.map +1 -0
  87. package/dist/chunk-27KYFU7R.mjs +30 -0
  88. package/dist/chunk-27KYFU7R.mjs.map +1 -0
  89. package/dist/chunk-2FFLT5VP.mjs +7 -0
  90. package/dist/chunk-2FFLT5VP.mjs.map +1 -0
  91. package/dist/chunk-2ZZJTBTE.mjs +148 -0
  92. package/dist/chunk-2ZZJTBTE.mjs.map +1 -0
  93. package/dist/chunk-3DQINB57.mjs +15 -0
  94. package/dist/chunk-3DQINB57.mjs.map +1 -0
  95. package/dist/chunk-3VUAM2GY.mjs +52 -0
  96. package/dist/chunk-3VUAM2GY.mjs.map +1 -0
  97. package/dist/chunk-4Q54P737.mjs +19 -0
  98. package/dist/chunk-4Q54P737.mjs.map +1 -0
  99. package/dist/chunk-4RPFRNXG.mjs +62 -0
  100. package/dist/chunk-4RPFRNXG.mjs.map +1 -0
  101. package/dist/chunk-56TI2ZBT.mjs +114 -0
  102. package/dist/chunk-56TI2ZBT.mjs.map +1 -0
  103. package/dist/chunk-6REEQBJI.mjs +62 -0
  104. package/dist/chunk-6REEQBJI.mjs.map +1 -0
  105. package/dist/chunk-AAH2O24U.mjs +325 -0
  106. package/dist/chunk-AAH2O24U.mjs.map +1 -0
  107. package/dist/chunk-B7DAB22K.mjs +16 -0
  108. package/dist/chunk-B7DAB22K.mjs.map +1 -0
  109. package/dist/chunk-BGB7JHIU.mjs +222 -0
  110. package/dist/chunk-BGB7JHIU.mjs.map +1 -0
  111. package/dist/chunk-CRYIEYZZ.mjs +756 -0
  112. package/dist/chunk-CRYIEYZZ.mjs.map +1 -0
  113. package/dist/chunk-CWFWRZWU.mjs +23 -0
  114. package/dist/chunk-CWFWRZWU.mjs.map +1 -0
  115. package/dist/chunk-DELCADNF.mjs +1926 -0
  116. package/dist/chunk-DELCADNF.mjs.map +1 -0
  117. package/dist/chunk-E3I2VDHZ.mjs +292 -0
  118. package/dist/chunk-E3I2VDHZ.mjs.map +1 -0
  119. package/dist/chunk-EEH7HACG.mjs +249 -0
  120. package/dist/chunk-EEH7HACG.mjs.map +1 -0
  121. package/dist/chunk-EKPULYPU.mjs +497 -0
  122. package/dist/chunk-EKPULYPU.mjs.map +1 -0
  123. package/dist/chunk-EW4DTFH3.mjs +69 -0
  124. package/dist/chunk-EW4DTFH3.mjs.map +1 -0
  125. package/dist/chunk-FJ6ZGZIA.mjs +43 -0
  126. package/dist/chunk-FJ6ZGZIA.mjs.map +1 -0
  127. package/dist/chunk-HE7MY3RT.mjs +23 -0
  128. package/dist/chunk-HE7MY3RT.mjs.map +1 -0
  129. package/dist/chunk-HR3A4H4E.mjs +1289 -0
  130. package/dist/chunk-HR3A4H4E.mjs.map +1 -0
  131. package/dist/chunk-I5JWS4Z7.mjs +91 -0
  132. package/dist/chunk-I5JWS4Z7.mjs.map +1 -0
  133. package/dist/chunk-IN3O4R7Q.mjs +932 -0
  134. package/dist/chunk-IN3O4R7Q.mjs.map +1 -0
  135. package/dist/chunk-JIU5GVM7.mjs +414 -0
  136. package/dist/chunk-JIU5GVM7.mjs.map +1 -0
  137. package/dist/chunk-JWANK42G.mjs +170 -0
  138. package/dist/chunk-JWANK42G.mjs.map +1 -0
  139. package/dist/chunk-MDAUF7IL.mjs +9 -0
  140. package/dist/chunk-MDAUF7IL.mjs.map +1 -0
  141. package/dist/chunk-MI64T62E.mjs +26 -0
  142. package/dist/chunk-MI64T62E.mjs.map +1 -0
  143. package/dist/chunk-NJYNJLT7.mjs +172 -0
  144. package/dist/chunk-NJYNJLT7.mjs.map +1 -0
  145. package/dist/chunk-NLBDBJ3R.mjs +97 -0
  146. package/dist/chunk-NLBDBJ3R.mjs.map +1 -0
  147. package/dist/chunk-OGNGPI3M.mjs +333 -0
  148. package/dist/chunk-OGNGPI3M.mjs.map +1 -0
  149. package/dist/chunk-OJV6V7YZ.mjs +552 -0
  150. package/dist/chunk-OJV6V7YZ.mjs.map +1 -0
  151. package/dist/chunk-ONQMRE2G.mjs +26 -0
  152. package/dist/chunk-ONQMRE2G.mjs.map +1 -0
  153. package/dist/chunk-OP6LKXPA.mjs +75 -0
  154. package/dist/chunk-OP6LKXPA.mjs.map +1 -0
  155. package/dist/chunk-QFF3HTHL.mjs +14 -0
  156. package/dist/chunk-QFF3HTHL.mjs.map +1 -0
  157. package/dist/chunk-QKGCW37O.mjs +1175 -0
  158. package/dist/chunk-QKGCW37O.mjs.map +1 -0
  159. package/dist/chunk-R5MKQN6D.mjs +227 -0
  160. package/dist/chunk-R5MKQN6D.mjs.map +1 -0
  161. package/dist/chunk-RXBQ7KXF.mjs +652 -0
  162. package/dist/chunk-RXBQ7KXF.mjs.map +1 -0
  163. package/dist/chunk-S6EZVRZC.mjs +161 -0
  164. package/dist/chunk-S6EZVRZC.mjs.map +1 -0
  165. package/dist/chunk-SGCUDWO3.mjs +396 -0
  166. package/dist/chunk-SGCUDWO3.mjs.map +1 -0
  167. package/dist/chunk-SRWPHN2N.mjs +188 -0
  168. package/dist/chunk-SRWPHN2N.mjs.map +1 -0
  169. package/dist/chunk-T34IULP5.mjs +242 -0
  170. package/dist/chunk-T34IULP5.mjs.map +1 -0
  171. package/dist/chunk-T4X375IG.mjs +100 -0
  172. package/dist/chunk-T4X375IG.mjs.map +1 -0
  173. package/dist/chunk-T6AMRENK.mjs +376 -0
  174. package/dist/chunk-T6AMRENK.mjs.map +1 -0
  175. package/dist/chunk-TDRA5EZI.mjs +325 -0
  176. package/dist/chunk-TDRA5EZI.mjs.map +1 -0
  177. package/dist/chunk-UDREPVEY.mjs +356 -0
  178. package/dist/chunk-UDREPVEY.mjs.map +1 -0
  179. package/dist/chunk-UGMRJMFZ.mjs +172 -0
  180. package/dist/chunk-UGMRJMFZ.mjs.map +1 -0
  181. package/dist/chunk-UMJ5SCIQ.mjs +438 -0
  182. package/dist/chunk-UMJ5SCIQ.mjs.map +1 -0
  183. package/dist/chunk-UTVSYS6S.mjs +270 -0
  184. package/dist/chunk-UTVSYS6S.mjs.map +1 -0
  185. package/dist/chunk-V26V2S3W.mjs +197 -0
  186. package/dist/chunk-V26V2S3W.mjs.map +1 -0
  187. package/dist/chunk-VYD3PDBB.mjs +38 -0
  188. package/dist/chunk-VYD3PDBB.mjs.map +1 -0
  189. package/dist/chunk-WYYP3Y34.mjs +55 -0
  190. package/dist/chunk-WYYP3Y34.mjs.map +1 -0
  191. package/dist/chunk-XIMFP6RB.mjs +161 -0
  192. package/dist/chunk-XIMFP6RB.mjs.map +1 -0
  193. package/dist/chunk-XJ2SXC2Q.mjs +558 -0
  194. package/dist/chunk-XJ2SXC2Q.mjs.map +1 -0
  195. package/dist/chunk-Y74ALKBL.mjs +565 -0
  196. package/dist/chunk-Y74ALKBL.mjs.map +1 -0
  197. package/dist/chunk-ZG3NQI77.mjs +353 -0
  198. package/dist/chunk-ZG3NQI77.mjs.map +1 -0
  199. package/dist/chunk-ZVFYOXDE.mjs +297 -0
  200. package/dist/chunk-ZVFYOXDE.mjs.map +1 -0
  201. package/dist/collapse.d.mts +10 -0
  202. package/dist/collapse.d.ts +10 -0
  203. package/dist/collapse.js +53 -0
  204. package/dist/collapse.js.map +1 -0
  205. package/dist/collapse.mjs +10 -0
  206. package/dist/collapse.mjs.map +1 -0
  207. package/dist/datePicker.d.mts +133 -0
  208. package/dist/datePicker.d.ts +133 -0
  209. package/dist/datePicker.js +482 -0
  210. package/dist/datePicker.js.map +1 -0
  211. package/dist/datePicker.mjs +29 -0
  212. package/dist/datePicker.mjs.map +1 -0
  213. package/dist/displayFile.d.mts +95 -0
  214. package/dist/displayFile.d.ts +95 -0
  215. package/dist/displayFile.js +357 -0
  216. package/dist/displayFile.js.map +1 -0
  217. package/dist/displayFile.mjs +19 -0
  218. package/dist/displayFile.mjs.map +1 -0
  219. package/dist/divider.d.mts +9 -0
  220. package/dist/divider.d.ts +9 -0
  221. package/dist/divider.js +52 -0
  222. package/dist/divider.js.map +1 -0
  223. package/dist/divider.mjs +10 -0
  224. package/dist/divider.mjs.map +1 -0
  225. package/dist/fileUploader.d.mts +86 -0
  226. package/dist/fileUploader.d.ts +86 -0
  227. package/dist/fileUploader.js +722 -0
  228. package/dist/fileUploader.js.map +1 -0
  229. package/dist/fileUploader.mjs +16 -0
  230. package/dist/fileUploader.mjs.map +1 -0
  231. package/dist/flowMap.d.mts +353 -0
  232. package/dist/flowMap.d.ts +353 -0
  233. package/dist/flowMap.js +94806 -0
  234. package/dist/flowMap.js.map +1 -0
  235. package/dist/flowMap.mjs +94585 -0
  236. package/dist/flowMap.mjs.map +1 -0
  237. package/dist/form.d.mts +84 -0
  238. package/dist/form.d.ts +84 -0
  239. package/dist/form.js +144 -0
  240. package/dist/form.js.map +1 -0
  241. package/dist/form.mjs +24 -0
  242. package/dist/form.mjs.map +1 -0
  243. package/dist/icons.d.mts +160 -0
  244. package/dist/icons.d.ts +160 -0
  245. package/dist/icons.js +540 -0
  246. package/dist/icons.js.map +1 -0
  247. package/dist/icons.mjs +306 -0
  248. package/dist/icons.mjs.map +1 -0
  249. package/dist/image.d.mts +49 -0
  250. package/dist/image.d.ts +49 -0
  251. package/dist/image.js +1348 -0
  252. package/dist/image.js.map +1 -0
  253. package/dist/image.mjs +19 -0
  254. package/dist/image.mjs.map +1 -0
  255. package/dist/index.d.ts +46 -0
  256. package/dist/index.js +20198 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/index.mjs +912 -0
  259. package/dist/index.mjs.map +1 -0
  260. package/dist/input.d.mts +195 -0
  261. package/dist/input.d.ts +195 -0
  262. package/dist/input.js +1101 -0
  263. package/dist/input.js.map +1 -0
  264. package/dist/input.mjs +32 -0
  265. package/dist/input.mjs.map +1 -0
  266. package/dist/jsonEditor.d.mts +13 -0
  267. package/dist/jsonEditor.d.ts +13 -0
  268. package/dist/jsonEditor.js +247 -0
  269. package/dist/jsonEditor.js.map +1 -0
  270. package/dist/jsonEditor.mjs +9 -0
  271. package/dist/jsonEditor.mjs.map +1 -0
  272. package/dist/list.d.mts +83 -0
  273. package/dist/list.d.ts +83 -0
  274. package/dist/list.js +564 -0
  275. package/dist/list.js.map +1 -0
  276. package/dist/list.mjs +39 -0
  277. package/dist/list.mjs.map +1 -0
  278. package/dist/loading.d.mts +48 -0
  279. package/dist/loading.d.ts +48 -0
  280. package/dist/loading.js +383 -0
  281. package/dist/loading.js.map +1 -0
  282. package/dist/loading.mjs +23 -0
  283. package/dist/loading.mjs.map +1 -0
  284. package/dist/markdown.d.mts +14 -0
  285. package/dist/markdown.d.ts +14 -0
  286. package/dist/markdown.js +25927 -0
  287. package/dist/markdown.js.map +1 -0
  288. package/dist/markdown.mjs +25623 -0
  289. package/dist/markdown.mjs.map +1 -0
  290. package/dist/menu.d.mts +368 -0
  291. package/dist/menu.d.ts +368 -0
  292. package/dist/menu.js +1571 -0
  293. package/dist/menu.js.map +1 -0
  294. package/dist/menu.mjs +43 -0
  295. package/dist/menu.mjs.map +1 -0
  296. package/dist/modal.d.mts +90 -0
  297. package/dist/modal.d.ts +90 -0
  298. package/dist/modal.js +883 -0
  299. package/dist/modal.js.map +1 -0
  300. package/dist/modal.mjs +25 -0
  301. package/dist/modal.mjs.map +1 -0
  302. package/dist/overlay.d.mts +2 -0
  303. package/dist/overlay.d.ts +2 -0
  304. package/dist/overlay.js +46 -0
  305. package/dist/overlay.js.map +1 -0
  306. package/dist/overlay.mjs +10 -0
  307. package/dist/overlay.mjs.map +1 -0
  308. package/dist/paper.d.mts +38 -0
  309. package/dist/paper.d.ts +38 -0
  310. package/dist/paper.js +90 -0
  311. package/dist/paper.js.map +1 -0
  312. package/dist/paper.mjs +12 -0
  313. package/dist/paper.mjs.map +1 -0
  314. package/dist/patterns.d.mts +133 -0
  315. package/dist/patterns.d.ts +133 -0
  316. package/dist/patterns.js +483 -0
  317. package/dist/patterns.js.map +1 -0
  318. package/dist/patterns.mjs +46 -0
  319. package/dist/patterns.mjs.map +1 -0
  320. package/dist/process.d.mts +125 -0
  321. package/dist/process.d.ts +125 -0
  322. package/dist/process.js +1471 -0
  323. package/dist/process.js.map +1 -0
  324. package/dist/process.mjs +30 -0
  325. package/dist/process.mjs.map +1 -0
  326. package/dist/progress.d.mts +44 -0
  327. package/dist/progress.d.ts +44 -0
  328. package/dist/progress.js +94 -0
  329. package/dist/progress.js.map +1 -0
  330. package/dist/progress.mjs +14 -0
  331. package/dist/progress.mjs.map +1 -0
  332. package/dist/resizablePanel.d.mts +297 -0
  333. package/dist/resizablePanel.d.ts +297 -0
  334. package/dist/resizablePanel.js +122 -0
  335. package/dist/resizablePanel.js.map +1 -0
  336. package/dist/resizablePanel.mjs +22 -0
  337. package/dist/resizablePanel.mjs.map +1 -0
  338. package/dist/scrollToLoad.d.mts +41 -0
  339. package/dist/scrollToLoad.d.ts +41 -0
  340. package/dist/scrollToLoad.js +256 -0
  341. package/dist/scrollToLoad.js.map +1 -0
  342. package/dist/scrollToLoad.mjs +16 -0
  343. package/dist/scrollToLoad.mjs.map +1 -0
  344. package/dist/select.d.mts +50 -0
  345. package/dist/select.d.ts +50 -0
  346. package/dist/select.js +426 -0
  347. package/dist/select.js.map +1 -0
  348. package/dist/select.mjs +24 -0
  349. package/dist/select.mjs.map +1 -0
  350. package/dist/skeleton.d.mts +13 -0
  351. package/dist/skeleton.d.ts +13 -0
  352. package/dist/skeleton.js +68 -0
  353. package/dist/skeleton.js.map +1 -0
  354. package/dist/skeleton.mjs +11 -0
  355. package/dist/skeleton.mjs.map +1 -0
  356. package/dist/slider.d.mts +65 -0
  357. package/dist/slider.d.ts +65 -0
  358. package/dist/slider.js +106 -0
  359. package/dist/slider.js.map +1 -0
  360. package/dist/slider.mjs +10 -0
  361. package/dist/slider.mjs.map +1 -0
  362. package/dist/stepper.d.mts +98 -0
  363. package/dist/stepper.d.ts +98 -0
  364. package/dist/stepper.js +313 -0
  365. package/dist/stepper.js.map +1 -0
  366. package/dist/stepper.mjs +38 -0
  367. package/dist/stepper.mjs.map +1 -0
  368. package/dist/switch.d.mts +151 -0
  369. package/dist/switch.d.ts +151 -0
  370. package/dist/switch.js +289 -0
  371. package/dist/switch.js.map +1 -0
  372. package/dist/switch.mjs +17 -0
  373. package/dist/switch.mjs.map +1 -0
  374. package/dist/tab.d.mts +182 -0
  375. package/dist/tab.d.ts +182 -0
  376. package/dist/tab.js +1418 -0
  377. package/dist/tab.js.map +1 -0
  378. package/dist/tab.mjs +34 -0
  379. package/dist/tab.mjs.map +1 -0
  380. package/dist/table.d.mts +720 -0
  381. package/dist/table.d.ts +720 -0
  382. package/dist/table.js +10882 -0
  383. package/dist/table.js.map +1 -0
  384. package/dist/table.mjs +63 -0
  385. package/dist/table.mjs.map +1 -0
  386. package/dist/theme.d.mts +30 -4
  387. package/dist/theme.d.ts +30 -4
  388. package/dist/theme.js +3210 -170
  389. package/dist/theme.js.map +1 -1
  390. package/dist/theme.mjs +52 -230
  391. package/dist/theme.mjs.map +1 -1
  392. package/dist/timeline.d.mts +30 -0
  393. package/dist/timeline.d.ts +30 -0
  394. package/dist/timeline.js +273 -0
  395. package/dist/timeline.js.map +1 -0
  396. package/dist/timeline.mjs +14 -0
  397. package/dist/timeline.mjs.map +1 -0
  398. package/dist/toggleButtonGroup.d.mts +125 -0
  399. package/dist/toggleButtonGroup.d.ts +125 -0
  400. package/dist/toggleButtonGroup.js +190 -0
  401. package/dist/toggleButtonGroup.js.map +1 -0
  402. package/dist/toggleButtonGroup.mjs +15 -0
  403. package/dist/toggleButtonGroup.mjs.map +1 -0
  404. package/dist/tooltip.d.mts +13 -0
  405. package/dist/tooltip.d.ts +13 -0
  406. package/dist/tooltip.js +56 -0
  407. package/dist/tooltip.js.map +1 -0
  408. package/dist/tooltip.mjs +10 -0
  409. package/dist/tooltip.mjs.map +1 -0
  410. package/dist/typography.d.mts +21 -23
  411. package/dist/typography.d.ts +21 -23
  412. package/dist/typography.js +37 -63
  413. package/dist/typography.js.map +1 -1
  414. package/dist/typography.mjs +2 -1
  415. package/dist/useForm.d.mts +588 -0
  416. package/dist/useForm.d.ts +588 -0
  417. package/dist/useForm.js +8743 -0
  418. package/dist/useForm.js.map +1 -0
  419. package/dist/useForm.mjs +45 -0
  420. package/dist/useForm.mjs.map +1 -0
  421. package/dist/useSearch.d.mts +126 -0
  422. package/dist/useSearch.d.ts +126 -0
  423. package/dist/useSearch.js +1125 -0
  424. package/dist/useSearch.js.map +1 -0
  425. package/dist/useSearch.mjs +42 -0
  426. package/dist/useSearch.mjs.map +1 -0
  427. package/dist/variablesRenderer.d.mts +45 -0
  428. package/dist/variablesRenderer.d.ts +45 -0
  429. package/dist/variablesRenderer.js +511 -0
  430. package/dist/variablesRenderer.js.map +1 -0
  431. package/dist/variablesRenderer.mjs +21 -0
  432. package/dist/variablesRenderer.mjs.map +1 -0
  433. package/package.json +109 -15
  434. package/dist/chunk-PKADXEAD.mjs +0 -116
  435. package/dist/chunk-PKADXEAD.mjs.map +0 -1
  436. package/dist/chunk-YGBJCPUS.mjs +0 -88
  437. package/dist/chunk-YGBJCPUS.mjs.map +0 -1
  438. package/dist/theme.css +0 -44
  439. package/dist/theme.css.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/compound/UseForm/src/useHooks.ts","../src/components/compound/UseForm/src/_utils/resolver.ts","../src/components/compound/UseForm/src/FormRenderer/Layout.tsx","../src/components/compound/UseForm/src/FormRenderer/StepperSection.tsx","../src/components/compound/UseForm/src/store/FormContext.tsx","../src/components/compound/UseForm/src/store/methods.ts","../src/components/compound/UseForm/src/FormRenderer/RowRenderer.tsx","../src/components/compound/UseForm/src/Fields/TextField.tsx","../src/components/compound/UseForm/src/Fields/SelectField.tsx","../src/components/compound/UseForm/src/Fields/SliderField.tsx","../src/components/compound/UseForm/src/Fields/CheckField.tsx","../src/components/compound/UseForm/src/Fields/ToggleButtonField.tsx","../src/components/compound/UseForm/src/Fields/SwitchField.tsx","../src/components/compound/UseForm/src/Fields/CustomField.tsx","../src/components/compound/UseForm/src/Fields/TextArrayField.tsx","../src/components/compound/UseForm/src/Fields/NumberField.tsx","../src/components/compound/UseForm/src/FormRenderer/Navigation.tsx","../src/components/compound/UseForm/src/hooks/useRegisterFields.ts","../src/components/compound/UseForm/src/theme.ts","../src/components/compound/UseForm/src/FormModalRenderer.tsx","../src/components/compound/UseForm/src/FormTree.tsx","../src/components/compound/UseForm/src/UseForm.tsx"],"sourcesContent":["import { useForm, type UseFormReturn, type DefaultValues } from 'react-hook-form';\nimport { useEffect, useMemo, useRef } from 'react';\nimport type { FormTypeMap, InferFormDataType, StrictFormConfig } from './_utils';\nimport { collectFields, validateFormSchema, getDefaultValues } from './_utils/helpers';\nimport { createFormResolver } from './_utils/resolver';\n\nexport interface UseConfiguredFormProps<T extends FormTypeMap> {\n config: StrictFormConfig<T>;\n}\n\nexport interface ConfiguredFormReturn<T extends FormTypeMap> {\n methods: UseFormReturn<InferFormDataType<T>>;\n config: StrictFormConfig<T>;\n configError?: Error;\n}\n\n/** @deprecated Use ConfiguredFormReturn */\nexport type UseForm2Return<T extends FormTypeMap> = ConfiguredFormReturn<T>;\n\n/** @deprecated Use UseConfiguredFormProps */\nexport type UseForm2Props<T extends FormTypeMap> = UseConfiguredFormProps<T>;\n\nconst schemaSignature = <T extends FormTypeMap>(config: StrictFormConfig<T>): string => {\n const fields = collectFields(config);\n return JSON.stringify({\n mode: config.mode ?? 'onSubmit',\n defaults: config.defaultValues ?? null,\n fields: fields.map((field) => [field.name, field.type, field.defaultValue]),\n });\n};\n\nexport const useConfiguredForm = <T extends FormTypeMap>({\n config,\n}: UseConfiguredFormProps<T>): ConfiguredFormReturn<T> => {\n const { resolvedConfig, configError } = useMemo(() => {\n try {\n return {\n resolvedConfig: validateFormSchema(config),\n configError: undefined as Error | undefined,\n };\n } catch (error) {\n const configError = error instanceof Error ? error : new Error(String(error));\n console.error('[useConfiguredForm] invalid form schema', configError);\n return {\n resolvedConfig: { schema: [] } as StrictFormConfig<T>,\n configError,\n };\n }\n }, [config]);\n\n const defaultValues = useMemo(\n () => getDefaultValues(resolvedConfig, false),\n [resolvedConfig],\n );\n\n const resolver = useMemo(\n () => createFormResolver(resolvedConfig),\n [resolvedConfig],\n );\n\n const methods = useForm<InferFormDataType<T>>({\n defaultValues: defaultValues as DefaultValues<InferFormDataType<T>>,\n resolver,\n mode: resolvedConfig.mode ?? 'onSubmit',\n shouldUnregister: false,\n });\n\n const signature = useMemo(\n () => schemaSignature(resolvedConfig),\n [resolvedConfig],\n );\n const defaultValuesRef = useRef(defaultValues);\n defaultValuesRef.current = defaultValues;\n const isFirstMount = useRef(true);\n\n useEffect(() => {\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return;\n }\n methods.reset(defaultValuesRef.current as DefaultValues<InferFormDataType<T>>);\n }, [signature, methods]);\n\n return {\n methods,\n config: resolvedConfig,\n configError,\n };\n};\n\n/** @deprecated Use useConfiguredForm */\nexport const useForm2 = useConfiguredForm;\n","import type { FieldError, FieldErrors, Resolver } from 'react-hook-form';\nimport { FIELD_TYPEs } from './constants';\nimport { collectFields, isEmptyFormValue } from './helpers';\nimport type { FieldConfig, FormTypeMap, InferFormDataType, StrictFormConfig } from './types';\n\nconst toError = (message: string, type: string): FieldError => ({\n type,\n message,\n});\n\nconst runFieldValidate = async <T extends FormTypeMap>(\n field: FieldConfig<T>,\n value: unknown,\n values: InferFormDataType<T>,\n): Promise<string | true> => {\n if (field.type === FIELD_TYPEs.tel && typeof value === 'string' && value.trim() !== '') {\n const { isValidPhoneNumber } = await import('react-phone-number-input');\n if (!isValidPhoneNumber(value)) {\n return 'Invalid phone number';\n }\n }\n\n if (field.type === FIELD_TYPEs.fileUpload) {\n const maxFiles = field.slotProps?.maxFiles ?? 1;\n if (Array.isArray(value) && value.length > maxFiles) {\n return `Cannot exceed ${maxFiles} file${maxFiles > 1 ? 's' : ''}`;\n }\n }\n\n if (!field.validate) return true;\n const result = await field.validate(value as never, values);\n if (result === true) return true;\n if (typeof result === 'string' && result.length > 0) return result;\n return field.errorMsg || 'Invalid';\n};\n\nexport function createFormResolver<T extends FormTypeMap>(\n config: StrictFormConfig<T>,\n): Resolver<InferFormDataType<T>> {\n const fields = collectFields(config);\n const fieldByName = new Map(fields.map((field) => [String(field.name), field]));\n\n return async (values, _context, options) => {\n const names = options?.names;\n const nameList = names == null ? null : Array.from(names as Iterable<string>);\n const fieldsToCheck =\n nameList && nameList.length > 0\n ? nameList\n .map((name) => fieldByName.get(String(name)))\n .filter((field): field is FieldConfig<T> => field != null)\n : fields;\n\n const errors: FieldErrors<InferFormDataType<T>> = {};\n const valuesRecord = values as Record<string, unknown>;\n\n for (const field of fieldsToCheck) {\n const name = String(field.name);\n const value = valuesRecord[name];\n\n if (field.required && isEmptyFormValue(value)) {\n (errors as Record<string, FieldError>)[name] = toError(field.errorMsg || 'Required', 'required');\n continue;\n }\n\n if (isEmptyFormValue(value) && !field.validate) {\n continue;\n }\n\n const result = await runFieldValidate(field, value, values);\n if (result !== true) {\n (errors as Record<string, FieldError>)[name] = toError(result, 'validate');\n }\n }\n\n const hasErrors = Object.keys(errors).length > 0;\n return {\n values: hasErrors ? ({} as InferFormDataType<T>) : values,\n errors,\n };\n };\n}\n","import React from 'react';\nimport { FormProvider, FieldValues } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport StepperSection from './StepperSection';\nimport RowRenderer from './RowRenderer';\nimport Navigation from './Navigation';\nimport { useFormActionsContext, useFormMethodsContext, useFormStateContext } from '../store/FormContext';\n\n// types for multi-step\n\n\n// Using strict types\nimport { RowConfig, FormTypeMap, StrictFormConfig } from '../_utils';\nimport useRegisterFields from '../hooks/useRegisterFields';\nimport { useFormRootSx } from '../theme';\nimport { mergeSx } from '@/_utils/_func';\n\nexport interface FormRendererProps<T extends FormTypeMap> {\n /** methods may be passed directly or obtained from context */\n methods?: unknown;\n config: StrictFormConfig<T>;\n onSubmit: (data: FieldValues) => void;\n /** whether to render undo button */\n showUndo?: boolean;\n /** whether to render clear button */\n showClear?: boolean;\n children?: React.ReactNode; \n extraButtons?: React.ReactNode;\n}\n\n// Field and Row renderers are defined inside the generic component so they\n// can reference the concrete form value type `InferFormDataType<T>`.\n\nexport const FormRenderer = <T extends FormTypeMap>(\n props: FormRendererProps<T>\n): React.ReactElement => {\n const {\n methods: propMethods,\n config,\n onSubmit,\n showUndo = true,\n showClear = true,\n children,\n extraButtons,\n } = props;\n // consume shared store from higher-level provider\n const { steps, currentStep } = useFormStateContext<T>();\n const { setCurrentStep, handleStepChange, submit, undo, clear } = useFormActionsContext();\n const { useFormMethods: ctxMethods } = useFormMethodsContext<T>();\n const methods = (propMethods as typeof ctxMethods | undefined) ?? ctxMethods;\n // ensure all fields (including hidden ones) are registered on mount\n useRegisterFields(methods, config);\n\n const isMulti = steps.length > 1;\n const isLastStep = currentStep === steps.length - 1;\n\n const sortedSchema = React.useMemo(() => {\n const currentSchema = steps[currentStep]?.schema || [];\n const compare = (a: RowConfig<T>, b: RowConfig<T>) => {\n const an = Number(a.row);\n const bn = Number(b.row);\n const aIsNum = !Number.isNaN(an);\n const bIsNum = !Number.isNaN(bn);\n if (aIsNum && bIsNum) return an - bn;\n if (aIsNum) return -1;\n if (bIsNum) return 1;\n return String(a.row).localeCompare(String(b.row));\n };\n return [...currentSchema].slice().sort(compare);\n }, [steps, currentStep]);\n\n // navigation handlers\n const handleNext = async () => {\n if (isLastStep) {\n await submit(onSubmit);\n return;\n }\n await handleStepChange(currentStep + 1);\n };\n const handleBack = () => {\n if (currentStep > 0) setCurrentStep((s) => s - 1);\n };\n\n\n // wrap `submit` with RHF's handleSubmit so built-in validation is triggered\n const handleFormSubmit = methods.handleSubmit(async () => {\n // our custom submit already triggers all steps' fields\n await submit(onSubmit);\n });\n\n return (\n <FormProvider {...methods}>\n <Box sx={mergeSx(useFormRootSx, {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n overflow: \"hidden\",\n px:1.5,py:1,\n })}>\n {isMulti && <StepperSection />}\n <Box sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n flex: 1,\n overflow: \"auto\",\n }}>\n <Box sx={{ flex: 1 }}>\n <form onSubmit={handleFormSubmit}>\n {sortedSchema.map((row, idx) => (\n <RowRenderer key={`${row.row}-${idx}`} row={row as RowConfig} />\n ))}\n {children}\n </form>\n </Box>\n </Box>\n <Navigation\n isMulti={isMulti}\n currentStep={currentStep}\n isLastStep={isLastStep}\n handleBack={handleBack}\n handleNext={handleNext}\n onSubmit={handleFormSubmit}\n undo={showUndo ? undo : undefined}\n clear={showClear ? clear : undefined}\n extraButtons={extraButtons}\n />\n </Box>\n </FormProvider>\n );\n};\n","import * as React from 'react';\nimport { StandardStepper } from '@/ele/Stepper';\nimport { useFormState } from 'react-hook-form';\nimport { useFormActionsContext, useFormMethodsContext, useFormStateContext } from '../store/FormContext';\nimport type { FormTypeMap, RowConfig } from '../_utils';\n\ninterface StepperSectionStep {\n title: React.ReactNode;\n icon?: React.ReactNode;\n error: boolean;\n}\n\nconst getNames = <T extends FormTypeMap>(schema: RowConfig<T>[]) => {\n const names: string[] = [];\n schema.forEach((r) => r.fields.forEach((f) => names.push(String(f.name))));\n return names;\n};\n\nconst StepperSection = <T extends FormTypeMap>() => {\n const { steps, currentStep } = useFormStateContext<T>();\n const { handleStepChange } = useFormActionsContext();\n const { useFormMethods: methods } = useFormMethodsContext<T>();\n const { errors } = useFormState({ control: methods.control });\n\n const stepData = React.useMemo<StepperSectionStep[]>(() => {\n const errorMap = errors as Record<string, unknown>;\n return steps.map((step, idx) => {\n const hasError = getNames(step.schema).some((name) => Boolean(errorMap[name]));\n return {\n title: step.title ?? `Step ${idx + 1}`,\n icon: step.icon ?? idx + 1,\n error: hasError,\n };\n });\n }, [steps, errors]);\n\n return (\n <StandardStepper\n activeStep={currentStep}\n onChange={handleStepChange}\n steps={stepData}\n />\n );\n};\n\nexport default StepperSection;\n","import React from 'react';\nimport type { FieldValues, UseFormReturn } from 'react-hook-form';\nimport type { StepConfig } from '../_utils/types';\nimport type { FormTypeMap, InferFormDataType, StrictFormConfig } from '../_utils';\nimport { createFormStoreMethods } from './methods';\n\nexport interface FormState {\n currentStep: number;\n steps: StepConfig<FormTypeMap>[];\n}\n\nexport interface FormActions {\n setCurrentStep: React.Dispatch<React.SetStateAction<number>>;\n handleStepChange: (destinationStep: number) => Promise<boolean>;\n submit: (onSubmit: (data: FieldValues) => void) => Promise<void>;\n // form-level helpers\n undo: () => void;\n clear: () => void;\n}\n\nexport interface FormMethods {\n useFormMethods: UseFormReturn<InferFormDataType<FormTypeMap>>;\n}\n\nexport type FormStateTyped<T extends FormTypeMap> = Omit<FormState, 'steps'> & {\n steps: StepConfig<T>[];\n};\n\nexport type FormMethodsTyped<T extends FormTypeMap> = Omit<FormMethods, 'useFormMethods'> & {\n useFormMethods: UseFormReturn<InferFormDataType<T>>;\n};\n\nconst FormStateContext = React.createContext<FormState | null>(null);\nconst FormActionsContext = React.createContext<FormActions | null>(null);\nconst FormMethodsContext = React.createContext<FormMethods | null>(null);\n\nexport const useFormStateContext = <T extends FormTypeMap>() => {\n const ctx = React.useContext(FormStateContext) as FormStateTyped<T> | null;\n if (!ctx) {\n throw new Error('useFormStateContext must be used within a FormContextProvider');\n }\n return ctx;\n};\n\nexport const useFormActionsContext = () => {\n const ctx = React.useContext(FormActionsContext);\n if (!ctx) {\n throw new Error('useFormActionsContext must be used within a FormContextProvider');\n }\n return ctx;\n};\n\nexport const useFormMethodsContext = <T extends FormTypeMap>() => {\n const ctx = React.useContext(FormMethodsContext) as FormMethodsTyped<T> | null;\n if (!ctx) {\n throw new Error('useFormMethodsContext must be used within a FormContextProvider');\n }\n return ctx;\n};\n\nexport const useFormContext = <T extends FormTypeMap>() => {\n const state = useFormStateContext<T>();\n const actions = useFormActionsContext();\n const methods = useFormMethodsContext<T>();\n return { ...state, ...actions, ...methods };\n};\n\ninterface ProviderProps<T extends FormTypeMap> {\n config: StrictFormConfig<T>;\n useFormMethods: UseFormReturn<InferFormDataType<T>>;\n children: React.ReactNode;\n}\n\nexport const FormContextProvider = <T extends FormTypeMap>({\n config,\n useFormMethods,\n children,\n}: ProviderProps<T>) => {\n const steps = React.useMemo(() => {\n if ('steps' in config && config.steps) {\n return config.steps;\n }\n if ('schema' in config && config.schema) {\n return [{ schema: config.schema }];\n }\n return [] as StepConfig<T>[];\n }, [config]);\n\n const [currentStep, setCurrentStep] = React.useState(0);\n const currentStepRef = React.useRef(currentStep);\n currentStepRef.current = currentStep;\n\n React.useEffect(() => {\n setCurrentStep(0);\n }, [steps]);\n\n const storeMethods = React.useMemo(\n () =>\n createFormStoreMethods<T>({\n methods: useFormMethods,\n config,\n steps,\n getCurrentStep: () => currentStepRef.current,\n setCurrentStep,\n }),\n [useFormMethods, config, steps],\n );\n\n const stateValue = React.useMemo<FormStateTyped<T>>(\n () => ({\n currentStep,\n steps,\n }),\n [currentStep, steps],\n );\n\n const actionsValue = React.useMemo<FormActions>(\n () => ({\n setCurrentStep,\n ...storeMethods,\n }),\n [setCurrentStep, storeMethods],\n );\n\n const methodsValue = React.useMemo<FormMethodsTyped<T>>(\n () => ({\n useFormMethods,\n }),\n [useFormMethods],\n );\n\n return (\n <FormStateContext.Provider value={stateValue as unknown as FormState}>\n <FormActionsContext.Provider value={actionsValue}>\n <FormMethodsContext.Provider value={methodsValue as unknown as FormMethods}>\n {children}\n </FormMethodsContext.Provider>\n </FormActionsContext.Provider>\n </FormStateContext.Provider>\n );\n};\n","import type { Dispatch, SetStateAction } from 'react';\nimport type { FieldValues, Path, UseFormReturn } from 'react-hook-form';\nimport type { FormTypeMap, InferFormDataType, RowConfig, StrictFormConfig } from '../_utils';\nimport type { StepConfig } from '../_utils/types';\nimport { getDefaultValues } from '../_utils/helpers';\n\ninterface CreateFormStoreMethodsArgs<T extends FormTypeMap> {\n methods: UseFormReturn<InferFormDataType<T>>;\n config: StrictFormConfig<T>;\n steps: StepConfig<T>[];\n getCurrentStep: () => number;\n setCurrentStep: Dispatch<SetStateAction<number>>;\n}\n\nconst getNames = <T extends FormTypeMap>(schema: RowConfig<T>[]) => {\n const names: string[] = [];\n schema.forEach((row) => row.fields.forEach((field) => names.push(String(field.name))));\n return names;\n};\n\nconst getFieldNamesInRange = <T extends FormTypeMap>(\n steps: StepConfig<T>[],\n fromStep: number,\n toStep: number,\n): Path<InferFormDataType<T>>[] => {\n const start = Math.min(fromStep, toStep);\n const end = Math.max(fromStep, toStep);\n\n const names = steps\n .slice(start, end + 1)\n .flatMap((step) => getNames(step.schema));\n\n return Array.from(new Set(names)) as Path<InferFormDataType<T>>[];\n};\n\nexport const createFormStoreMethods = <T extends FormTypeMap>({\n methods,\n config,\n steps,\n getCurrentStep,\n setCurrentStep,\n}: CreateFormStoreMethodsArgs<T>) => {\n const validateNames = async (names: string[]): Promise<boolean> => {\n if (names.length === 0) {\n return methods.trigger();\n }\n return methods.trigger(names as Path<InferFormDataType<T>>[]);\n };\n\n const handleStepChange = async (destinationStep: number) => {\n const currentStep = getCurrentStep();\n if (destinationStep === currentStep) return true;\n\n // moving backward should always be permitted; we don't run validation in that\n // case since the user is retreating to earlier steps and we don't want error\n // states to block navigation.\n if (destinationStep < currentStep) {\n setCurrentStep(destinationStep);\n return true;\n }\n\n // For forward navigation we **only** validate the fields that belong to the\n // current step and any earlier ones. We intentionally avoid checking fields\n // that are \"ahead\" of the user (including the destination step) – users\n // may jump several steps forward and we don't want missing future values to\n // block them. A full validation of every step happens on final submit.\n const namesToTrigger = getFieldNamesInRange(steps, 0, currentStep);\n const isValid = await validateNames(namesToTrigger);\n if (!isValid) return false;\n\n setCurrentStep(destinationStep);\n return true;\n };\n\n const undo = () => {\n methods.reset();\n };\n\n const clear = () => {\n // produce a completely empty value map for every field in the schema.\n const emptyValues = getDefaultValues(config, true) as Record<string, unknown>;\n\n // perform a reset but tell RHF **not** to replace its stored defaultValues.\n // otherwise the act of clearing would make the emptied values the new\n // defaults, which is confusing and breaks undo/restore semantics.\n methods.reset(emptyValues as InferFormDataType<T>, { keepDefaultValues: true });\n\n // trigger validation so the UI updates immediately\n methods.trigger();\n };\n\n const submit = async (onSubmit: (data: FieldValues) => void) => {\n const namesToTrigger = getFieldNamesInRange(steps, 0, Math.max(steps.length - 1, 0));\n const isValid = await validateNames(namesToTrigger);\n if (!isValid) return;\n await methods.handleSubmit(onSubmit)();\n };\n\n return {\n handleStepChange,\n submit,\n undo,\n clear,\n };\n};\n","import React, { Suspense } from 'react';\nimport { Box } from '@/ele/Box';\nimport type { FormTypeMap } from '../_utils';\nimport type { RowConfig, FieldConfig } from '../_utils/types';\nimport { FIELD_TYPEs } from '../_utils/constants';\n\n// Eager fields used by typical text/number/select forms.\nimport { TextField } from '../Fields/TextField';\nimport { SelectField } from '../Fields/SelectField';\nimport { SliderField } from '../Fields/SliderField';\nimport { CheckField } from '../Fields/CheckField';\nimport { ToggleButtonField } from '../Fields/ToggleButtonField';\nimport { SwitchField } from '../Fields/SwitchField';\nimport { CustomField } from '../Fields/CustomField';\nimport { TextArrayField } from '../Fields/TextArrayField';\nimport { NumberField } from '../Fields/NumberField';\n\ntype AnyFieldProps = { field: FieldConfig };\n\nconst DateField = React.lazy(() =>\n import('../Fields/DateField').then((m) => ({\n default: m.DateField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst DateTimeField = React.lazy(() =>\n import('../Fields/DateTimeField').then((m) => ({\n default: m.DateTimeField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst TelField = React.lazy(() =>\n import('../Fields/TelField').then((m) => ({\n default: m.TelField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst FileUploadField = React.lazy(() =>\n import('../Fields/FileUploadField').then((m) => ({\n default: m.FileUploadField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst AvatarField = React.lazy(() =>\n import('../Fields/AvatarField').then((m) => ({\n default: m.AvatarField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst JSONEditorField = React.lazy(() =>\n import('../Fields/JSONEditorField').then((m) => ({\n default: m.JSONEditorField as React.ComponentType<AnyFieldProps>,\n })),\n);\nconst AutocompleteField = React.lazy(() =>\n import('../Fields/AutocompleteField').then((m) => ({\n default: m.AutocompleteField as React.ComponentType<AnyFieldProps>,\n })),\n);\n\nconst lazyFieldFallback = <Box sx={{ minHeight: 40 }} />;\n\nconst LazyField = ({ children }: { children: React.ReactNode }) => (\n <Suspense fallback={lazyFieldFallback}>{children}</Suspense>\n);\n\ninterface FieldRendererProps<T extends FormTypeMap> {\n field: FieldConfig<T>;\n}\n\nconst FieldRenderer = <T extends FormTypeMap>({ field }: FieldRendererProps<T>) => {\n switch (field.type) {\n case FIELD_TYPEs.text:\n return <TextField field={field} />;\n case FIELD_TYPEs.select:\n return <SelectField field={field} />;\n case FIELD_TYPEs.slider:\n return <SliderField field={field} />;\n case FIELD_TYPEs.check:\n return <CheckField field={field} />;\n case FIELD_TYPEs.date:\n return (\n <LazyField>\n <DateField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.dateTime:\n return (\n <LazyField>\n <DateTimeField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.toggleButton:\n return <ToggleButtonField field={field} />;\n case FIELD_TYPEs.autocomplete:\n return (\n <LazyField>\n <AutocompleteField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.switch:\n return <SwitchField field={field} />;\n case FIELD_TYPEs.number:\n return <NumberField field={field} />;\n case FIELD_TYPEs.json:\n return (\n <LazyField>\n <JSONEditorField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.tel:\n return (\n <LazyField>\n <TelField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.fileUpload:\n return (\n <LazyField>\n <FileUploadField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.avatar:\n return (\n <LazyField>\n <AvatarField field={field} />\n </LazyField>\n );\n case FIELD_TYPEs.textArray:\n return <TextArrayField field={field} />;\n case FIELD_TYPEs.custom:\n return <CustomField field={field} />;\n default:\n return <div>Unknown Field Type</div>;\n }\n};\n\ninterface RowRendererProps<T extends FormTypeMap> {\n row: RowConfig<T>;\n}\n\ninterface RowFieldProps<T extends FormTypeMap> {\n field: FieldConfig<T>;\n}\n\nconst RowFieldFrame = <T extends FormTypeMap>({\n field,\n hidden,\n}: RowFieldProps<T> & { hidden: boolean }) => {\n return (\n <Box\n sx={{\n flex: field.size?.width || 1,\n minWidth: field.size?.width || 'auto',\n ...(hidden && { display: 'none' }),\n \"& > *\": {\n minWidth: 200,\n },\n }}\n >\n <FieldRenderer field={field} />\n </Box>\n );\n};\n\nconst RowFieldWithHide = <T extends FormTypeMap>({\n field,\n useHide,\n}: RowFieldProps<T> & { useHide: () => boolean }) => {\n const hidden = useHide();\n return <RowFieldFrame field={field} hidden={hidden} />;\n};\n\nconst RowField = <T extends FormTypeMap>({ field }: RowFieldProps<T>) => {\n if (field.useHide) {\n return <RowFieldWithHide field={field} useHide={field.useHide} />;\n }\n return <RowFieldFrame field={field} hidden={false} />;\n};\n\nconst RowRenderer = <T extends FormTypeMap>({ row }: RowRendererProps<T>) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: 2,\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n marginBottom: 1,\n pt: 1,\n ...row.sx,\n }}\n >\n {row.fields.map((field) => (\n <RowField key={String(field.name)} field={field} />\n ))}\n </Box>\n );\n};\n\nexport default RowRenderer;\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { TextField as MuiTextField } from '@/ele/Input/src/TextField';\nimport { Box } from '@/ele/Box';\nimport { FieldConfig, FormTypeMap, InferFormDataType, getHelperText, mergeFieldSx } from '../_utils';\nimport { mergeSx } from '@/_utils/_func';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport { getFieldExplanation } from '../_utils/helpers';\n\ninterface TextFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.text }>;\n}\n\nexport const TextField = <T extends FormTypeMap = FormTypeMap>({ field }: TextFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const { \n name, \n label, \n required, \n disabled, \n sx, \n size, \n slotProps, \n errorMsg,\n defaultValue\n } = field;\n\n const textSlotProps = slotProps as import('../_utils/slotProps').TextSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue} \n render={({ field: { onChange, value, ...restField }, fieldState: { error } }) => (\n <Box sx={mergeSx({\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n }, mergeFieldSx(size, sx))}>\n <MuiTextField\n {...restField}\n value={value ?? ''}\n onChange={(e) => {\n onChange(e);\n textSlotProps?.onChange?.(e);\n const newValue = (e?.target)?.value ?? '';\n field.onChange?.(newValue, getValues() as InferFormDataType<T>);\n }}\n label={label}\n required={required}\n disabled={disabled}\n error={!!error}\n helperText={getHelperText(error, errorMsg, field.helperText)}\n fullWidth\n size=\"small\"\n sx={{ flex: 1 }}\n multiline={textSlotProps?.multiline}\n rows={textSlotProps?.rows}\n placeholder={textSlotProps?.placeholder}\n type={'text'}\n\n slotProps={{\n htmlInput: {\n maxLength: textSlotProps?.maxLength,\n }\n }}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Select } from '@/ele/Select';\nimport { Box } from '@/ele/Box';\nimport { getHelperText } from '../_utils/helperText';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport { mergeSx } from '@/_utils/_func';\nimport { FieldConfig, FormTypeMap, InferFormDataType, GetDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport type { SelectSlotProps, SelectOption, UseOptionsHook } from '../_utils/slotProps';\n\ninterface SelectFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.select }>;\n}\n\nexport const SelectField = <T extends FormTypeMap = FormTypeMap>({ field }: SelectFieldProps<T>) => {\n const selectSlotProps = field.slotProps as SelectSlotProps | undefined;\n if (selectSlotProps?.useOptions) {\n return <SelectFieldWithOptions field={field} useOptions={selectSlotProps.useOptions} />;\n }\n return <SelectFieldView field={field} options={selectSlotProps?.options ?? []} />;\n};\n\nconst SelectFieldWithOptions = <T extends FormTypeMap>({\n field,\n useOptions,\n}: SelectFieldProps<T> & { useOptions: UseOptionsHook }) => {\n const { options = [] } = useOptions();\n return <SelectFieldView field={field} options={options} />;\n};\n\nconst SelectFieldView = <T extends FormTypeMap>({\n field,\n options,\n}: SelectFieldProps<T> & { options: SelectOption[] }) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value, ...restField }, fieldState: { error } }) => (\n <Box sx={mergeSx({\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n }, mergeFieldSx(size, sx))}>\n <Select\n {...restField}\n value={value ?? (slotProps?.multiple ? [] : '')}\n onChange={(e, child) => {\n const newValue = (e?.target)?.value as GetDataType<typeof FIELD_TYPEs.select> | null;\n onChange(newValue);\n slotProps?.onChange?.(e, child);\n field.onChange?.(newValue, getValues() as InferFormDataType<T>);\n }}\n label={label}\n required={required}\n disabled={disabled}\n error={!!error}\n helperText={getHelperText(error, errorMsg, field.helperText)}\n options={options}\n multiple={slotProps?.multiple}\n sx={{ flex: 1 }}\n slotProps={{\n formControl: {\n size: 'small',\n disabled: disabled,\n sx: {\n width: '100%',\n },\n },\n }}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Slider as MuiSlider } from '@/ele/Slider';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { Box } from '@/ele/Box';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils'; \nimport { SliderSlotProps } from '../_utils/slotProps';\nimport Explanation from './Explanation';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface SliderFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: 'slider-field' }>;\n}\n\nexport const SliderField = <T extends FormTypeMap = FormTypeMap>({ field }: SliderFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const { \n name, \n label, \n required, \n disabled, \n sx, \n size, \n slotProps, \n errorMsg,\n defaultValue\n } = field;\n\n const sliderSlotProps = slotProps as SliderSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value, ...restField }, fieldState: { error } }) => (\n <FormControl \n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n > \n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start', }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n <Box sx={{ px: 4,}}>\n <MuiSlider\n {...restField}\n value={typeof value === 'number' || Array.isArray(value) ? value : (sliderSlotProps?.min ?? 0)}\n onChange={(event, newValue, activeThumb) => {\n const normalized = Array.isArray(newValue) ? (newValue)[0] as number : (newValue as number);\n onChange(normalized);\n sliderSlotProps?.onChange?.(event, newValue, activeThumb);\n field.onChange?.(normalized, getValues() as InferFormDataType<T>);\n }}\n min={sliderSlotProps?.min}\n max={sliderSlotProps?.max}\n step={sliderSlotProps?.step}\n marks={sliderSlotProps?.marks}\n valueLabelDisplay={sliderSlotProps?.valueLabelDisplay || 'auto'}\n orientation={sliderSlotProps?.orientation}\n disableSwap={sliderSlotProps?.disableSwap}\n track={sliderSlotProps?.track}\n />\n </Box>\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </FormControl>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { CheckboxGroup } from '@/ele/Checkbox';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { getFieldExplanation } from '../_utils/helpers';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { CheckSlotProps } from '../_utils/slotProps';\n\ninterface CheckFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.check }>;\n}\n\ntype CheckUseOptions = NonNullable<CheckSlotProps['useOptions']>;\n\nexport const CheckField = <T extends FormTypeMap = FormTypeMap>({ field }: CheckFieldProps<T>) => {\n const checkSlot = field.slotProps as CheckSlotProps | undefined;\n if (checkSlot?.useOptions) {\n return <CheckFieldWithOptions field={field} useOptions={checkSlot.useOptions} />;\n }\n return <CheckFieldView field={field} options={checkSlot?.options ?? []} />;\n};\n\nconst CheckFieldWithOptions = <T extends FormTypeMap>({\n field,\n useOptions,\n}: CheckFieldProps<T> & { useOptions: CheckUseOptions }) => {\n const { options = [] } = useOptions();\n return <CheckFieldView field={field} options={options} />;\n};\n\nconst CheckFieldView = <T extends FormTypeMap>({\n field,\n options,\n}: CheckFieldProps<T> & { options: NonNullable<CheckSlotProps['options']> }) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n required,\n slotProps,\n label,\n defaultValue,\n } = field;\n\n const checkSlot = slotProps as CheckSlotProps | undefined;\n const helperText = checkSlot?.helperText;\n const explanation = getFieldExplanation(field);\n\n return (\n <Box>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: controllerField, fieldState: { error } }) => {\n const { onChange, value } = controllerField;\n const checkedIds = Array.isArray(value)\n ? (value as string[]).filter((id) => options.some((o) => o.id === id))\n : [];\n\n return (\n <CheckboxGroup\n {...checkSlot}\n slotProps={{\n ...(checkSlot?.slotProps ?? {}),\n group: {\n sx: { fontSize: '14px' },\n },\n }}\n options={options}\n title={label}\n titleSuffix={\n explanation ? (\n <Box sx={{ display: 'inline-flex' }}>\n <Explanation explanation={explanation} />\n </Box>\n ) : undefined\n }\n checkedIds={checkedIds}\n setCheckedIds={(next) => {\n const currentIds = checkedIds;\n const newIds = typeof next === 'function' ? next(currentIds) : next;\n const idsArray = (newIds as string[]) ?? [];\n onChange(idsArray);\n field.onChange?.(idsArray, getValues() as InferFormDataType<T>);\n }}\n error={!!error}\n helperText={helperText}\n errorText={error ? (typeof error.message === 'string' ? error.message : undefined) : undefined}\n required={required}\n />\n );\n }}\n />\n </Box>\n );\n};\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { ToggleButtonGroup } from '@/ele/ToggleButtonGroup';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { ToggleButtonSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface ToggleButtonFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.toggleButton }>;\n}\n\nexport const ToggleButtonField = <T extends FormTypeMap = FormTypeMap>({ field }: ToggleButtonFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const toggleSlot = slotProps as ToggleButtonSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value }, fieldState: { error } }) => {\n const helperTextNode = <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />;\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start', mb: 0.5 }}>\n <FormLabel component=\"legend\" sx={{ mr: 1 }}>{label}</FormLabel>\n <Box sx={{ display: 'inline-flex' }}>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n </Box>\n <Box sx={{ px: 4, py: 1 }}>\n <ToggleButtonGroup\n value={typeof value === 'string' ? value : (toggleSlot?.options?.[0]?.value ?? '')}\n onChange={(e: React.MouseEvent<HTMLElement>, newValue: string | null) => {\n // newValue may be null when deselected; pass null to callbacks\n onChange(newValue ?? null);\n field.onChange?.(newValue ?? null, getValues() as InferFormDataType<T>);\n }}\n options={toggleSlot?.options ?? []}\n color={toggleSlot?.color}\n />\n </Box>\n {helperTextNode}\n </FormControl>\n )}}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box, Stack } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { Switch as EleSwitch } from '@/ele/Switch';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { SwitchSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface SwitchFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.switch }>;\n}\n\nexport const SwitchField = <T extends FormTypeMap = FormTypeMap>({ field }: SwitchFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const switchSlot = slotProps as SwitchSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue ?? false}\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <FormLabel component=\"legend\" sx={{ fontSize: '12px', userSelect: 'none', color: 'var(--useform-label-color)' }}>{label}</FormLabel>\n <EleSwitch\n {...switchSlot}\n helperText={undefined}\n label={undefined}\n checked={!!value}\n onChange={(e, checked) => {\n onChange(checked);\n field.onChange?.(checked, getValues() as InferFormDataType<T>);\n switchSlot?.onChange?.(e, checked);\n }}\n />\n <Box sx={{ '& > span > button.MuiButtonBase-root.MuiIconButton-root': { m: 0, p: 0 } }}>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n </Stack>\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </FormControl>\n )}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form' ;\nimport { Box } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { CustomSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface CustomFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.custom }>;\n}\n\nexport const CustomField = <T extends FormTypeMap = FormTypeMap>({ field }: CustomFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n sx,\n size,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const customSlot = slotProps as CustomSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange, value }, fieldState: { error } }) => {\n const handleChange = (v: unknown) => {\n onChange(v);\n // `Custom` fields accept `unknown` values by design; the outer\n // `FieldConfig` typing maps custom fields to `unknown` so we can\n // forward `v` directly without an `any` cast.\n field.onChange?.(v, getValues() as InferFormDataType<T>);\n };\n\n\n\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start' }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n\n <Box sx={{ py: 1 }}>\n {typeof customSlot?.render === 'function' ? (\n customSlot.render({ value, onChange: handleChange, error: !!error, helperText: customSlot?.helperText, getValues: () => getValues() })\n ) : (\n // fallback simple input\n <input\n value={value ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n style={{ width: '100%', padding: 8, boxSizing: 'border-box' }}\n />\n )}\n </Box>\n\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[String(customSlot?.helperText ?? '')]} />\n </FormControl>\n );\n }}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { IconButton, Button } from '@/ele/Button';\nimport { TextField as MuiTextField } from '@/ele/Input/src/TextField';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { DeleteIcon, AddIcon } from '@/icons/MuiIcon';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport Explanation from './Explanation';\nimport type { TextArraySlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface TextArrayFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.textArray }>;\n}\n\nexport const TextArrayField = <T extends FormTypeMap = FormTypeMap>({ field }: TextArrayFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const {\n name,\n label,\n required,\n disabled,\n slotProps,\n errorMsg,\n defaultValue,\n } = field;\n\n const taSlot = slotProps as TextArraySlotProps | undefined;\n const minItems = taSlot?.minItems ?? 0;\n const maxItems = taSlot?.maxItems ?? Infinity;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue ?? []}\n render={({ field: controllerField, fieldState: { error } }) => {\n const { onChange, value } = controllerField;\n const items = Array.isArray(value) ? value as string[] : [];\n\n const setItems = (next: string[]) => {\n onChange(next);\n // The `field` prop may be a union field type; assert it is the correct\n // shape at runtime before calling the optional `onChange` callback.\n if ((field)?.onChange) {\n (field).onChange(next, getValues() as InferFormDataType<T>);\n }\n };\n const addItem = () => {\n if (items.length >= maxItems) return;\n setItems([...items, '']);\n };\n const removeItem = (index:number) => {\n if (items.length <= minItems) return;\n const next = items.slice(0, index).concat(items.slice(index+1));\n setItems(next);\n };\n const updateItem = (index:number, v:string) => {\n const next = items.slice();\n next[index] = v;\n setItems(next);\n };\n\n return (\n <FormControl\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(field.size, field.sx)}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-start' }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n\n <Box sx={{ py: 1, display: 'flex', flexDirection: 'column', gap: 1 }}>\n {items.map((it, idx) => (\n <Box key={idx} sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\n <MuiTextField\n size=\"small\"\n value={it}\n onChange={(e) => updateItem(idx, e.target.value)}\n placeholder={taSlot?.itemProps?.placeholder}\n sx={{ flex: 1 }}\n slotProps={{\n htmlInput: {\n maxLength: taSlot?.itemProps?.maxLength,\n }\n }}\n />\n <IconButton size=\"small\" onClick={() => removeItem(idx)} disabled={items.length <= minItems}>\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n\n <Box>\n <Button size=\"small\" startIcon={<AddIcon/>} onClick={addItem} disabled={items.length >= maxItems}>\n {taSlot?.addButtonLabel ?? 'Add'}\n </Button>\n </Box>\n </Box>\n\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </FormControl>\n );\n }}\n />\n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { FormControl, InputAdornment } from '@/ele/Form';\nimport { TextField } from '@/ele/Input/src/TextField';\nimport { IconButton } from '@/ele/Button';\nimport { getHelperText } from '../_utils/helperText';\nimport {AddIcon, RemoveIcon} from '@/icons/MuiIcon';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { NumberSlotProps } from '../_utils/slotProps';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport { mergeSx } from '@/_utils/_func';\n\ninterface NumberFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.number }>;\n}\n\nexport const NumberField = <T extends FormTypeMap = FormTypeMap>({ field }: NumberFieldProps<T>) => {\n const { control, getValues } = useFormContext();\n const { name, label, required, disabled, sx, size, slotProps, errorMsg, defaultValue } = field;\n\n const numSlot = slotProps as NumberSlotProps | undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue ?? numSlot?.min ?? 0}\n render={({ field: controllerField, fieldState: { error } }) => {\n const { onChange, value } = controllerField;\n\n // helper to update value with clamping\n const update = (next: number) => {\n onChange(next);\n field.onChange?.(next as number | null, getValues() as InferFormDataType<T>);\n };\n\n const handleMinus = () => {\n const s = numSlot?.step ?? 1;\n const cur = value ?? (numSlot?.min ?? 0);\n let next = cur - s;\n if (typeof numSlot?.min === 'number') next = Math.max(next, numSlot.min);\n update(next);\n };\n\n const handlePlus = () => {\n const s = numSlot?.step ?? 1;\n const cur = value ?? (numSlot?.min ?? 0);\n let next = cur + s;\n if (typeof numSlot?.max === 'number') next = Math.min(next, numSlot.max);\n update(next);\n };\n\n return (\n <FormControl disabled={disabled} required={required} error={!!error} fullWidth size=\"small\" \n sx={mergeSx(mergeFieldSx(size, sx), { maxWidth: '200px' })}>\n <Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1 }}>\n <TextField\n fullWidth\n size=\"small\"\n type=\"number\"\n label={label} required={required} error={!!error}\n helperText={getHelperText(error, errorMsg, field.helperText)}\n value={value ?? ''}\n // hide browser native spinner controls\n sx={{\n flex: 1,\n minWidth: 0,\n '& input[type=number]::-webkit-outer-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n '& input[type=number]::-webkit-inner-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n '& input[type=number]': {\n MozAppearance: 'textfield',\n WebkitAppearance: 'textfield',\n appearance: 'textfield',\n },\n }}\n onChange={(e) => {\n const s = (e.target as HTMLInputElement).value;\n const parsed = s === '' ? null : Number(s);\n onChange(parsed);\n field.onChange?.(parsed, getValues() as InferFormDataType<T>);\n }}\n slotProps={{\n ...numSlot?.slotProps,\n htmlInput: {\n ...(numSlot?.slotProps?.htmlInput ?? {}),\n min: numSlot?.min,\n max: numSlot?.max,\n step: numSlot?.step,\n style: { textAlign: 'center' },\n },\n input: {\n ...(numSlot?.slotProps?.input ?? {}),\n startAdornment: (\n <InputAdornment position=\"start\">\n <IconButton size=\"small\" onClick={handleMinus} disabled={typeof value === 'number' && typeof numSlot?.min === 'number' ? value <= numSlot.min : false}>\n <RemoveIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton size=\"small\" onClick={handlePlus} disabled={typeof value === 'number' && typeof numSlot?.max === 'number' ? value >= numSlot.max : false}>\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n \n }}\n disabled={disabled}\n />\n <Explanation alignToInput explanation={getFieldExplanation(field)} />\n </Box>\n\n </FormControl>\n );\n }}\n />\n );\n};\n","import React from 'react';\nimport { useFormContext, useFormState } from 'react-hook-form';\nimport { CheckIcon, NavigateBeforeIcon, NavigateNextIcon, RestoreIcon, DeleteIcon } from '@/icons/MuiIcon';\nimport { IconButton } from '@/ele/Button';\nimport { Box } from '@/ele/Box';\nimport { CircularProgress } from '@/ele/Progress';\n\ninterface NavigationProps {\n isMulti: boolean;\n currentStep: number;\n isLastStep: boolean;\n handleBack: () => void;\n handleNext: () => void;\n onSubmit?: () => void;\n undo?: () => void;\n clear?: () => void;\n extraButtons?: React.ReactNode;\n}\n\nconst Navigation = ({\n isMulti,\n currentStep,\n isLastStep,\n handleBack,\n handleNext,\n onSubmit,\n undo,\n clear,\n extraButtons,\n}: NavigationProps) => {\n const { control } = useFormContext();\n const { isSubmitting } = useFormState({ control });\n\n return (\n <Box\n sx={{\n padding: '4px 0',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 1,\n }}\n >\n {extraButtons}\n {undo && (\n <IconButton onClick={undo} size=\"small\" disabled={isSubmitting} aria-label=\"Undo\">\n <RestoreIcon fontSize=\"small\" />\n </IconButton>\n )}\n {clear && (\n <IconButton onClick={clear} size=\"small\" disabled={isSubmitting} aria-label=\"Clear\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n )}\n {isMulti ? (\n <>\n <IconButton onClick={handleBack} disabled={currentStep === 0 || isSubmitting} size=\"small\" aria-label=\"Back\">\n <NavigateBeforeIcon fontSize=\"small\" />\n </IconButton>\n <IconButton onClick={handleNext} size=\"small\" color={isLastStep ? 'success' : undefined} disabled={isSubmitting} aria-label={isLastStep ? 'Submit' : 'Next'}>\n {isLastStep\n ? (isSubmitting ? <CircularProgress size={18} color=\"inherit\" /> : <CheckIcon fontSize=\"small\" />)\n : <NavigateNextIcon fontSize=\"small\" />}\n </IconButton>\n </>\n ) : (\n <IconButton onClick={onSubmit} size=\"small\" color=\"success\" disabled={isSubmitting} aria-label=\"Submit\">\n {isSubmitting ? <CircularProgress size={18} color=\"inherit\" /> : <CheckIcon fontSize=\"small\" />}\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport default Navigation;\n","import { useEffect, useMemo } from 'react';\nimport type { UseFormReturn, Path, PathValue } from 'react-hook-form';\nimport type { StrictFormConfig, FormTypeMap, InferFormDataType, RowConfig } from '../_utils';\nimport { collectRows, getFormFieldsSignature } from '../_utils/helpers';\n\nexport function useRegisterFields<T extends FormTypeMap>(\n methods: UseFormReturn<InferFormDataType<T>>,\n config: StrictFormConfig<T>\n) {\n const signature = useMemo(() => getFormFieldsSignature(config), [config]);\n\n useEffect(() => {\n const rows: RowConfig<T>[] = collectRows(config);\n\n rows.forEach((row) => {\n row.fields.forEach((field) => {\n const name = field.name as Path<InferFormDataType<T>>;\n\n methods.register(name, {\n shouldUnregister: false,\n });\n\n if (field.defaultValue !== undefined) {\n const alreadyProvided =\n config.defaultValues && Object.prototype.hasOwnProperty.call(config.defaultValues, name as string);\n if (!alreadyProvided) {\n methods.setValue(name, field.defaultValue as unknown as PathValue<InferFormDataType<T>, Path<InferFormDataType<T>>>, { shouldDirty: false });\n }\n } else {\n const current = methods.getValues(name as Path<InferFormDataType<T>>);\n if (current === undefined) {\n methods.setValue(name, null as unknown as PathValue<InferFormDataType<T>, Path<InferFormDataType<T>>>, { shouldDirty: false });\n }\n }\n });\n });\n // Re-register when the field set actually changes, not when `config` is a new object.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `signature` is the config identity that matters\n }, [methods, signature]);\n}\n\nexport default useRegisterFields;\n","import type { SxProps, Theme } from '@mui/material/styles';\n\n/**\n * Root-level CSS variable aliases for the UseForm compound.\n * Spread on container elements — children consume via `var(--*)`.\n */\nexport const useFormRootSx: SxProps<Theme> = {\n '--useform-error': 'var(--mui-palette-error-main)',\n '--useform-error-hover': 'var(--mui-palette-error-dark)',\n '--useform-label-color': 'var(--mui-palette-text-grey-1)',\n '--useform-warning': 'var(--mui-palette-warning-main)',\n};\n","import React from 'react';\nimport { FieldValues } from 'react-hook-form';\nimport { CloseIcon } from '@/icons/MuiIcon';\n\nimport { MuiModal } from '@/ele/Modal';\nimport { IconButton } from '@/ele/Button';\nimport { Box } from '@/ele/Box';\n\nimport type { ConfiguredFormReturn } from './useHooks';\nimport { FormTypeMap, StrictFormConfig } from './_utils';\nimport { FormTree, type FormLiveProps } from './FormTree';\nimport { useFormRootSx } from './theme';\n\nexport interface FormModalRendererProps<T extends FormTypeMap> {\n openProps: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n title: string;\n methods: ConfiguredFormReturn<T>['methods'];\n config: StrictFormConfig<T>;\n onSubmit: (data: FieldValues) => void;\n extraButtons?: React.ReactNode;\n children?: React.ReactNode;\n maxWidth?: string | number;\n closeOnBackdropClick?: boolean;\n showCloseButton?: boolean;\n showUndo?: boolean;\n showClear?: boolean;\n slotProps?:{\n modal?:Partial<React.ComponentProps<typeof MuiModal>>\n }\n}\n\nexport function FormModalRenderer<T extends FormTypeMap>(p:FormModalRendererProps<T>){\n const {openProps,\n title,\n methods,\n config,\n onSubmit,\n extraButtons,\n children,\n maxWidth = '600px',\n closeOnBackdropClick = true,\n showCloseButton = true,\n showUndo = true,\n showClear = true,\n slotProps,} = p\n const [, setOpen] = openProps;\n\n const livePropsRef = React.useRef<FormLiveProps<T>>({ onSubmit, extraButtons, children });\n livePropsRef.current = { onSubmit, extraButtons, children };\n\n const handleClose = (event: object, reason: \"backdropClick\" | \"escapeKeyDown\") => {\n if (reason === 'backdropClick' && !closeOnBackdropClick) return;\n setOpen(false);\n };\n\n return (\n <MuiModal \n openProps={openProps} \n title={title}\n maxWidth={maxWidth}\n onClose={handleClose as unknown as () => void}\n closeButton={showCloseButton ? (\n <Box sx={useFormRootSx}>\n <IconButton onClick={() => setOpen(false)} sx={{\n backgroundColor: 'transparent',\n color: 'var(--useform-error)',\n '&:hover': {\n color: 'var(--useform-error-hover)',\n borderColor: 'transparent',\n },\n }}>\n <CloseIcon sx={{fontSize:16}}/>\n </IconButton>\n </Box>\n ) : null}\n {...slotProps?.modal}\n >\n <FormTree\n methods={methods}\n config={config}\n livePropsRef={livePropsRef}\n showUndo={showUndo}\n showClear={showClear}\n />\n </MuiModal>\n );\n};\n","import React from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport type { ConfiguredFormReturn } from './useHooks';\nimport { FormRenderer } from './FormRenderer/Layout';\nimport type { FormTypeMap, StrictFormConfig } from './_utils';\nimport { FormContextProvider } from './store/FormContext';\n\nexport type FormLiveProps<T extends FormTypeMap = FormTypeMap> = {\n onSubmit: (data: FieldValues) => void;\n extraButtons?: React.ReactNode | ((methods: ConfiguredFormReturn<T>['methods']) => React.ReactNode);\n children?: React.ReactNode;\n};\n\nexport type FormTreeProps<T extends FormTypeMap = FormTypeMap> = {\n methods: ConfiguredFormReturn<T>['methods'];\n config: StrictFormConfig<T>;\n livePropsRef: React.MutableRefObject<FormLiveProps<T>>;\n showUndo?: boolean;\n showClear?: boolean;\n};\n\n/**\n * Keeps the field tree mounted across `useForm` root re-renders.\n * Callbacks and extra buttons are read from `livePropsRef` so parent identity\n * changes do not rebuild JsonEditor, date pickers, or file upload.\n */\nfunction FormTreeInner<T extends FormTypeMap>({\n methods,\n config,\n livePropsRef,\n showUndo = true,\n showClear = true,\n}: FormTreeProps<T>) {\n const extraButtons = livePropsRef.current.extraButtons;\n const extraButtonsElement =\n typeof extraButtons === 'function' ? extraButtons(methods) : extraButtons;\n\n const onSubmit = React.useCallback((data: FieldValues) => {\n livePropsRef.current.onSubmit(data);\n }, [livePropsRef]);\n\n return (\n <FormContextProvider config={config} useFormMethods={methods}>\n <FormRenderer\n methods={methods}\n config={config}\n onSubmit={onSubmit}\n extraButtons={extraButtonsElement}\n showUndo={showUndo}\n showClear={showClear}\n >\n {livePropsRef.current.children}\n </FormRenderer>\n </FormContextProvider>\n );\n}\n\nfunction formTreePropsAreEqual(prev: FormTreeProps, next: FormTreeProps) {\n return (\n prev.methods === next.methods &&\n prev.config === next.config &&\n prev.livePropsRef === next.livePropsRef &&\n (prev.showUndo ?? true) === (next.showUndo ?? true) &&\n (prev.showClear ?? true) === (next.showClear ?? true)\n )\n}\n\nconst FormTreeMemo = React.memo(FormTreeInner, formTreePropsAreEqual) as typeof FormTreeInner\n\nexport const FormTree = FormTreeMemo;\n","import React from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { useConfiguredForm, type ConfiguredFormReturn } from './useHooks';\nimport { FormTree, type FormLiveProps } from './FormTree';\nimport type { FormTypeMap, StrictFormConfig } from './_utils';\n\nexport type UseFormProps<T extends FormTypeMap> = {\n config: StrictFormConfig<T>;\n onSubmit: (data: FieldValues) => void;\n /** When true the undo button is shown (default: true) */\n showUndo?: boolean;\n /** When true the clear button is shown (default: true) */\n showClear?: boolean;\n /**\n * Can be a React node or a function that receives the `methods` and returns nodes.\n * Example: extraButtons={(methods) => <MyButtons methods={methods} />}\n */\n extraButtons?: React.ReactNode | ((methods: ConfiguredFormReturn<T>['methods']) => React.ReactNode);\n};\n\nexport function UseForm<T extends FormTypeMap>({\n config,\n onSubmit,\n showUndo = true,\n showClear = true,\n extraButtons,\n}: UseFormProps<T>) {\n const { methods, config: resolvedConfig } = useConfiguredForm({ config });\n const livePropsRef = React.useRef<FormLiveProps<T>>({ onSubmit, extraButtons });\n livePropsRef.current = { onSubmit, extraButtons };\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <FormTree\n methods={methods}\n config={resolvedConfig}\n livePropsRef={livePropsRef}\n showUndo={showUndo}\n showClear={showClear}\n />\n </LocalizationProvider>\n );\n}\n"],"mappings":"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","names":["configError","React","React","jsx","getNames","React","jsx","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","useFormContext","default","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","default","jsx","React","default","useFormContext","useFormState","jsx","jsxs","useFormContext","useFormState","default","useEffect","useMemo","useMemo","useEffect","jsx","jsxs","React","default","React","React","jsx","React","jsx","React","default","React","jsx","React"]}
@@ -0,0 +1,30 @@
1
+ import {
2
+ default2
3
+ } from "./chunk-S6EZVRZC.mjs";
4
+
5
+ // src/components/elemental/Skeleton/MuiSkeleton/index.ts
6
+ import { default as default3 } from "@mui/material/Skeleton";
7
+
8
+ // src/components/elemental/Skeleton/DialogSkeleton/DialogSkeleton.tsx
9
+ import { jsx } from "react/jsx-runtime";
10
+ function DialogSkeleton({
11
+ height = 60
12
+ }) {
13
+ const numberOfLines = Math.floor(height / 5);
14
+ if (numberOfLines < 1) return null;
15
+ return /* @__PURE__ */ jsx(default2, { spacing: 0.5, width: "100%", children: Array(numberOfLines).fill(0).map((_, index) => /* @__PURE__ */ jsx(
16
+ default3,
17
+ {
18
+ variant: "rounded",
19
+ width: `${100 - index % 3 * 15}%`,
20
+ height: 5
21
+ },
22
+ index
23
+ )) });
24
+ }
25
+
26
+ export {
27
+ default3 as default,
28
+ DialogSkeleton
29
+ };
30
+ //# sourceMappingURL=chunk-27KYFU7R.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Skeleton/MuiSkeleton/index.ts","../src/components/elemental/Skeleton/DialogSkeleton/DialogSkeleton.tsx"],"sourcesContent":["export {default as Skeleton} from '@mui/material/Skeleton'\n","import { Stack as MuiStack } from '@/ele/Box'\n\nimport { Skeleton } from '../MuiSkeleton'\n\n/**\n * A skeleton component for displaying a loading state for dialogs.\n * @param {Object} props - The properties for the DialogSkeleton component.\n * @param {number} [props.height=60] - The height of the entire skeleton\n */\nexport default function DialogSkeleton({\n height = 60,\n}: {\n height?: number;\n}) {\n const numberOfLines = Math.floor(height / 5)\n if(numberOfLines < 1) return null\n return (\n <MuiStack spacing={0.5} width=\"100%\">\n {\n Array(numberOfLines).fill(0).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n width={`${100 - index%3 * 15}%`}\n height={5}\n\n />\n ))\n }\n </MuiStack>\n )\n\n}\n"],"mappings":";;;;;AAAA,SAAmB,WAAXA,gBAA0B;;;ACoBxB;AAXK,SAAR,eAAgC;AAAA,EACrC,SAAS;AACX,GAEG;AACD,QAAM,gBAAgB,KAAK,MAAM,SAAS,CAAC;AAC3C,MAAG,gBAAgB,EAAG,QAAO;AAC7B,SACE,oBAACC,UAAA,EAAS,SAAS,KAAK,OAAM,QAE1B,gBAAM,aAAa,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,UACnC;AAAA,IAACA;AAAA,IAAA;AAAA,MAEC,SAAQ;AAAA,MACR,OAAO,GAAG,MAAM,QAAM,IAAI,EAAE;AAAA,MAC5B,QAAQ;AAAA;AAAA,IAHH;AAAA,EAKP,CACD,GAEL;AAGJ;","names":["default","default"]}
@@ -0,0 +1,7 @@
1
+ // src/components/elemental/AppBar/src/index.ts
2
+ import { default as default2 } from "@mui/material/AppBar";
3
+
4
+ export {
5
+ default2 as default
6
+ };
7
+ //# sourceMappingURL=chunk-2FFLT5VP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/AppBar/src/index.ts"],"sourcesContent":["export { default as AppBar } from '@mui/material/AppBar'\nexport * from './theme'\n"],"mappings":";AAAA,SAAoB,WAAXA,gBAAyB;","names":["default"]}
@@ -0,0 +1,148 @@
1
+ import {
2
+ default as default2
3
+ } from "./chunk-S6EZVRZC.mjs";
4
+
5
+ // src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/ToggleButtonGroup.tsx
6
+ import MuiToggleButton from "@mui/material/ToggleButton";
7
+ import MuiToggleButtonGroup from "@mui/material/ToggleButtonGroup";
8
+ import { styled } from "@mui/material/styles";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ function ToggleButtonGroup({ value, onChange, options, color, ...rest }) {
11
+ return /* @__PURE__ */ jsx(MuiToggleButtonGroup, { ...rest, value, exclusive: true, onChange, children: options.map((option) => /* @__PURE__ */ jsx(ToggleButton, { option, color }, option.id)) });
12
+ }
13
+ function ToggleButton(p) {
14
+ const { option, ...rest } = p;
15
+ return /* @__PURE__ */ jsx(
16
+ StyledToggleButton,
17
+ {
18
+ ...rest,
19
+ value: option.value,
20
+ rotateIconOnSelected: option.rotateIconOnSelected,
21
+ disableRipple: false,
22
+ disabled: option.disabled,
23
+ onClick: option.onClick,
24
+ children: /* @__PURE__ */ jsxs(default2, { sx: (theme) => ({
25
+ display: "flex",
26
+ gap: theme.spacing(0.5),
27
+ alignItems: "center",
28
+ background: "transparent",
29
+ paddingLeft: theme.spacing(1.5),
30
+ paddingRight: theme.spacing(1.5)
31
+ }), children: [
32
+ /* @__PURE__ */ jsx(default2, { sx: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", flex: 1 }, children: option.label }),
33
+ option.icon && /* @__PURE__ */ jsx(default2, { sx: { display: "flex", flex: 0 }, children: option.icon })
34
+ ] })
35
+ }
36
+ );
37
+ }
38
+ var StyledToggleButton = styled(MuiToggleButton, {
39
+ shouldForwardProp: (prop) => prop !== "rotateIconOnSelected"
40
+ })({
41
+ variants: [
42
+ {
43
+ props: { rotateIconOnSelected: true },
44
+ style: {
45
+ "&.Mui-selected svg": {
46
+ transform: "rotate(360deg)",
47
+ transition: "transform 0.75s"
48
+ }
49
+ }
50
+ }
51
+ ]
52
+ });
53
+
54
+ // src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/themes.ts
55
+ var toggleButtonGroupTheme = {
56
+ defaultProps: {},
57
+ styleOverrides: {
58
+ root: ({ theme }) => ({
59
+ width: "fit-content",
60
+ maxWidth: "100%",
61
+ border: "none",
62
+ boxShadow: "var(--mui-palette-shadow-border-1)",
63
+ padding: theme.spacing(0.5),
64
+ borderRadius: "10px",
65
+ gap: theme.spacing(0.5)
66
+ })
67
+ }
68
+ };
69
+ var toggleButtonTheme = {
70
+ defaultProps: {
71
+ disableRipple: false
72
+ },
73
+ styleOverrides: {
74
+ root: () => ({
75
+ "--unselected-hover-bg": "var(--mui-palette-background-hover-1)",
76
+ "--selected-bg": "var(--mui-palette-focus-1)",
77
+ "--selected-hover-bg": "color-mix(in lab, var(--selected-bg), var(--unselected-hover-bg) 30%)",
78
+ "--disabled-bg": "var(--mui-palette-background-disabled)",
79
+ "--disabled-color": "var(--mui-palette-text-disabled)",
80
+ "--c": "var(--mui-palette-text-primary)",
81
+ border: "none",
82
+ textTransform: "none",
83
+ padding: "0px",
84
+ overflow: "hidden",
85
+ color: "var(--c)",
86
+ maxWidth: "200px",
87
+ [`
88
+ &.MuiButtonBase-root,
89
+ &.MuiToggleButtonGroup.MuiButtonBase-root,
90
+ &.MuiToggleButtonGroup-middleButton.MuiButtonBase-root,
91
+ &.MuiToggleButtonGroup-firstButton.MuiButtonBase-root,
92
+ &.MuiToggleButtonGroup-lastButton.MuiButtonBase-root`]: {
93
+ borderRadius: "8px"
94
+ },
95
+ "&:hover": {
96
+ backgroundColor: "var(--unselected-hover-bg)"
97
+ },
98
+ "&.Mui-selected": {
99
+ background: "var(--selected-bg)",
100
+ transition: "background 0.3s",
101
+ "&:hover": {
102
+ background: "var(--selected-hover-bg)"
103
+ },
104
+ "&.Mui-disabled": {
105
+ background: "var(--disabled-bg)"
106
+ }
107
+ },
108
+ "&.Mui-disabled": {
109
+ color: "var(--disabled-color)",
110
+ border: "none"
111
+ },
112
+ "& svg": {
113
+ fontSize: "inherit"
114
+ },
115
+ "&.Mui-error": {
116
+ "--c": "var(--mui-palette-error-main)",
117
+ "--unselected-hover-bg": "color-mix(in lab, var(--mui-palette-error-main), var(--mui-palette-background-hover-1) 87%)"
118
+ },
119
+ "&.MuiToggleButton-info": {
120
+ "--c": "var(--mui-palette-info-main)",
121
+ "--unselected-hover-bg": "color-mix(in lab, var(--mui-palette-info-main), var(--mui-palette-background-hover-1) 84%)"
122
+ },
123
+ "&.MuiToggleButton-success": {
124
+ "--c": "var(--mui-palette-success-dark)",
125
+ "--unselected-hover-bg": "color-mix(in lab, var(--mui-palette-success-dark), var(--mui-palette-background-hover-1) 77%)"
126
+ },
127
+ "&.MuiToggleButton-warning": {
128
+ "--c": "var(--mui-palette-warning-main)",
129
+ "--unselected-hover-bg": "color-mix(in lab, var(--mui-palette-warning-main), var(--mui-palette-background-hover-1) 82%)"
130
+ },
131
+ "&.MuiToggleButton-primary": {
132
+ "--c": "var(--mui-palette-primary-emphasis)",
133
+ "--selected-bg": "color-mix(in lab, var(--mui-palette-container-bg-primary), var(--mui-palette-primary-emphasis) 26%)",
134
+ "--selected-hover-bg": "color-mix(in lab, var(--selected-bg), var(--mui-palette-primary-emphasis) 18%)",
135
+ "--unselected-hover-bg": "color-mix(in lab, var(--mui-palette-primary-emphasis), var(--mui-palette-background-hover-1) 84%)"
136
+ },
137
+ "&.MuiToggleButton-secondary": { "--c": "var(--mui-palette-secondary-main)" }
138
+ })
139
+ }
140
+ };
141
+
142
+ export {
143
+ ToggleButtonGroup,
144
+ ToggleButton,
145
+ toggleButtonGroupTheme,
146
+ toggleButtonTheme
147
+ };
148
+ //# sourceMappingURL=chunk-2ZZJTBTE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/ToggleButtonGroup.tsx","../src/components/elemental/ToggleButtonGroup/src/ToggleButtonGroup/themes.ts"],"sourcesContent":["'use client'\nimport React from 'react';\nimport MuiToggleButton from '@mui/material/ToggleButton';\nimport MuiToggleButtonGroup from '@mui/material/ToggleButtonGroup';\nimport { styled } from '@mui/material/styles';\nimport { Box } from '@/ele/Box';\n\ntype Option = {\n id:string;\n value:string;\n label:string;\n icon?:React.ReactNode;\n rotateIconOnSelected?:React.ComponentProps<typeof StyledToggleButton>[\"rotateIconOnSelected\"];\n onClick?:()=>void;\n disabled?:boolean;\n}\ntype ToggleButtonGroupProps = {\n value:string;\n onChange:(event: React.MouseEvent<HTMLElement>, newValue: string) => void;\n options:Option[];\n} & Omit<React.ComponentProps<typeof MuiToggleButtonGroup>, \"value\" | \"onChange\" | \"exclusive\">;\nexport default function ToggleButtonGroup({ value, onChange, options, color, ...rest }: ToggleButtonGroupProps) {\n return (\n <MuiToggleButtonGroup {...rest} value={value} exclusive onChange={onChange}>\n {options.map((option) => (\n <ToggleButton key={option.id} option={option} color={color} />\n ))}\n </MuiToggleButtonGroup>\n )\n}\n\ntype ToggleButtonProps = Omit<\nReact.ComponentProps<typeof MuiToggleButton>, \n\"value\" | \"onClick\" |\"disabled\"\n|\"children\"|\"disableRipple\"\n> & {option:Option}\nexport function ToggleButton(p:ToggleButtonProps){\n const {option,...rest} = p;\n return (\n <StyledToggleButton {...rest}\n value={option.value}\n rotateIconOnSelected={option.rotateIconOnSelected}\n disableRipple={false}\n disabled={option.disabled}\n onClick={option.onClick}>\n <Box sx={(theme)=>({\n display:\"flex\",\n gap:theme.spacing(0.5),\n alignItems:\"center\", \n background:\"transparent\",\n paddingLeft: theme.spacing(1.5),\n paddingRight: theme.spacing(1.5),\n })}>\n <Box sx={{overflow:\"hidden\", textOverflow:\"ellipsis\", whiteSpace:\"nowrap\", flex:1}}>{option.label}</Box>\n {option.icon && <Box sx={{display:\"flex\", flex:0}}>{option.icon}</Box>}\n </Box>\n </StyledToggleButton>\n )\n}\n\ntype CustomToggleButtonProps = {\n rotateIconOnSelected?:boolean;\n}\nconst StyledToggleButton = styled(MuiToggleButton,{\n shouldForwardProp: (prop) => prop !== 'rotateIconOnSelected',\n})<CustomToggleButtonProps>({\n variants: [\n {\n props: { rotateIconOnSelected: true },\n style: {\n \"&.Mui-selected svg\":{\n transform:\"rotate(360deg)\",\n transition:\"transform 0.75s\",\n },\n \n }\n },\n ]\n})","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const toggleButtonGroupTheme = {\n defaultProps:{\n \n },\n styleOverrides: {\n root: ({theme}) => ({\n width: 'fit-content',\n maxWidth: '100%',\n\n border:\"none\",\n boxShadow:\"var(--mui-palette-shadow-border-1)\",\n padding: theme.spacing(0.5),\n borderRadius:\"10px\",\n gap:theme.spacing(0.5),\n }),\n }\n} as const satisfies MuiComponentTheme<\"MuiToggleButtonGroup\">\n\nexport const toggleButtonTheme = {\n defaultProps: {\n disableRipple: false,\n },\n styleOverrides: {\n root: () => ({\n '--unselected-hover-bg': 'var(--mui-palette-background-hover-1)',\n '--selected-bg': 'var(--mui-palette-focus-1)',\n '--selected-hover-bg': 'color-mix(in lab, var(--selected-bg), var(--unselected-hover-bg) 30%)',\n '--disabled-bg': 'var(--mui-palette-background-disabled)',\n '--disabled-color': 'var(--mui-palette-text-disabled)',\n '--c': 'var(--mui-palette-text-primary)',\n\n border:\"none\",\n textTransform:\"none\",\n padding:\"0px\",\n overflow:\"hidden\",\n color:\"var(--c)\",\n maxWidth:\"200px\",\n\n [`\n &.MuiButtonBase-root, \n &.MuiToggleButtonGroup.MuiButtonBase-root,\n &.MuiToggleButtonGroup-middleButton.MuiButtonBase-root,\n &.MuiToggleButtonGroup-firstButton.MuiButtonBase-root,\n &.MuiToggleButtonGroup-lastButton.MuiButtonBase-root`]:{\n borderRadius:\"8px\",\n },\n\n \"&:hover\":{\n backgroundColor:\"var(--unselected-hover-bg)\",\n },\n\n \"&.Mui-selected\":{\n background:\"var(--selected-bg)\",\n transition:\"background 0.3s\",\n \"&:hover\":{\n background:\"var(--selected-hover-bg)\",\n },\n \"&.Mui-disabled\":{\n background:\"var(--disabled-bg)\",\n },\n },\n \"&.Mui-disabled\":{\n color:\"var(--disabled-color)\",\n border:\"none\",\n },\n\n \"& svg\":{\n fontSize:\"inherit\",\n },\n\n \"&.Mui-error\":{ \n \"--c\":'var(--mui-palette-error-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-error-main), var(--mui-palette-background-hover-1) 87%)',\n },\n \"&.MuiToggleButton-info\":{ \n \"--c\":'var(--mui-palette-info-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-info-main), var(--mui-palette-background-hover-1) 84%)',\n },\n \"&.MuiToggleButton-success\":{ \n \"--c\":'var(--mui-palette-success-dark)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-success-dark), var(--mui-palette-background-hover-1) 77%)',\n },\n \"&.MuiToggleButton-warning\":{ \n \"--c\":'var(--mui-palette-warning-main)', \n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-warning-main), var(--mui-palette-background-hover-1) 82%)',\n },\n \"&.MuiToggleButton-primary\":{\n \"--c\":'var(--mui-palette-primary-emphasis)',\n \"--selected-bg\": 'color-mix(in lab, var(--mui-palette-container-bg-primary), var(--mui-palette-primary-emphasis) 26%)',\n \"--selected-hover-bg\": 'color-mix(in lab, var(--selected-bg), var(--mui-palette-primary-emphasis) 18%)',\n \"--unselected-hover-bg\": 'color-mix(in lab, var(--mui-palette-primary-emphasis), var(--mui-palette-background-hover-1) 84%)',\n },\n \"&.MuiToggleButton-secondary\":{ \"--c\":'var(--mui-palette-secondary-main)', },\n }),\n }\n} as const satisfies MuiComponentTheme<\"MuiToggleButton\">"],"mappings":"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","names":["default"]}
@@ -0,0 +1,15 @@
1
+ // src/components/elemental/Divider/src/index.ts
2
+ import { default as default2 } from "@mui/material/Divider";
3
+
4
+ // src/components/elemental/Divider/src/theme.ts
5
+ var dividerTheme = {
6
+ styleOverrides: {
7
+ root: {}
8
+ }
9
+ };
10
+
11
+ export {
12
+ dividerTheme,
13
+ default2 as default
14
+ };
15
+ //# sourceMappingURL=chunk-3DQINB57.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Divider/src/index.ts","../src/components/elemental/Divider/src/theme.ts"],"sourcesContent":["export {default as Divider} from '@mui/material/Divider'\nexport * from './theme'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const dividerTheme = {\n\n styleOverrides: {\n root: {\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiDivider\">"],"mappings":";AAAA,SAAmB,WAAXA,gBAAyB;;;ACE1B,IAAM,eAAe;AAAA,EAE1B,gBAAgB;AAAA,IACd,MAAM,CACN;AAAA,EACF;AAEF;","names":["default"]}
@@ -0,0 +1,52 @@
1
+ // src/components/elemental/Paper/src/Paper/Paper.tsx
2
+ import Paper from "@mui/material/Paper";
3
+ import { jsx } from "react/jsx-runtime";
4
+ function MuiPaper(props) {
5
+ return /* @__PURE__ */ jsx(Paper, { ...props });
6
+ }
7
+
8
+ // src/components/elemental/Paper/src/Paper/ShinyPaper.tsx
9
+ import Paper2 from "@mui/material/Paper";
10
+ import { styled } from "@mui/material/styles";
11
+ var ShinyPaper = styled(Paper2)({
12
+ "--shiny-paper-shadow-color": "var(--mui-palette-blink-secondary)",
13
+ "--shiny-paper-grey-mix": "color-mix(in lab, var(--mui-palette-grey-A700), transparent 50%)",
14
+ "--shiny-paper-shadow-color-secondary": "color-mix(in lab, var(--shiny-paper-shadow-color), var(--shiny-paper-grey-mix) 50%)",
15
+ "--bs-1": "var(--shiny-paper-shadow-color)",
16
+ "--bs-2": "var(--shiny-paper-shadow-color-secondary)",
17
+ "--bs-3": "var(--shiny-paper-shadow-color)",
18
+ "--bs": `
19
+ 0px 2px 1px -1px var(--bs-1),
20
+ 0px 1px 1px 0px var(--bs-2),
21
+ 0px 1px 3px 0px var(--bs-3)
22
+ `,
23
+ "&.MuiPaper-root": {
24
+ transition: "background-color 0s",
25
+ boxShadow: "var(--bs)"
26
+ }
27
+ });
28
+ var ShinyPaper_default = ShinyPaper;
29
+
30
+ // src/components/elemental/Paper/src/Paper/themes.ts
31
+ var paperTheme = {
32
+ defaultProps: {
33
+ variant: "elevation"
34
+ },
35
+ styleOverrides: {
36
+ root: {
37
+ "--paper-bg": "var(--mui-palette-background-default)",
38
+ backgroundColor: "var(--paper-bg)"
39
+ },
40
+ outlined: {
41
+ "--paper-border-color": "var(--mui-palette-border-1)",
42
+ border: "1px solid var(--paper-border-color)"
43
+ }
44
+ }
45
+ };
46
+
47
+ export {
48
+ MuiPaper,
49
+ ShinyPaper_default,
50
+ paperTheme
51
+ };
52
+ //# sourceMappingURL=chunk-3VUAM2GY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Paper/src/Paper/Paper.tsx","../src/components/elemental/Paper/src/Paper/ShinyPaper.tsx","../src/components/elemental/Paper/src/Paper/themes.ts"],"sourcesContent":["import Paper, { type PaperProps } from '@mui/material/Paper'\n\n/**\n * A wrapper for Mui Paper\n */\nexport default function MuiPaper(props: PaperProps) {\n return <Paper {...props} />\n}\n","'use client'\nimport Paper from '@mui/material/Paper'\nimport { styled } from '@mui/material/styles'\n\n/**\n * Mui Paper boxshadow with a shiny effect\n * \n * [Doc](https://mui.com/material-ui/api/paper/)\n */\nconst ShinyPaper = styled(Paper)({\n '--shiny-paper-shadow-color': 'var(--mui-palette-blink-secondary)',\n '--shiny-paper-grey-mix': 'color-mix(in lab, var(--mui-palette-grey-A700), transparent 50%)',\n '--shiny-paper-shadow-color-secondary': 'color-mix(in lab, var(--shiny-paper-shadow-color), var(--shiny-paper-grey-mix) 50%)',\n\n '--bs-1': 'var(--shiny-paper-shadow-color)',\n '--bs-2': 'var(--shiny-paper-shadow-color-secondary)',\n '--bs-3': 'var(--shiny-paper-shadow-color)',\n '--bs': `\n 0px 2px 1px -1px var(--bs-1),\n 0px 1px 1px 0px var(--bs-2),\n 0px 1px 3px 0px var(--bs-3)\n `,\n\n \"&.MuiPaper-root\":{\n transition:\"background-color 0s\",\n boxShadow: \"var(--bs)\",\n },\n})\nexport default ShinyPaper","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const paperTheme = {\n defaultProps: {\n variant: 'elevation',\n },\n styleOverrides: {\n root: {\n '--paper-bg': 'var(--mui-palette-background-default)',\n backgroundColor: 'var(--paper-bg)',\n },\n outlined: {\n '--paper-border-color': 'var(--mui-palette-border-1)',\n border: '1px solid var(--paper-border-color)',\n },\n }\n\n} as const satisfies MuiComponentTheme<\"MuiPaper\">"],"mappings":";AAAA,OAAO,WAAgC;AAM9B;AADM,SAAR,SAA0B,OAAmB;AAClD,SAAO,oBAAC,SAAO,GAAG,OAAO;AAC3B;;;ACNA,OAAOA,YAAW;AAClB,SAAS,cAAc;AAOvB,IAAM,aAAa,OAAOA,MAAK,EAAE;AAAA,EAC/B,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,wCAAwC;AAAA,EAExC,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMR,mBAAkB;AAAA,IAChB,YAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF,CAAC;AACD,IAAO,qBAAQ;;;AC1BR,IAAM,aAAa;AAAA,EACxB,cAAc;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,IACA,UAAU;AAAA,MACR,wBAAwB;AAAA,MACxB,QAAQ;AAAA,IACV;AAAA,EACF;AAEF;","names":["Paper"]}
@@ -0,0 +1,19 @@
1
+ // src/components/elemental/Tooltip/src/Tooltip/index.ts
2
+ import { default as default2 } from "@mui/material/Tooltip";
3
+
4
+ // src/components/elemental/Tooltip/src/Tooltip/theme.tsx
5
+ var tooltipTheme = {
6
+ defaultProps: {
7
+ arrow: true
8
+ },
9
+ styleOverrides: {
10
+ tooltip: {},
11
+ arrow: {}
12
+ }
13
+ };
14
+
15
+ export {
16
+ tooltipTheme,
17
+ default2 as default
18
+ };
19
+ //# sourceMappingURL=chunk-4Q54P737.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/elemental/Tooltip/src/Tooltip/theme.tsx"],"sourcesContent":["export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const tooltipTheme = {\n defaultProps: {\n arrow: true,\n },\n styleOverrides: {\n tooltip: {},\n arrow: {},\n }\n\n} as const satisfies MuiComponentTheme<\"MuiTooltip\">\n"],"mappings":";AAAA,SAAmB,WAAXA,gBAAyB;;;ACE1B,IAAM,eAAe;AAAA,EAC1B,cAAc;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS,CAAC;AAAA,IACV,OAAO,CAAC;AAAA,EACV;AAEF;","names":["default"]}