@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
package/README.md ADDED
@@ -0,0 +1,110 @@
1
+ # @startdownnotez404/ui
2
+
3
+ React + TypeScript component library for Startdown apps. Built on **MUI v7**, documented in Storybook, published to GitHub Packages.
4
+
5
+ ## Install
6
+
7
+ The package is on GitHub Packages, not the public npm registry. Point `@startdownnotez404` at `https://npm.pkg.github.com` (`.npmrc` or `publishConfig`) and install a published semver:
8
+
9
+ ```json
10
+ {
11
+ "dependencies": {
12
+ "@startdownnotez404/ui": "^1.3.1"
13
+ }
14
+ }
15
+ ```
16
+
17
+ Do not consume unpublished builds via local `npm pack`, `file:../…tgz`, or `npm link`.
18
+
19
+ ### GitHub Release `.tgz` (WebContainer hosts)
20
+
21
+ A push to `main` that bumps `package.json` `version` (or `workflow_dispatch` when Release `v$version` is missing) builds the package, creates GitHub Release **`v$version`**, uploads `startdownnotez404-ui-$version.tgz`, and publishes the same tarball to GitHub Packages. WebContainer cannot reliably fetch `npm.pkg.github.com` or Release URLs; the **host** should download that Release asset and rewrite the dependency to `file:./startdownnotez404-ui-$version.tgz`.
22
+
23
+ ### Peer dependencies
24
+
25
+ Keep these in the host app (they are also listed in this package's `dependencies` for 1.x so existing installs keep working):
26
+
27
+ - `react` / `react-dom`
28
+ - `@mui/material` / `@mui/icons-material` / `@mui/lab`
29
+ - `@emotion/react` / `@emotion/styled`
30
+ - `react-hook-form`
31
+
32
+ ## Usage
33
+
34
+ Wrap the tree with `ThemeProvider` and import CSS if the host does not already load MUI baseline styles:
35
+
36
+ ```tsx
37
+ import { ThemeProvider, Button, UseForm, FIELD_TYPEs } from '@startdownnotez404/ui';
38
+ import type { StrictFormConfig } from '@startdownnotez404/ui';
39
+
40
+ export function App() {
41
+ return (
42
+ <ThemeProvider>
43
+ <Button>Hello</Button>
44
+ </ThemeProvider>
45
+ );
46
+ }
47
+ ```
48
+
49
+ Subpath imports exist for tree-shaking heavy modules, for example `@startdownnotez404/ui/button`, `@startdownnotez404/ui/useForm`, `@startdownnotez404/ui/chart`. `@startdownnotez404/ui/table` is the compound data table (TanStack grid — not MUI table primitives). Overlay helpers are `@startdownnotez404/ui/overlay` (`Popper`, `ClickAwayListener`).
50
+
51
+ Highlighter and layout widgets are **subpath-only**. They are not re-exported from `@startdownnotez404/ui` so Author / WebContainer apps that only need `Button` / `MuiModal` do not evaluate `highlight.js`, `html-react-parser`, `elkjs`, or CodeMirror:
52
+
53
+ ```tsx
54
+ import { Markdown } from '@startdownnotez404/ui/markdown';
55
+ import { FlowMap } from '@startdownnotez404/ui/flowMap';
56
+ import { JsonEditor } from '@startdownnotez404/ui/jsonEditor';
57
+ ```
58
+
59
+ ### Table: compound grid vs MUI markup
60
+
61
+ Import `Table` from `@startdownnotez404/ui` or `@startdownnotez404/ui/table` for the interactive data grid (filters, grouping, forms, `TableEmptyState`).
62
+
63
+ Do **not** expect MUI `TableHead` / `TableRow` / `TableCell` on the public root barrel. Those primitives live at the internal `@/ele/Table` alias and are kept off the published `Table` export so the names do not collide. Simple journal tables in a host app should import from `@mui/material/Table` (and friends) until they need the compound grid.
64
+
65
+ ### Chart
66
+
67
+ Stacked-area (default), line, bar, and pie charts with hover tooltips. The host owns domain math (cumulative totals, currency, “today” markers). Colors are `--chart-*` tokens (series defaults are `color-mix` of hue tokens with scheme chrome); `sx` merges after the defaults:
68
+
69
+ ```tsx
70
+ import { Chart } from '@startdownnotez404/ui';
71
+
72
+ <Chart
73
+ type="bar"
74
+ labels={['Mon', 'Tue', 'Wed']}
75
+ series={[{ id: 'a', label: 'Alpha', values: [1, 3, 2] }]}
76
+ formatY={(value) => String(value)}
77
+ sx={{ '--chart-series-0': 'color-mix(in lab, var(--mui-palette-warning-main) 60%, var(--mui-palette-primary-main))' }}
78
+ />
79
+ ```
80
+
81
+ `type="area"` (default) draws a stacked area with a dotted top stroke. `type="pie"` uses each series as a slice (`hole={0.58}` for a donut). `stacked` groups bars into a stack.
82
+
83
+ Forms use `useConfiguredForm` (deprecated alias: `useForm2`):
84
+
85
+ ```ts
86
+ import { useConfiguredForm, UseForm, FIELD_TYPEs } from '@startdownnotez404/ui';
87
+ ```
88
+
89
+ JSON form fields still work through `UseForm`; the CodeMirror editor is loaded only when a json field renders. Direct `JsonEditor` usage must import `@startdownnotez404/ui/jsonEditor`.
90
+
91
+ ## Develop
92
+
93
+ ```sh
94
+ npm ci
95
+ npm run storybook # http://localhost:6006
96
+ npm run lint
97
+ npm test
98
+ npm run build
99
+ ```
100
+
101
+ Storybook is the visual catalog. Vitest covers hook/state contracts for UseForm, UseSearch, ScrollToLoad, and Table.
102
+
103
+ ## Releases
104
+
105
+ Bump `package.json` `version` on `main` (semver patch or minor). CI then:
106
+
107
+ 1. Detects the version change versus the previous `main` commit (or a missing `v$version` Release, including `workflow_dispatch`).
108
+ 2. Runs `npm ci`, `npm run build`, and `npm pack`.
109
+ 3. Creates GitHub Release `v$version` and uploads `startdownnotez404-ui-$version.tgz`.
110
+ 4. Publishes that tarball to GitHub Packages (`publishConfig` → `npm.pkg.github.com`). There is no npmjs publish.
@@ -0,0 +1,181 @@
1
+ import {
2
+ GitHubPicker
3
+ } from "./chunk-SGCUDWO3.mjs";
4
+ import {
5
+ Option
6
+ } from "./chunk-OJV6V7YZ.mjs";
7
+ import {
8
+ FieldHelperText
9
+ } from "./chunk-MI64T62E.mjs";
10
+ import {
11
+ Explanation_default,
12
+ getFieldExplanation,
13
+ mergeFieldSx
14
+ } from "./chunk-UTVSYS6S.mjs";
15
+ import {
16
+ MuiFormLabel,
17
+ default as default3
18
+ } from "./chunk-T4X375IG.mjs";
19
+ import "./chunk-56TI2ZBT.mjs";
20
+ import "./chunk-MDAUF7IL.mjs";
21
+ import "./chunk-QFF3HTHL.mjs";
22
+ import "./chunk-JIU5GVM7.mjs";
23
+ import "./chunk-4Q54P737.mjs";
24
+ import "./chunk-OP6LKXPA.mjs";
25
+ import "./chunk-ZVFYOXDE.mjs";
26
+ import "./chunk-4RPFRNXG.mjs";
27
+ import {
28
+ default as default2
29
+ } from "./chunk-S6EZVRZC.mjs";
30
+ import "./chunk-FJ6ZGZIA.mjs";
31
+
32
+ // src/components/compound/UseForm/src/Fields/AutocompleteField.tsx
33
+ import React from "react";
34
+ import { Controller, useFormContext } from "react-hook-form";
35
+ import { jsx, jsxs } from "react/jsx-runtime";
36
+ var EMPTY_OPTIONS = [];
37
+ function toOptionClass(option) {
38
+ return option instanceof Option ? option : new Option(option);
39
+ }
40
+ var AutocompleteField = ({ field }) => {
41
+ const acSlot = field.slotProps;
42
+ if (acSlot?.useOptions) {
43
+ return /* @__PURE__ */ jsx(AutocompleteFieldWithOptions, { field, useOptions: acSlot.useOptions });
44
+ }
45
+ return /* @__PURE__ */ jsx(AutocompleteFieldView, { field, options: acSlot?.options ?? EMPTY_OPTIONS });
46
+ };
47
+ var AutocompleteFieldWithOptions = ({
48
+ field,
49
+ useOptions
50
+ }) => {
51
+ const { options = EMPTY_OPTIONS } = useOptions();
52
+ return /* @__PURE__ */ jsx(AutocompleteFieldView, { field, options });
53
+ };
54
+ var AutocompleteFieldView = ({
55
+ field,
56
+ options
57
+ }) => {
58
+ const { control, getValues } = useFormContext();
59
+ const {
60
+ name,
61
+ label,
62
+ required,
63
+ disabled,
64
+ sx,
65
+ size,
66
+ slotProps,
67
+ errorMsg,
68
+ defaultValue
69
+ } = field;
70
+ const acSlot = slotProps;
71
+ const mergedOptions = React.useMemo(
72
+ () => options.map(toOptionClass),
73
+ [options]
74
+ );
75
+ return /* @__PURE__ */ jsx(
76
+ Controller,
77
+ {
78
+ control,
79
+ name,
80
+ defaultValue,
81
+ render: ({ field: { onChange: controllerOnChange, value }, fieldState: { error } }) => /* @__PURE__ */ jsx(
82
+ AutocompletePicker,
83
+ {
84
+ value,
85
+ controllerOnChange,
86
+ mergedOptions,
87
+ acSlot,
88
+ disabled,
89
+ required,
90
+ error,
91
+ errorMsg,
92
+ helperText: field.helperText,
93
+ label,
94
+ size,
95
+ sx,
96
+ explanation: getFieldExplanation(field),
97
+ onFieldChange: (next) => {
98
+ field.onChange?.(next, getValues());
99
+ }
100
+ }
101
+ )
102
+ }
103
+ );
104
+ };
105
+ function AutocompletePicker({
106
+ value,
107
+ controllerOnChange,
108
+ mergedOptions,
109
+ acSlot,
110
+ disabled,
111
+ required,
112
+ error,
113
+ errorMsg,
114
+ helperText,
115
+ label,
116
+ size,
117
+ sx,
118
+ explanation,
119
+ onFieldChange
120
+ }) {
121
+ const [selectedIds, setSelectedIds] = React.useState(
122
+ Array.isArray(value) ? value : value ? [value] : []
123
+ );
124
+ React.useEffect(() => {
125
+ const next = Array.isArray(value) ? value : value ? [value] : [];
126
+ setSelectedIds(next);
127
+ }, [value]);
128
+ return /* @__PURE__ */ jsxs(
129
+ default3,
130
+ {
131
+ disabled,
132
+ required,
133
+ error: !!error,
134
+ fullWidth: true,
135
+ size: "small",
136
+ sx: mergeFieldSx(size, sx),
137
+ children: [
138
+ /* @__PURE__ */ jsxs(default2, { sx: { display: "flex", alignItems: "center", justifyContent: "flex-start" }, children: [
139
+ /* @__PURE__ */ jsx(MuiFormLabel, { component: "legend", children: label }),
140
+ /* @__PURE__ */ jsx(Explanation_default, { explanation })
141
+ ] }),
142
+ /* @__PURE__ */ jsx(default2, { sx: { py: 1 }, children: /* @__PURE__ */ jsx(
143
+ GitHubPicker,
144
+ {
145
+ options: mergedOptions,
146
+ variant: acSlot?.variant,
147
+ color: acSlot?.color,
148
+ multiple: acSlot?.multiple ?? true,
149
+ selectedIdProps: [selectedIds, setSelectedIds],
150
+ onChange: (ids) => {
151
+ if (acSlot?.multiple) {
152
+ controllerOnChange(ids);
153
+ onFieldChange(ids);
154
+ } else {
155
+ const single = Array.isArray(ids) ? ids[0] ?? "" : ids ?? "";
156
+ controllerOnChange(single);
157
+ onFieldChange(single);
158
+ }
159
+ },
160
+ onDelete: (id) => {
161
+ const next = (selectedIds || []).filter((s) => s !== id);
162
+ if (acSlot?.multiple ?? true) {
163
+ controllerOnChange(next);
164
+ onFieldChange(next);
165
+ } else {
166
+ controllerOnChange("");
167
+ onFieldChange("");
168
+ }
169
+ },
170
+ error: !!error
171
+ }
172
+ ) }),
173
+ /* @__PURE__ */ jsx(FieldHelperText, { error, errorMsg, helpers: [helperText] })
174
+ ]
175
+ }
176
+ );
177
+ }
178
+ export {
179
+ AutocompleteField
180
+ };
181
+ //# sourceMappingURL=AutocompleteField-ZKNU2IRR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/compound/UseForm/src/Fields/AutocompleteField.tsx"],"sourcesContent":["import React from 'react';\nimport { Controller, useFormContext, type FieldError } from 'react-hook-form';\nimport { Box } from '@/ele/Box';\nimport { FormLabel, FormControl } from '@/ele/Form';\nimport { FieldHelperText } from '../_utils/helperText';\nimport { GitHubPicker, OptionClass, type OptionParams } from '@/ele/Autocomplete';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\nimport Explanation from './Explanation';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { AutocompleteSlotProps } from '../_utils/slotProps';\n\ninterface AutocompleteFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.autocomplete }>;\n}\n\ntype AutocompleteUseOptions = NonNullable<AutocompleteSlotProps['useOptions']>;\n\nconst EMPTY_OPTIONS: OptionParams[] = [];\n\nfunction toOptionClass(option: OptionParams | OptionClass): OptionClass {\n return option instanceof OptionClass ? option : new OptionClass(option as OptionParams);\n}\n\nexport const AutocompleteField = <T extends FormTypeMap = FormTypeMap>({ field }: AutocompleteFieldProps<T>) => {\n const acSlot = field.slotProps as AutocompleteSlotProps | undefined;\n if (acSlot?.useOptions) {\n return <AutocompleteFieldWithOptions field={field} useOptions={acSlot.useOptions} />;\n }\n return <AutocompleteFieldView field={field} options={acSlot?.options ?? EMPTY_OPTIONS} />;\n};\n\nconst AutocompleteFieldWithOptions = <T extends FormTypeMap>({\n field,\n useOptions,\n}: AutocompleteFieldProps<T> & { useOptions: AutocompleteUseOptions }) => {\n const { options = EMPTY_OPTIONS } = useOptions();\n return <AutocompleteFieldView field={field} options={options} />;\n};\n\nconst AutocompleteFieldView = <T extends FormTypeMap>({\n field,\n options,\n}: AutocompleteFieldProps<T> & { options: OptionParams[] }) => {\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 acSlot = slotProps as AutocompleteSlotProps | undefined;\n const mergedOptions = React.useMemo(\n () => options.map(toOptionClass),\n [options],\n );\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field: { onChange: controllerOnChange, value }, fieldState: { error } }) => (\n <AutocompletePicker\n value={value}\n controllerOnChange={controllerOnChange}\n mergedOptions={mergedOptions}\n acSlot={acSlot}\n disabled={disabled}\n required={required}\n error={error}\n errorMsg={errorMsg}\n helperText={field.helperText}\n label={label}\n size={size}\n sx={sx}\n explanation={getFieldExplanation(field)}\n onFieldChange={(next) => {\n field.onChange?.(next, getValues() as InferFormDataType<T>);\n }}\n />\n )}\n />\n );\n};\n\ntype AutocompletePickerProps = {\n value: unknown;\n controllerOnChange: (value: unknown) => void;\n mergedOptions: OptionClass[];\n acSlot: AutocompleteSlotProps | undefined;\n disabled?: boolean;\n required?: boolean;\n error: FieldError | undefined;\n errorMsg?: string;\n helperText?: string;\n label?: string;\n size?: { width?: number | string; height?: number | string };\n sx?: Record<string, unknown>;\n explanation?: React.ComponentProps<typeof Explanation>['explanation'];\n onFieldChange: (next: unknown) => void;\n};\n\nfunction AutocompletePicker({\n value,\n controllerOnChange,\n mergedOptions,\n acSlot,\n disabled,\n required,\n error,\n errorMsg,\n helperText,\n label,\n size,\n sx,\n explanation,\n onFieldChange,\n}: AutocompletePickerProps) {\n const [selectedIds, setSelectedIds] = React.useState<string[]>(\n Array.isArray(value) ? value : (value ? [value as string] : []),\n );\n\n React.useEffect(() => {\n const next = Array.isArray(value) ? value : (value ? [value as string] : []);\n setSelectedIds(next as string[]);\n }, [value]);\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={explanation} />\n </Box>\n <Box sx={{ py: 1 }}>\n <GitHubPicker\n options={mergedOptions}\n variant={acSlot?.variant}\n color={acSlot?.color}\n multiple={acSlot?.multiple ?? true}\n selectedIdProps={[selectedIds, setSelectedIds]}\n onChange={(ids) => {\n if (acSlot?.multiple) {\n controllerOnChange(ids);\n onFieldChange(ids);\n } else {\n const single = Array.isArray(ids) ? ids[0] ?? '' : ids ?? '';\n controllerOnChange(single);\n onFieldChange(single);\n }\n }}\n onDelete={(id: string) => {\n const next = (selectedIds || []).filter((s) => s !== id);\n if (acSlot?.multiple ?? true) {\n controllerOnChange(next);\n onFieldChange(next);\n } else {\n controllerOnChange('');\n onFieldChange('');\n }\n }}\n error={!!error}\n />\n </Box>\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[helperText]} />\n </FormControl>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -0,0 +1,275 @@
1
+ import {
2
+ Cropper_default
3
+ } from "./chunk-RXBQ7KXF.mjs";
4
+ import {
5
+ AvatarButton
6
+ } from "./chunk-Y74ALKBL.mjs";
7
+ import "./chunk-27KYFU7R.mjs";
8
+ import {
9
+ FieldHelperText
10
+ } from "./chunk-MI64T62E.mjs";
11
+ import {
12
+ Explanation_default,
13
+ getFieldExplanation,
14
+ mergeFieldSx
15
+ } from "./chunk-UTVSYS6S.mjs";
16
+ import "./chunk-EW4DTFH3.mjs";
17
+ import {
18
+ MuiModal
19
+ } from "./chunk-UDREPVEY.mjs";
20
+ import {
21
+ CLASSNAMEs
22
+ } from "./chunk-CWFWRZWU.mjs";
23
+ import "./chunk-HR3A4H4E.mjs";
24
+ import "./chunk-TDRA5EZI.mjs";
25
+ import "./chunk-3DQINB57.mjs";
26
+ import "./chunk-BGB7JHIU.mjs";
27
+ import {
28
+ MuiFormLabel,
29
+ default as default5
30
+ } from "./chunk-T4X375IG.mjs";
31
+ import "./chunk-3VUAM2GY.mjs";
32
+ import "./chunk-56TI2ZBT.mjs";
33
+ import "./chunk-MDAUF7IL.mjs";
34
+ import "./chunk-UMJ5SCIQ.mjs";
35
+ import "./chunk-I5JWS4Z7.mjs";
36
+ import "./chunk-XIMFP6RB.mjs";
37
+ import {
38
+ PreviewableFile
39
+ } from "./chunk-AAH2O24U.mjs";
40
+ import "./chunk-JIU5GVM7.mjs";
41
+ import "./chunk-4Q54P737.mjs";
42
+ import "./chunk-OP6LKXPA.mjs";
43
+ import {
44
+ default79 as default4
45
+ } from "./chunk-ZVFYOXDE.mjs";
46
+ import "./chunk-4RPFRNXG.mjs";
47
+ import {
48
+ default as default2,
49
+ default2 as default3
50
+ } from "./chunk-S6EZVRZC.mjs";
51
+ import "./chunk-FJ6ZGZIA.mjs";
52
+
53
+ // src/components/compound/UseForm/src/Fields/AvatarField.tsx
54
+ import React from "react";
55
+ import { Controller, useFormContext, useWatch } from "react-hook-form";
56
+ import { jsx, jsxs } from "react/jsx-runtime";
57
+ var AVATAR_CROP_CONFIG = { width: 200, unit: "px" };
58
+ var AvatarCropPreview = React.forwardRef((_, ref) => {
59
+ return /* @__PURE__ */ jsx(
60
+ "canvas",
61
+ {
62
+ ref,
63
+ width: 200,
64
+ height: 200,
65
+ style: {
66
+ width: 200,
67
+ height: 200,
68
+ maxWidth: "100%",
69
+ maxHeight: "100%",
70
+ border: "1px dashed grey",
71
+ borderRadius: "50%",
72
+ objectFit: "contain",
73
+ backgroundColor: "transparent"
74
+ }
75
+ }
76
+ );
77
+ });
78
+ AvatarCropPreview.displayName = "AvatarCropPreview";
79
+ function acceptToInputAccept(accept) {
80
+ if (!accept) return "image/*";
81
+ if (typeof accept === "string") return accept;
82
+ const parts = [];
83
+ Object.entries(accept).forEach(([mime, exts]) => {
84
+ parts.push(mime);
85
+ if (Array.isArray(exts)) parts.push(...exts);
86
+ });
87
+ return parts.length ? parts.join(",") : "image/*";
88
+ }
89
+ var AvatarField = ({ field }) => {
90
+ const watchKey = field.slotProps?.watchAvatarNameKey;
91
+ if (watchKey) {
92
+ return /* @__PURE__ */ jsx(AvatarFieldWithNameWatch, { field, watchKey });
93
+ }
94
+ return /* @__PURE__ */ jsx(AvatarFieldView, { field, watchedName: void 0 });
95
+ };
96
+ var AvatarFieldWithNameWatch = ({
97
+ field,
98
+ watchKey
99
+ }) => {
100
+ const { control } = useFormContext();
101
+ const watchedName = useWatch({
102
+ control,
103
+ name: watchKey
104
+ });
105
+ return /* @__PURE__ */ jsx(AvatarFieldView, { field, watchedName });
106
+ };
107
+ var AvatarFieldView = ({
108
+ field,
109
+ watchedName
110
+ }) => {
111
+ const { control, getValues, setValue } = useFormContext();
112
+ const {
113
+ name,
114
+ label,
115
+ required,
116
+ disabled,
117
+ sx,
118
+ size,
119
+ slotProps,
120
+ errorMsg,
121
+ defaultValue
122
+ } = field;
123
+ const avatarSlot = slotProps;
124
+ const [editorOpen, setEditorOpen] = React.useState(false);
125
+ const [editorFiles, setEditorFiles] = React.useState([]);
126
+ const initialFileRef = React.useRef(null);
127
+ const transientBlobUrlsRef = React.useRef([]);
128
+ const inputAccept = acceptToInputAccept(avatarSlot?.accept);
129
+ const backgroundIcon = (typeof avatarSlot?.useBackgroundIcon === "function" ? avatarSlot?.useBackgroundIcon() : null) || avatarSlot?.backgroundIcon;
130
+ const displayNameRaw = (avatarSlot?.watchAvatarNameKey ? watchedName : void 0) ?? avatarSlot?.avatarName ?? avatarSlot?.name ?? "";
131
+ const displayName = String(displayNameRaw ?? "").trim() || void 0;
132
+ return /* @__PURE__ */ jsx(
133
+ Controller,
134
+ {
135
+ control,
136
+ name,
137
+ defaultValue: defaultValue ?? null,
138
+ render: ({ field: { onChange, value }, fieldState: { error } }) => {
139
+ const fileValue = value ?? null;
140
+ const src = fileValue?.url || fileValue?.blobUrl || "";
141
+ const openEditor = () => {
142
+ initialFileRef.current = fileValue;
143
+ setEditorFiles(fileValue ? [fileValue] : []);
144
+ setEditorOpen(true);
145
+ };
146
+ const closeEditor = () => {
147
+ setEditorOpen(false);
148
+ const init = initialFileRef.current;
149
+ setEditorFiles(init ? [init] : []);
150
+ transientBlobUrlsRef.current.forEach((u) => {
151
+ try {
152
+ URL.revokeObjectURL(u);
153
+ } catch {
154
+ }
155
+ });
156
+ transientBlobUrlsRef.current = [];
157
+ };
158
+ const handleSave = async (url) => {
159
+ const next = url ? await new PreviewableFile({ url }).downloadFile() : null;
160
+ if (url) {
161
+ try {
162
+ URL.revokeObjectURL(url);
163
+ } catch {
164
+ }
165
+ }
166
+ onChange(next);
167
+ try {
168
+ setValue(String(name), next, { shouldDirty: true, shouldTouch: true });
169
+ } catch {
170
+ }
171
+ ;
172
+ field.onChange?.(next, getValues());
173
+ initialFileRef.current = next;
174
+ setEditorFiles(next ? [next] : []);
175
+ setEditorOpen(false);
176
+ };
177
+ const onFileSelectFromSelector = (file) => {
178
+ if (!file) {
179
+ setEditorFiles([]);
180
+ return;
181
+ }
182
+ const blobUrl = URL.createObjectURL(file);
183
+ transientBlobUrlsRef.current.push(blobUrl);
184
+ const next = new PreviewableFile({
185
+ path: file.name,
186
+ blobUrl,
187
+ filename: file.name,
188
+ mimeType: file.type,
189
+ size: file.size,
190
+ fileType: file.type.startsWith("image/") ? "image" : "other"
191
+ });
192
+ setEditorFiles([next]);
193
+ };
194
+ return /* @__PURE__ */ jsxs(
195
+ default5,
196
+ {
197
+ className: CLASSNAMEs.compound.useForm.avatarField,
198
+ disabled,
199
+ required,
200
+ error: !!error,
201
+ fullWidth: true,
202
+ size: "small",
203
+ sx: mergeFieldSx(size, sx),
204
+ children: [
205
+ /* @__PURE__ */ jsxs(default3, { direction: "column", alignItems: "center", justifyContent: "center", gap: 0.5, children: [
206
+ /* @__PURE__ */ jsxs(default2, { sx: { display: "flex", alignItems: "center", gap: 1, mb: 1 }, children: [
207
+ /* @__PURE__ */ jsx(MuiFormLabel, { component: "legend", children: label }),
208
+ /* @__PURE__ */ jsx(Explanation_default, { explanation: getFieldExplanation(field) })
209
+ ] }),
210
+ /* @__PURE__ */ jsx(default2, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: /* @__PURE__ */ jsx(default2, { sx: { cursor: disabled ? "not-allowed" : "pointer" }, children: /* @__PURE__ */ jsx(
211
+ AvatarButton,
212
+ {
213
+ onClick: disabled ? void 0 : openEditor,
214
+ size: avatarSlot?.size,
215
+ dim: avatarSlot?.dim,
216
+ name: displayName,
217
+ src,
218
+ backgroundIcon: src ? void 0 : backgroundIcon,
219
+ icon: /* @__PURE__ */ jsx(default4, { fontSize: "small" }),
220
+ "aria-label": label || "Avatar"
221
+ }
222
+ ) }) }),
223
+ /* @__PURE__ */ jsx(FieldHelperText, { error, errorMsg, helpers: [field.helperText] })
224
+ ] }),
225
+ editorOpen ? /* @__PURE__ */ jsx(
226
+ MuiModal,
227
+ {
228
+ className: CLASSNAMEs.elemental.modal,
229
+ openProps: [editorOpen, setEditorOpen],
230
+ onClose: closeEditor,
231
+ title: label || "Avatar",
232
+ size: { w: "70vw", h: "80vh" },
233
+ children: /* @__PURE__ */ jsx(
234
+ default2,
235
+ {
236
+ sx: {
237
+ display: "flex",
238
+ flexDirection: "column",
239
+ height: "100%",
240
+ gap: 2,
241
+ overflow: "hidden"
242
+ },
243
+ children: /* @__PURE__ */ jsx(default2, { sx: { flex: "1 1 auto", minHeight: 0 }, children: /* @__PURE__ */ jsx(
244
+ Cropper_default,
245
+ {
246
+ setImgNull: () => setEditorFiles([]),
247
+ blobUrl: editorFiles?.[0]?.blobUrl || "",
248
+ onSave: handleSave,
249
+ onClear: () => handleSave(""),
250
+ circularCrop: true,
251
+ defaultRatio: 1,
252
+ resizeCropEnabled: true,
253
+ cropConfig: AVATAR_CROP_CONFIG,
254
+ PreviewRenderer: AvatarCropPreview,
255
+ showFileSelector: true,
256
+ fileSelectorAccept: inputAccept,
257
+ fileSelectorButtonLabel: "Select Image",
258
+ onFileSelect: onFileSelectFromSelector
259
+ }
260
+ ) })
261
+ }
262
+ )
263
+ }
264
+ ) : null
265
+ ]
266
+ }
267
+ );
268
+ }
269
+ }
270
+ );
271
+ };
272
+ export {
273
+ AvatarField
274
+ };
275
+ //# sourceMappingURL=AvatarField-SAODT3CZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/compound/UseForm/src/Fields/AvatarField.tsx"],"sourcesContent":["import React from 'react';\nimport { Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { Box, Stack } from '@/ele/Box';\nimport { FormControl, FormLabel } from '@/ele/Form';\nimport { EditIcon } from '@/icons/MuiIcon';\n\nimport { FieldHelperText } from '../_utils/helperText';\nimport { AvatarButton } from '@/ele/Avatar';\nimport { MuiModal } from '@/ele/Modal';\nimport { Cropper } from '@/ele/Image';\n\nimport PreviewableFile from '@/_utils/classes/PreviewableFile';\nimport { FieldConfig, FormTypeMap, InferFormDataType } from '../_utils';\nimport { FIELD_TYPEs } from '../_utils/constants';\nimport type { AvatarSlotProps } from '../_utils/slotProps';\nimport Explanation from './Explanation';\nimport { CLASSNAMEs } from '@/_utils/_const/classNames';\nimport { getFieldExplanation, mergeFieldSx } from '../_utils/helpers';\n\ninterface AvatarFieldProps<T extends FormTypeMap = FormTypeMap> {\n field: Extract<FieldConfig<T>, { type: typeof FIELD_TYPEs.avatar }>;\n}\n\nconst AVATAR_CROP_CONFIG = { width: 200, unit: 'px' } as const;\n\nconst AvatarCropPreview = React.forwardRef<HTMLCanvasElement>((_, ref) => {\n return (\n <canvas\n ref={ref}\n width={200}\n height={200}\n style={{\n width: 200,\n height: 200,\n maxWidth: '100%',\n maxHeight: '100%',\n border: '1px dashed grey',\n borderRadius: '50%',\n objectFit: 'contain',\n backgroundColor: 'transparent',\n }}\n />\n );\n});\n\nAvatarCropPreview.displayName = 'AvatarCropPreview';\n\nfunction acceptToInputAccept(accept: AvatarSlotProps['accept']): string {\n if (!accept) return 'image/*';\n if (typeof accept === 'string') return accept;\n\n const parts: string[] = [];\n Object.entries(accept).forEach(([mime, exts]) => {\n parts.push(mime);\n if (Array.isArray(exts)) parts.push(...exts);\n });\n return parts.length ? parts.join(',') : 'image/*';\n}\n\nexport const AvatarField = <T extends FormTypeMap = FormTypeMap>({ field }: AvatarFieldProps<T>) => {\n const watchKey = (field.slotProps as AvatarSlotProps | undefined)?.watchAvatarNameKey;\n if (watchKey) {\n return <AvatarFieldWithNameWatch field={field} watchKey={watchKey} />;\n }\n return <AvatarFieldView field={field} watchedName={undefined} />;\n};\n\nconst AvatarFieldWithNameWatch = <T extends FormTypeMap>({\n field,\n watchKey,\n}: AvatarFieldProps<T> & { watchKey: string }) => {\n const { control } = useFormContext();\n const watchedName = useWatch({\n control,\n name: watchKey as never,\n });\n return <AvatarFieldView field={field} watchedName={watchedName} />;\n};\n\nconst AvatarFieldView = <T extends FormTypeMap>({\n field,\n watchedName,\n}: AvatarFieldProps<T> & { watchedName: unknown }) => {\n const { control, getValues, setValue } = useFormContext();\n\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 avatarSlot = slotProps as AvatarSlotProps | undefined;\n const [editorOpen, setEditorOpen] = React.useState(false);\n const [editorFiles, setEditorFiles] = React.useState<PreviewableFile[]>([]);\n const initialFileRef = React.useRef<PreviewableFile | null>(null);\n const transientBlobUrlsRef = React.useRef<string[]>([]);\n\n const inputAccept = acceptToInputAccept(avatarSlot?.accept);\n const backgroundIcon = (typeof avatarSlot?.useBackgroundIcon === 'function'\n ? avatarSlot?.useBackgroundIcon()\n : null) || avatarSlot?.backgroundIcon;\n\n const displayNameRaw =\n (avatarSlot?.watchAvatarNameKey ? watchedName : undefined) ??\n avatarSlot?.avatarName ??\n avatarSlot?.name ??\n '';\n const displayName = String(displayNameRaw ?? '').trim() || undefined;\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={(defaultValue ?? null) as PreviewableFile | null}\n render={({ field: { onChange, value }, fieldState: { error } }) => {\n const fileValue = (value ?? null) as PreviewableFile | null;\n const src = fileValue?.url || fileValue?.blobUrl || '';\n\n // unified helper text component\n // use FieldHelperText to render slot or validation messages consistently\n\n const openEditor = () => {\n initialFileRef.current = fileValue;\n setEditorFiles(fileValue ? [fileValue] : []);\n setEditorOpen(true);\n };\n\n const closeEditor = () => {\n setEditorOpen(false);\n const init = initialFileRef.current;\n setEditorFiles(init ? [init] : []);\n\t\t\t// revoke any blob urls created during this editor session\n\t\t\ttransientBlobUrlsRef.current.forEach((u) => {\n\t\t\t\ttry { URL.revokeObjectURL(u); } catch { /* ignore */ }\n\t\t\t});\n\t\t\ttransientBlobUrlsRef.current = [];\n };\n\n const handleSave = async (url: string) => {\n const next = url\n ? await new PreviewableFile({ url }).downloadFile()\n : null;\n\t\t\t// url from Cropper is a blob URL we no longer need once downloaded\n\t\t\tif (url) {\n\t\t\t\ttry { URL.revokeObjectURL(url); } catch { /* ignore */ }\n\t\t\t}\n\n onChange(next);\n // ensure react-hook-form value is set directly as well\n try { setValue(String(name), next, { shouldDirty: true, shouldTouch: true }); } catch { /* ignore */ };\n field.onChange?.(next, getValues() as InferFormDataType<T>);\n\n initialFileRef.current = next;\n setEditorFiles(next ? [next] : []);\n setEditorOpen(false);\n };\n\n // onFileSelect handler used by Cropper's built-in selector\n const onFileSelectFromSelector = (file: File | null) => {\n if (!file) {\n setEditorFiles([]);\n return;\n }\n\n const blobUrl = URL.createObjectURL(file);\n transientBlobUrlsRef.current.push(blobUrl);\n\n const next = new PreviewableFile({\n path: file.name,\n blobUrl,\n filename: file.name,\n mimeType: file.type,\n size: file.size,\n fileType: file.type.startsWith('image/') ? 'image' : 'other',\n });\n\n setEditorFiles([next]);\n };\n\n return (\n <FormControl\n className={CLASSNAMEs.compound.useForm.avatarField}\n disabled={disabled}\n required={required}\n error={!!error}\n fullWidth\n size=\"small\"\n sx={mergeFieldSx(size, sx)}\n >\n <Stack direction=\"column\" alignItems=\"center\" justifyContent=\"center\" gap={0.5}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1 }}>\n <FormLabel component=\"legend\">{label}</FormLabel>\n <Explanation explanation={getFieldExplanation(field)} />\n </Box>\n\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, }}>\n <Box sx={{ cursor: disabled ? 'not-allowed' : 'pointer' }}>\n <AvatarButton\n onClick={disabled ? undefined : openEditor}\n size={avatarSlot?.size}\n dim={avatarSlot?.dim}\n name={displayName}\n src={src}\n backgroundIcon={src ? undefined : backgroundIcon}\n icon={<EditIcon fontSize=\"small\" />}\n aria-label={label || 'Avatar'}\n />\n </Box>\n </Box>\n\n <FieldHelperText error={error} errorMsg={errorMsg} helpers={[field.helperText]} />\n </Stack>\n\n {editorOpen ? (\n <MuiModal\n className={CLASSNAMEs.elemental.modal}\n openProps={[editorOpen, setEditorOpen]}\n onClose={closeEditor}\n title={label || 'Avatar'}\n size={{ w: '70vw', h: '80vh' }}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n gap: 2,\n overflow: 'hidden',\n }}>\n <Box sx={{ flex: '1 1 auto', minHeight: 0 }}>\n <Cropper\n setImgNull={() => setEditorFiles([])}\n blobUrl={editorFiles?.[0]?.blobUrl || ''}\n onSave={handleSave}\n onClear={() => handleSave('')}\n circularCrop\n defaultRatio={1}\n resizeCropEnabled\n cropConfig={AVATAR_CROP_CONFIG}\n PreviewRenderer={AvatarCropPreview}\n showFileSelector\n fileSelectorAccept={inputAccept}\n fileSelectorButtonLabel=\"Select Image\"\n onFileSelect={onFileSelectFromSelector}\n />\n </Box>\n </Box>\n </MuiModal>\n ) : null}\n\n \n </FormControl>\n );\n }}\n />\n );\n};\n"],"mappings":"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","names":["default"]}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import "./chunk-FJ6ZGZIA.mjs";
3
+
4
+ // src/components/elemental/JsonEditor/src/JsonEditor/CodeEditor.tsx
5
+ import CodeMirror from "@uiw/react-codemirror";
6
+ import { json } from "@codemirror/lang-json";
7
+ import { githubLight, githubDark } from "@uiw/codemirror-theme-github";
8
+ import { useColorScheme } from "@mui/material/styles";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var jsonExtensions = [json()];
11
+ var CodeEditor = ({
12
+ value,
13
+ onChange,
14
+ onKeyDown
15
+ }) => {
16
+ const { mode } = useColorScheme();
17
+ const theme = mode === "light" ? githubLight : githubDark;
18
+ return /* @__PURE__ */ jsx(
19
+ CodeMirror,
20
+ {
21
+ theme,
22
+ value,
23
+ width: "100%",
24
+ extensions: jsonExtensions,
25
+ onChange,
26
+ onKeyDown
27
+ }
28
+ );
29
+ };
30
+ var CodeEditor_default = CodeEditor;
31
+ export {
32
+ CodeEditor_default as default
33
+ };
34
+ //# sourceMappingURL=CodeEditor-JF55ZNVD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/JsonEditor/src/JsonEditor/CodeEditor.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport CodeMirror from '@uiw/react-codemirror'\nimport { json } from '@codemirror/lang-json'\nimport { type TextEditorProps, } from 'json-edit-react'\nimport { githubLight, githubDark } from '@uiw/codemirror-theme-github'\nimport { useColorScheme } from '@mui/material/styles'\n\nconst jsonExtensions = [json()]\n\nconst CodeEditor: React.FC<TextEditorProps> = ({\n value,\n onChange,\n onKeyDown,\n}) => {\n const { mode } = useColorScheme()\n const theme = mode===\"light\"?githubLight:githubDark\n\n return (\n <CodeMirror\n theme={theme}\n value={value}\n width=\"100%\"\n extensions={jsonExtensions}\n onChange={onChange}\n onKeyDown={onKeyDown}\n />\n )\n}\n\nexport default CodeEditor\n"],"mappings":";;;;AAEA,OAAO,gBAAgB;AACvB,SAAS,YAAY;AAErB,SAAS,aAAa,kBAAkB;AACxC,SAAS,sBAAsB;AAa3B;AAXJ,IAAM,iBAAiB,CAAC,KAAK,CAAC;AAE9B,IAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,KAAK,IAAI,eAAe;AAChC,QAAM,QAAQ,SAAO,UAAQ,cAAY;AAEzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,OAAM;AAAA,MACN,YAAY;AAAA,MACZ;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,qBAAQ;","names":[]}