@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/elemental/Menu/index.ts","../src/components/elemental/Menu/src/Menu/Menu.tsx","../src/components/elemental/Menu/src/MenuItem.tsx","../src/components/elemental/Menu/src/Menu/index.ts","../src/components/elemental/Menu/src/Menu/theme.ts","../src/components/elemental/Overlay/src/index.ts","../src/components/elemental/Paper/src/Paper/Paper.tsx","../src/components/elemental/Menu/src/useMenu/useMenu.tsx","../src/components/elemental/Menu/src/useMenu/IconMenu.tsx","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/elemental/Button/src/IconButton/IconButton.HoverSpinnin.tsx","../src/components/elemental/Menu/src/DetailMenu/DetailMenu.tsx","../src/components/elemental/Form/src/index.ts","../src/components/elemental/List/src/List/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Menu/src/ModelMenu/ModelMenu.tsx","../src/components/elemental/Menu/src/ModelPicker/ModelPicker.tsx"],"sourcesContent":["export * from './src'","'use client'\nimport { useState ,forwardRef, useImperativeHandle, useMemo, useEffect } from 'react'\nimport MenuList from '@mui/material/MenuList'\nimport ListItemText from '@mui/material/ListItemText'\nimport {styled} from '@mui/material/styles'\n\nimport type {MenuOption,OnItemClickHandler,MenuRef} from '../_utils'\nimport { StyledMenuItem, StyledItemIcon } from '../MenuItem'\n\ntype Props = {\n\toptions: MenuOption[];\n optionHeader?:React.ReactNode;\n extraItemClickHandler?:OnItemClickHandler;\n menuItemProps?:{\n variant?: 'rounded' | 'square';\n fontSize?: React.CSSProperties['fontSize'];\n padding?: React.CSSProperties['padding'];\n };\n initSelected:MenuOption[\"id\"][];\n multiple?:boolean;\n autoFocusItem?:boolean;\n menuRef?:React.RefObject<HTMLUListElement|null> ;\n isIconOnly?:boolean; // if true, only icon will be shown\n sorted?:boolean; // if true, options will be sorted by label\n}\n/**\n * A Mui Menu component\n * \n * @param extraItemClickHandler - a function to be called when an item is clicked\n * \n */\nconst CustomMenuList = forwardRef<MenuRef,Props>(({\n\toptions=[],\n extraItemClickHandler,\n menuItemProps, \n initSelected=[],\n multiple=false,\n autoFocusItem,\n menuRef,\n isIconOnly=false,\n optionHeader,\n sorted=true,\n},ref) => {\n const [localSelected,setLocalSelected] = useState<Props[\"initSelected\"]>(initSelected)\n\n useImperativeHandle(ref, () => ({\n getSelectedItem: () => localSelected,\n \n }), [localSelected])\n\n useEffect(()=>{\n setLocalSelected(initSelected)\n },[initSelected])\n\n const sortedOptions = useMemo(()=>{\n if(!sorted)return options\n return [...options].sort((a, b) => {\n if(a.label && b.label){\n return a.label.toString().localeCompare(b.label.toString())\n }\n return 0\n })\n },[sorted, options])\n\n\treturn (\n\t\t<StyledMenuList ref={menuRef}\n autoFocusItem={autoFocusItem}\n fontSize={menuItemProps?.fontSize}\n padding={menuItemProps?.padding}\n >\n {optionHeader}\n {sortedOptions.map((o, i) => (\n\n <StyledMenuItem key={i} \n selected={localSelected.includes(o.id)}\n customPadding={menuItemProps?.padding}\n customFontSize={menuItemProps?.fontSize}\n onClick={(e)=>{\n if(extraItemClickHandler)extraItemClickHandler(e)\n if(multiple)setLocalSelected(old=>{\n // if already selected, remove it\n if(old.includes(o.id))return old.filter(id=>id!==o.id)\n // else add it\n return [...old,o.id]\n })\n o.onClick?.()\n }}>\n {o.icon && <StyledItemIcon isIconOnly={isIconOnly}>{o.icon}</StyledItemIcon>}\n {o.label && !isIconOnly && <ListItemText>{o.label}</ListItemText>}\n {o.extension}\n </StyledMenuItem>\n\n ))}\n </StyledMenuList>\n\t)\n})\nexport default CustomMenuList\n\ntype CustomMenuListProps = {\n fontSize?: React.CSSProperties['fontSize'];\n padding?: React.CSSProperties['padding'];\n}\nconst StyledMenuList = styled(MenuList,{\n shouldForwardProp: (prop) => \n prop !== 'fontSize'\n && prop !== 'padding',\n})<CustomMenuListProps>(p=>createMenuListTheme(p))\n\ntype StyledMenuListProps = React.ComponentProps<typeof MenuList> & CustomMenuListProps\nexport function createMenuListTheme(p:StyledMenuListProps){\n return {\n \"&.MuiList-root\":{\n padding:\"8px 4px\",\n display:\"flex\",\n flexDirection:\"column\",\n alignContent:\"center\",\n alignItems:\"center\",\n width:\"100%\",\n gap:\"2px\",\n\n \"& li\":{\n width:\"-webkit-fill-available\",\n borderRadius:\"8px\",\n minHeight:\"fit-content\",\n padding:p.padding || \"6px 16px\",\n margin:\"0\",\n overflow:\"hidden\",\n \n \"& .MuiListItemText-primary\":{\n fontSize:p.fontSize || '1rem',\n overflow:\"hidden\",\n textOverflow:\"ellipsis\",\n },\n },\n },\n }\n}","'use client'\nimport React from 'react'\nimport MenuItem from '@mui/material/MenuItem'\nimport ListItemIcon from '@mui/material/ListItemIcon'\nimport { styled } from '@mui/material/styles'\n\nexport const StyledMenuItem = styled(MenuItem,{\n shouldForwardProp: (prop) => prop !== 'customPadding' && prop !== 'customFontSize',\n})<{customPadding?: React.CSSProperties['padding'], customFontSize?: React.CSSProperties['fontSize']}>(({ customPadding, customFontSize }) => ({\n width: \"-webkit-fill-available\",\n borderRadius: \"8px\",\n minHeight: \"fit-content\",\n padding: customPadding || \"6px 16px\",\n margin: \"0\",\n overflow: \"hidden\",\n gap: \"4px\",\n\n \"& .MuiListItemText-primary\": {\n fontSize: customFontSize || '1rem',\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n}));\n\nexport const StyledItemIcon = styled(ListItemIcon,{\n shouldForwardProp: (prop) => prop !== 'isIconOnly',\n})<{isIconOnly?:boolean}>({\n \"&.MuiListItemIcon-root\":{\n minWidth: \"var(--minW)\",\n },\n\n variants:[\n {\n props:{isIconOnly:true},\n style:{\n '--minW':\"0\",\n },\n },\n {\n props:{isIconOnly:false},\n style:{\n '--minW':\"auto\",\n },\n },\n {\n props:{isIconOnly:undefined}, // default\n style:{\n '--minW':\"auto\",\n }\n }\n ]\n})\n","export {default as Menu} from './Menu'\nexport {default as MenuItem} from '@mui/material/MenuItem'\nexport * from './theme'","import type { MuiComponentTheme } from '@/_utils/_types'\n\nexport const menuItemTheme = {\n defaultProps: {\n },\n styleOverrides: {\n root: {\n '--menu-item-hover-bg': 'var(--mui-palette-background-hover-1)',\n '--menu-item-selected-bg': 'var(--mui-palette-focus-1)',\n\n \"&:hover\":{\n backgroundColor:\"var(--menu-item-hover-bg)\",\n },\n \"&.Mui-selected:before\":{\n width:\"100%\",\n height:\"100%\",\n content:\"''\",\n position:\"absolute\",\n left:0,\n top:0,\n backgroundColor:\"var(--menu-item-selected-bg)\",\n overflow:\"hidden\",\n },\n\n \"& svg\":{\n fontSize:\"1.2rem\",\n },\n \n },\n\n }\n\n} as const satisfies MuiComponentTheme<\"MuiMenuItem\">\n\nexport const menuTheme = {\n styleOverrides: {\n \n },\n} as const satisfies MuiComponentTheme<\"MuiMenu\">","export { default as ClickAwayListener } from '@mui/material/ClickAwayListener';\nexport { default as Popper } from '@mui/material/Popper';\n","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 { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport { Paper } from '@/ele/Paper'\nimport { useState, useRef } from 'react'\n\nimport {Menu} from '../Menu'\nimport type { \n\tMenuOption, \n\tOnItemClickClientArg, OnTriggerClickHandler,\n\tMenuRef,\n} from '../_utils'\n\ntype MenuPopperProps = {\n\toptions: MenuOption[];\n\tplacement?: React.ComponentProps<typeof Popper>[\"placement\"];\n\topenMenuProps: OpenMenuProps;\n\tmenuItemProps?: React.ComponentProps<typeof Menu>[\"menuItemProps\"];\n\toptionHeader?: React.ComponentProps<typeof Menu>[\"optionHeader\"];\n}\n\n/**\n * A Mui Menu component that is triggered by an icon button.\n */\nexport const MenuPopper = ({\n\tplacement=\"bottom-start\",\n\toptions=[],\n\topenMenuProps,\n\tmenuItemProps,\n\toptionHeader,\n}: MenuPopperProps) => {\n\tconst {\n\t\tcloseHandler,\n\t\tanchorEl,\n\t\tonItemClickClientArg,\n\t\tmultiple,\n\t\tref,\n\t\tmenuRef,\n\t\tinitSelected,\n\t\tsorted=true,\n\t} = openMenuProps;\n\n\tconst open = Boolean(anchorEl)\n\n\treturn (\n\t\t<Popper\n\t\t\topen={open}\n\t\t\tanchorEl={anchorEl}\n\t\t\tplacement={placement}\n\t\t\tsx={{ zIndex: \"1301\" }}\n\t\t\tmodifiers={[{\n\t\t\t\tname: 'offset',\n\t\t\t\toptions: { offset: [0, 8] }\n\t\t\t}]}\n\t\t>\n\t\t\t<Paper\n\t\t\t\tvariant='outlined'\n\t\t\t\tsx={{\n\t\t\t\t\t\"&.MuiPaper-root\":{\n\t\t\t\t\t\tpr:1,\n\t\t\t\t\t\tminWidth:150,\n\t\t\t\t\t\tmaxHeight:300,\n\t\t\t\t\t\tborderRadius:\"16px\",\n\t\t\t\t\t\toverflow:\"hidden\",\n\t\t\t\t\t\tdisplay:\"flex\",\n\t\t\t\t\t\tflexDirection:\"column\",\n\n\t\t\t\t\t\t\"& .MuiList-root\":{\n\t\t\t\t\t\t\tdisplay:\"flex\",\n\t\t\t\t\t\t\tflexDirection:\"column\",\n\t\t\t\t\t\t\talignContent:\"center\",\n\t\t\t\t\t\t\talignItems:\"center\",\n\t\t\t\t\t\t\twidth:\"100%\",\n\t\t\t\t\t\t\toverflowY:\"auto\",\n\t\t\t\t\t\t\theight:\"100%\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"& li\":{\n\t\t\t\t\t\t\twidth:\"100%\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ClickAwayListener onClickAway={closeHandler}>\n\t\t\t\t\t<Menu \n\t\t\t\t\t\tref={ref} \n\t\t\t\t\t\tmenuRef={menuRef}\n\t\t\t\t\t\tautoFocusItem={open}\n\t\t\t\t\t\tmenuItemProps={menuItemProps}\n\t\t\t\t\t\toptionHeader={optionHeader}\n\t\t\t\t\t\toptions={options} \n\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\tinitSelected={initSelected}\n\t\t\t\t\t\textraItemClickHandler={(e) => {\n\t\t\t\t\t\t\tif(onItemClickClientArg) onItemClickClientArg({event:e, closeHandler})\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsorted={sorted}\n\t\t\t\t\t/>\n\t\t\t\t</ClickAwayListener>\n\t\t\t</Paper>\n\t\t</Popper>\n\t)\n}\n\nexport type OpenMenuProps = {\n\tanchorEl: HTMLButtonElement | HTMLDivElement | null;\n\tanchorPosition: {top:number; left:number};\n\tonTriggerClickHandler: OnTriggerClickHandler;\n\tonItemClickClientArg?: OnItemClickClientArg;\n\tcloseHandler: (event?: Event | React.SyntheticEvent) => void;\n\tmultiple?: boolean;\n\tref: React.RefObject<MenuRef | null>;\n\tmenuRef: React.RefObject<HTMLUListElement | null>;\n\tinitSelected: MenuOption[\"id\"][];\n\tsorted?: boolean;\n}\n\ntype UseMenuProps = {\n\tonItemClickClientArg?: OnItemClickClientArg;\n\tmultiple?: boolean;\n\tinitSelected?: OpenMenuProps[\"initSelected\"];\n\tsetSelected?: React.Dispatch<React.SetStateAction<MenuOption[\"id\"][]>>;\n}\n\nexport default function useMenu({\n\tonItemClickClientArg,\n\tmultiple=false,\n\tinitSelected=[],\n\tsetSelected,\n}: UseMenuProps): OpenMenuProps {\n\tconst [anchorEl, setAnchorEl] = useState<OpenMenuProps[\"anchorEl\"]>(null)\n\tconst [anchorPosition, setAnchorPosition] = useState<OpenMenuProps[\"anchorPosition\"]>({top:0, left:0})\n\tconst ref = useRef<MenuRef|null>(null)\n\tconst menuRef = useRef<HTMLUListElement|null>(null)\n\n\tconst closeHandler = (event?: Event | React.SyntheticEvent) => {\n\t\t// if the anchor element contains the event target, then return\n\t\tif (\n\t\t\tevent\n\t\t\t&& menuRef.current\n\t\t\t&& event.target instanceof Node\n\t\t\t&& menuRef.current.contains(event.target)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// update the selected value if setSelected is provided and multiple is true\n\t\tif(setSelected && multiple){\n\t\t\tconst localSelected = ref.current?.getSelectedItem()\n\t\t\t// only update the selected value if the selected value is an array\n\t\t\tif(localSelected && Array.isArray(localSelected)){\n\t\t\t\tsetSelected(localSelected)\n\t\t\t}\n\t\t}\n\t\tsetAnchorEl(null)\n\t}\n\n\tconst onTriggerClickHandler: OnTriggerClickHandler = (event) => {\n\t\tconst bottom = event.clientY\n\t\tconst right = event.clientX\n\t\n\t\tsetAnchorEl(event.currentTarget)\n\t\tsetAnchorPosition({top:bottom, left:right})\n\t}\n\n\treturn {\n\t\tanchorEl, \n\t\tanchorPosition,\n\t\tonTriggerClickHandler,\n\t\tonItemClickClientArg,\n\t\tcloseHandler,\n\t\tmultiple,\n\t\tref,\n\t\tinitSelected,\n\t\tmenuRef,\n\t}\n}","'use client'\nimport { useMemo } from 'react'\n\nimport { IconButton, IconButtonSpin } from '@/ele/Button'\n\nimport useMenu, { MenuPopper, type OpenMenuProps } from './useMenu'\nimport type { \n\tOnItemClickClientArg, \n\tMenuOption,\n} from '../_utils'\n\n// allow the CustomTriggerBtn to be a button or a div\nexport type TriggerBtnIconProps = {\n\ticon?: React.ReactNode;\n\ttitle?: string;\n\ticonSize?: \"small\" | \"medium\" | \"large\";\n\tonItemClickClientArg?: OnItemClickClientArg;\n\tisSpinButton?: boolean;\n} & Omit<React.ComponentProps<typeof IconButton>,\"title\"|\"size\"|\"children\"|\"onClick\">;\n\nexport type IconMenuListSlots = {\n\t/**\n\t * The component used for the trigger button.\n\t * Defaults to IconButton (or IconButtonSpin if isSpinButton is true).\n\t */\n\ttrigger?: React.ElementType;\n}\n\nexport type IconMenuListSlotProps = {\n\t/**\n\t * Props passed to the trigger component.\n\t */\n\ttrigger?: TriggerBtnIconProps;\n\t/**\n\t * Props passed to the MenuPopper component (logic props).\n\t */\n\tmenu?: Partial<OpenMenuProps>;\n\t/**\n\t * Props passed to the menu items.\n\t */\n\tmenuItem?: React.ComponentProps<typeof MenuPopper>[\"menuItemProps\"];\n\t/**\n\t * Props/Content for the option header.\n\t */\n\toptionHeader?: React.ComponentProps<typeof MenuPopper>[\"optionHeader\"];\n\t/**\n\t * Props passed to the Popper component.\n\t */\n\tpopper?: Omit<React.ComponentProps<typeof MenuPopper>, 'openMenuProps' | 'options' | 'menuItemProps' | 'optionHeader'>;\n}\n\nexport type IconMenuListProps = {\n\toptions: MenuOption[];\n\tslots?: IconMenuListSlots;\n\tslotProps?: IconMenuListSlotProps;\n}\n\n/**\n * A Mui Menu component that is triggered by an icon button.\n */\nconst IconMenuList = (props: IconMenuListProps) => {\n\tconst {\n\t\toptions=[],\n\t\tslots={},\n\t\tslotProps={},\n\t} = props;\n\n\tconst {\n\t\ttrigger: triggerProps = {},\n\t\tmenu: menuProps,\n\t\tmenuItem: menuItemProps,\n\t\toptionHeader: optionHeaderProps,\n\t\tpopper: popperProps,\n\t} = slotProps;\n\n\tconst {\n\t\ttitle,\n\t\tonItemClickClientArg,\n\t\ticon,\n\t\ticonSize=\"small\",\n\t\tisSpinButton,\n\t\t...triggerExtraProps\n\t} = triggerProps;\n\t\n\tconst p = useMenu({\n\t\tonItemClickClientArg:(p)=>{\n\t\t\tif(p.closeHandler)p.closeHandler()\n\t\t\tif(onItemClickClientArg)onItemClickClientArg(p)\n\t\t},\n\t})\n\n\tconst Trigger = useMemo(() => {\n\t\tif (slots.trigger) return slots.trigger;\n\t\tif (isSpinButton) {\n\t\t\treturn IconButtonSpin;\n\t\t} else {\n\t\t\treturn IconButton;\n\t\t}\n\t}, [isSpinButton, slots.trigger]);\n\n\treturn (\n\t\t// dont use Box here, it will cause the Button tooltip render differently\n\t\t// the height of the tooltip will be a bit off from IconButton\n\t\t<>\n\t\t\t<Trigger \n\t\t\t\ttitle={title} \n\t\t\t\tonClick={p.onTriggerClickHandler}\n\t\t\t\tsize={iconSize}\n\t\t\t\t{...triggerExtraProps}\n\t\t\t>\n\t\t\t\t{icon}\n\t\t\t</Trigger>\n\n\t\t\t<MenuPopper \n\t\t\t\topenMenuProps={{\n\t\t\t\t\t...p,\n\t\t\t\t\t...menuProps,\n\t\t\t\t}}\n\t\t\t\toptionHeader={optionHeaderProps}\n\t\t\t\toptions={options}\n\t\t\t\tmenuItemProps={menuItemProps}\n\t\t\t\t{...popperProps}\n\t\t\t/>\n\t\t</>\n\t)\n}\n\nexport default IconMenuList","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\n","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n","'use client'\nimport {forwardRef} from 'react'\nimport MuiIconButton from '@mui/material/IconButton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { type TooltipProps } from '@mui/material/Tooltip'\nimport { Box } from '@/ele/Box'\n\ntype IconButtonProps = React.ComponentProps<typeof MuiIconButton>\ntype Props = {\n /** The Icon to render */\n children: React.ReactNode;\n /** The title of the tooltip */\n title?: string;\n /** \n * The color theme of the entire component.\n * @default 'secondary' (from theme)\n */\n color?: IconButtonProps['color'];\n /**\n * The size of the component.\n * @default 'small' (from theme)\n */\n size?: IconButtonProps['size'];\n \n selected?: boolean;\n \n slotProps?: {\n tooltip?: Omit<TooltipProps, \"children\">\n };\n} & Omit<IconButtonProps, \"color\" | \"size\">;\n\n/**\n * A MuiIconButton wrapped in a MuiTooltip.\n * Default props like `size` and `color` are handled by the theme.\n */\nconst IconButton = forwardRef<HTMLButtonElement, Props>(({\n title = \"\",\n children,\n color,\n size,\n slotProps,\n selected,\n className,\n ...props\n}, ref) => {\n return (\n <Tooltip \n title={title} \n slotProps={{\n popper: {\n sx: {\n textTransform: \"capitalize\",\n }\n },\n ...slotProps?.tooltip\n }}\n >\n <Box component=\"span\" sx={{width: \"fit-content\"}}>\n <MuiIconButton\n ref={ref}\n color={color}\n size={size}\n className={[className, selected ? 'Mui-selected' : ''].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </MuiIconButton>\n </Box>\n </Tooltip>\n )\n})\n\nexport default IconButton","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","'use client'\nimport { styled } from '@mui/material/styles'\n\nimport IconButton from './IconButton'\n\nexport default styled(IconButton)({\n \"&:hover svg\": {\n transform:\"rotate(360deg)\",\n transition:\"transform 0.3s ease-in-out\",\n },\n})","'use client'\n\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { InputAdornment } from '@/ele/Form'\nimport InputBase from '@mui/material/InputBase'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport type { PopperPlacementType } from '@mui/material/Popper'\nimport type { PaperProps } from '@mui/material/Paper'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nimport { Box } from '@/ele/Box'\nimport { List, ListItemButton } from '@/ele/List'\nimport { Paper } from '@/ele/Paper'\nimport { Typography } from '@/ele/Typography'\nimport { ClearIcon, SearchIcon } from '@/icons/MuiIcon'\nimport { IconButton } from '@/ele/Button'\nimport { mergeSx } from '@/_utils/_func'\n\nexport type DetailMenuOption = {\n id: string\n label: string\n /** Side-panel description when this option is hovered / focused. */\n detail?: string\n icon?: React.ReactNode\n /** Accent for detail title + selected checkmark. */\n accentColor?: string\n /** Extra text included in search matching (label is always searched). */\n keywords?: string\n /** Short pill rendered after the label (e.g. \"Fast\", \"High\"). Included in search. */\n badge?: string\n /**\n * Free-form content rendered at the bottom of this option's detail panel —\n * a slot for host-owned controls (e.g. a per-model config selector).\n * DetailMenu never interprets it.\n */\n detailSlot?: React.ReactNode\n /** Section label — an uppercase header renders above the first option of each distinct group. */\n group?: string\n /** Hide behind the \"N more\" footer row until expanded (click). Ignored while searching. */\n collapsed?: boolean\n /**\n * Trailing per-option action (e.g. a settings gear), revealed on row\n * hover/focus. Clicks inside it never trigger option selection.\n */\n actionSlot?: React.ReactNode\n}\n\ntype DetailMenuPaperSlotProps = {\n sx?: SxProps<Theme>\n} & Omit<PaperProps, 'sx' | 'children' | 'elevation'>\n\nexport type DetailMenuProps = {\n anchorEl: HTMLElement | null\n options: readonly DetailMenuOption[]\n selectedId?: string | null\n onClose: () => void\n onSelect: (id: string) => void\n placement?: PopperPlacementType\n /** Show a filter field above the list. Default false. */\n searchable?: boolean\n searchPlaceholder?: string\n /** Hover/focus preview panel beside the list. Default true. */\n showDetailPanel?: boolean\n emptySearchText?: string\n /** Label for the collapsed-options footer row (only relevant when options use `collapsed`). */\n collapsedRowLabel?: (hiddenCount: number) => string\n /**\n * Free-form footer under the option list (e.g. \"Add Models\").\n * Rendered inside the list Paper, below the scrollable list.\n */\n footerSlot?: React.ReactNode\n maxListHeight?: number | string\n listMinWidth?: number | string\n listMaxWidth?: number | string\n detailWidth?: number | string\n /**\n * Props forwarded to the list Paper (`paper`) and hover detail Paper\n * (`detailPaper`). `sx` merges after DetailMenu defaults.\n */\n slotProps?: {\n paper?: DetailMenuPaperSlotProps\n detailPaper?: DetailMenuPaperSlotProps\n }\n}\n\n/**\n * Anchored select menu with optional search and a hover detail panel —\n * the graph/mode-menu pattern used in the composer dock.\n */\nexport function DetailMenu({\n anchorEl,\n options,\n selectedId = null,\n onClose,\n onSelect,\n placement = 'top-start',\n searchable = false,\n searchPlaceholder = 'Search…',\n showDetailPanel = true,\n emptySearchText = 'No matches',\n collapsedRowLabel = (count) => `${count} more`,\n footerSlot,\n maxListHeight = 280,\n listMinWidth = 196,\n listMaxWidth = 260,\n detailWidth = 180,\n slotProps,\n}: DetailMenuProps) {\n const open = Boolean(anchorEl)\n const [hoveredId, setHoveredId] = useState<string | null>(null)\n const [query, setQuery] = useState('')\n const [expanded, setExpanded] = useState(false)\n const [detailSide, setDetailSide] = useState<'left' | 'right'>('right')\n const [detailTop, setDetailTop] = useState(0)\n const searchRef = useRef<HTMLInputElement>(null)\n const rootRef = useRef<HTMLDivElement>(null)\n const listRef = useRef<HTMLUListElement | null>(null)\n const detailPaperRef = useRef<HTMLDivElement | null>(null)\n\n const eventOriginatedInside = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current\n if (!root) {\n return false\n }\n // composedPath keeps nodes that React may have unmounted during this\n // same click (e.g. the \"N more\" expand row). event.target alone is\n // unreliable after that update and would false-positive click-away.\n const path =\n typeof event.composedPath === 'function'\n ? event.composedPath()\n : [event.target]\n return path.some(\n (node) => node instanceof Node && (node === root || root.contains(node)),\n )\n }\n\n const { sx: paperSlotSx, ...paperSlotProps } = slotProps?.paper ?? {}\n const { sx: detailPaperSlotSx, ...detailPaperSlotProps } =\n slotProps?.detailPaper ?? {}\n\n const filteredOptions = useMemo(() => {\n const normalized = query.trim().toLowerCase()\n if (!normalized) {\n return options\n }\n\n return options.filter((option) => {\n const haystack = [option.label, option.detail, option.badge, option.keywords]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n return haystack.includes(normalized)\n })\n }, [options, query])\n\n // Searching bypasses collapse so hidden options still match.\n const showCollapsed = expanded || query.trim().length > 0\n const visibleOptions = showCollapsed\n ? filteredOptions\n : filteredOptions.filter((option) => !option.collapsed)\n const hiddenCount = filteredOptions.length - visibleOptions.length\n\n const updateDetailPosition = React.useCallback(() => {\n const root = rootRef.current\n if (!root || !showDetailPanel) {\n return\n }\n\n const nextSide = resolveDetailSide(root, toCssPixels(detailWidth, 180))\n setDetailSide((current) => (current === nextSide ? current : nextSide))\n\n if (!hoveredId) {\n return\n }\n\n const row = root.querySelector(\n `[data-detail-menu-option=\"${CSS.escape(hoveredId)}\"]`,\n )\n if (!(row instanceof HTMLElement)) {\n return\n }\n\n const rootRect = root.getBoundingClientRect()\n const rowRect = row.getBoundingClientRect()\n let top = rowRect.top - rootRect.top\n\n // Keep the detail panel inside the viewport when the row is near the bottom.\n const detailHeight = detailPaperRef.current?.offsetHeight ?? 0\n if (detailHeight > 0) {\n const overflow =\n rowRect.top + detailHeight - (window.innerHeight - VIEWPORT_PAD_PX)\n if (overflow > 0) {\n top -= overflow\n }\n }\n\n setDetailTop((current) =>\n Math.abs(current - top) < 0.5 ? current : top,\n )\n }, [detailWidth, hoveredId, showDetailPanel])\n\n const updateDetailPositionRef = useRef(updateDetailPosition)\n updateDetailPositionRef.current = updateDetailPosition\n\n useLayoutEffect(() => {\n if (!open || !showDetailPanel) {\n return\n }\n updateDetailPosition()\n // Second pass after the detail panel has painted so viewport clamping\n // can use the real height.\n const id = window.requestAnimationFrame(() => updateDetailPosition())\n return () => window.cancelAnimationFrame(id)\n }, [open, showDetailPanel, hoveredId, updateDetailPosition])\n\n useEffect(() => {\n if (!open || !showDetailPanel) {\n return\n }\n\n const onResize = () => updateDetailPosition()\n window.addEventListener('resize', onResize)\n const list = listRef.current\n list?.addEventListener('scroll', onResize, { passive: true })\n return () => {\n window.removeEventListener('resize', onResize)\n list?.removeEventListener('scroll', onResize)\n }\n }, [open, showDetailPanel, updateDetailPosition])\n\n // Replaced by updateDetailPosition — keep a thin alias for the popper modifier.\n const updateDetailSideRef = updateDetailPositionRef\n\n useEffect(() => {\n if (!open) {\n setHoveredId(null)\n setQuery('')\n setExpanded(false)\n setDetailSide('right')\n setDetailTop(0)\n return\n }\n\n setHoveredId(selectedId || options[0]?.id || null)\n\n if (searchable) {\n // Defer so Popper mounts before focusing.\n const id = window.requestAnimationFrame(() => {\n searchRef.current?.focus()\n })\n return () => window.cancelAnimationFrame(id)\n }\n }, [open, options, selectedId, searchable])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n if (visibleOptions.length === 0) {\n setHoveredId(null)\n return\n }\n\n setHoveredId((current) => {\n if (current && visibleOptions.some((option) => option.id === current)) {\n return current\n }\n if (selectedId && visibleOptions.some((option) => option.id === selectedId)) {\n return selectedId\n }\n return visibleOptions[0]?.id ?? null\n })\n }, [visibleOptions, open, selectedId])\n\n const hoveredOption =\n visibleOptions.find((option) => option.id === hoveredId) ??\n visibleOptions.find((option) => option.id === selectedId) ??\n visibleOptions[0]\n\n const paperSx = {\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 2.5,\n overflow: 'hidden',\n bgcolor: 'color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)',\n boxShadow: '0 12px 32px color-mix(in srgb, var(--mui-palette-common-black), transparent 78%)',\n } as const\n\n const detailPositionSx =\n detailSide === 'left'\n ? { right: 'calc(100% + 8px)', left: 'auto' }\n : { left: 'calc(100% + 8px)', right: 'auto' }\n\n const flipFallbacks =\n placement.startsWith('right')\n ? (['left-start', 'right-end', 'left-end'] as const)\n : placement.startsWith('left')\n ? (['right-start', 'left-end', 'right-end'] as const)\n : (['bottom-start', 'top-start'] as const)\n\n return (\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement={placement}\n modifiers={[\n { name: 'offset', options: { offset: [0, 10] } },\n { name: 'preventOverflow', options: { padding: 8 } },\n // Keep start-aligned so the list stays under the chip; end placements\n // misalign when a wide absolute detail panel exists beside the list.\n // Side placements (ModelPicker flyout) flip left/right instead of up.\n { name: 'flip', options: { fallbackPlacements: [...flipFallbacks] } },\n {\n name: 'detailSide',\n enabled: true,\n phase: 'write',\n fn() {\n updateDetailSideRef.current()\n },\n },\n ]}\n sx={{ zIndex: (theme) => theme.zIndex.modal + 2 }}\n >\n <ClickAwayListener\n onClickAway={(event) => {\n if (eventOriginatedInside(event)) {\n return\n }\n onClose()\n }}\n >\n {/*\n Popper measures this root. Keep it sized to the list only —\n the detail panel is absolutely positioned so it does not widen\n the measured box or pull the list left under flip/end alignment.\n */}\n <Box\n ref={rootRef}\n onKeyDown={(event) => {\n if (event.key === 'Tab' && hiddenCount > 0) {\n // Keep focus inside and reveal the collapsed options.\n event.preventDefault()\n setExpanded(true)\n }\n }}\n sx={{\n position: 'relative',\n display: 'inline-block',\n verticalAlign: 'top',\n }}\n >\n <Paper\n elevation={0}\n {...paperSlotProps}\n sx={mergeSx(\n { ...paperSx, minWidth: listMinWidth, maxWidth: listMaxWidth },\n paperSlotSx,\n )}\n >\n {searchable ? (\n <Box\n sx={{\n px: 1,\n pt: 1,\n pb: 0.5,\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <InputBase\n inputRef={searchRef}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation()\n if (query) {\n setQuery('')\n return\n }\n onClose()\n }\n }}\n placeholder={searchPlaceholder}\n fullWidth\n startAdornment={\n <InputAdornment position=\"start\" sx={{ mr: 0.5 }}>\n <SearchIcon sx={{ fontSize: 16, color: 'text.secondary' }} />\n </InputAdornment>\n }\n endAdornment={\n query ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label=\"Clear search\"\n onClick={() => {\n setQuery('')\n searchRef.current?.focus()\n }}\n sx={{ p: 0.25 }}\n >\n <ClearIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n sx={{\n px: 0.75,\n py: 0.35,\n fontSize: '0.82rem',\n borderRadius: 1.5,\n bgcolor: 'action.hover',\n '& .MuiInputBase-input': {\n py: 0.4,\n },\n }}\n />\n </Box>\n ) : null}\n\n <List\n ref={listRef}\n dense\n disablePadding\n sx={{\n py: 0.5,\n maxHeight: maxListHeight,\n overflowY: 'auto',\n }}\n >\n {visibleOptions.length === 0 && hiddenCount === 0 ? (\n <Box sx={{ px: 1.5, py: 1.25 }}>\n <Typography\n variant=\"body2\"\n sx={{ fontSize: '0.78rem', color: 'text.secondary', m: 0 }}\n >\n {emptySearchText}\n </Typography>\n </Box>\n ) : (\n <>\n {visibleOptions.map((option, index) => {\n const selected = option.id === selectedId\n const hovered = option.id === hoveredId\n const accent = option.accentColor\n const showGroupHeader =\n option.group != null &&\n (index === 0 || visibleOptions[index - 1]?.group !== option.group)\n\n return (\n <React.Fragment key={option.id}>\n {showGroupHeader ? (\n <Typography\n component=\"div\"\n sx={{\n px: 1.5,\n pt: 1,\n pb: 0.25,\n fontSize: '0.66rem',\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: 'text.secondary',\n m: 0,\n }}\n >\n {option.group}\n </Typography>\n ) : null}\n <ListItemButton\n selected={selected}\n data-detail-menu-option={option.id}\n onMouseEnter={() => setHoveredId(option.id)}\n onFocus={() => setHoveredId(option.id)}\n onClick={() => onSelect(option.id)}\n sx={{\n mx: 0.5,\n my: 0.15,\n px: 1,\n py: 0.85,\n gap: 1,\n borderRadius: 1.75,\n alignItems: 'center',\n '& .detail-menu-action': { opacity: 0 },\n '&:hover .detail-menu-action, &:focus-within .detail-menu-action':\n { opacity: 1 },\n '&.Mui-selected': {\n bgcolor:\n 'color-mix(in srgb, var(--mui-palette-action-selected), transparent 55%)',\n },\n '&.Mui-selected:hover': {\n bgcolor:\n 'color-mix(in srgb, var(--mui-palette-action-selected), transparent 35%)',\n },\n ...(hovered && !selected\n ? {\n bgcolor:\n 'color-mix(in srgb, var(--mui-palette-action-hover), transparent 40%)',\n }\n : null),\n }}\n >\n {option.icon ? (\n <Box\n sx={{\n width: 22,\n height: 22,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n {option.icon}\n </Box>\n ) : null}\n <Typography\n sx={{\n flex: 1,\n minWidth: 0,\n fontSize: '0.82rem',\n fontWeight: selected ? 700 : 600,\n color: selected && accent ? accent : 'text.primary',\n lineHeight: 1.2,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n m: 0,\n }}\n >\n {option.label}\n </Typography>\n {option.badge ? (\n <Typography\n component=\"span\"\n sx={{\n flexShrink: 0,\n fontSize: '0.72rem',\n fontWeight: 500,\n color: 'text.secondary',\n m: 0,\n }}\n >\n {option.badge}\n </Typography>\n ) : null}\n {option.actionSlot ? (\n <Box\n component=\"span\"\n className=\"detail-menu-action\"\n onClick={(event) => event.stopPropagation()}\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 18,\n flexShrink: 0,\n color: 'text.secondary',\n transition: 'opacity 120ms',\n }}\n >\n {option.actionSlot}\n </Box>\n ) : null}\n </ListItemButton>\n </React.Fragment>\n )\n })}\n {hiddenCount > 0 ? (\n <ListItemButton\n onMouseDown={(event) => {\n // Keep the click inside this menu — expanding unmounts\n // this row, which would otherwise look like a click-away.\n event.preventDefault()\n event.stopPropagation()\n }}\n onClick={(event) => {\n event.preventDefault()\n event.stopPropagation()\n setExpanded(true)\n }}\n sx={{\n mx: 0.5,\n my: 0.15,\n px: 1,\n py: 0.85,\n borderRadius: 1.75,\n alignItems: 'center',\n }}\n >\n <Typography\n sx={{\n flex: 1,\n minWidth: 0,\n fontSize: '0.78rem',\n color: 'text.secondary',\n m: 0,\n }}\n >\n {collapsedRowLabel(hiddenCount)}\n </Typography>\n </ListItemButton>\n ) : null}\n </>\n )}\n </List>\n {footerSlot ? (\n <Box\n sx={{\n borderTop: '1px solid',\n borderColor: 'divider',\n px: 0.5,\n py: 0.35,\n }}\n >\n {footerSlot}\n </Box>\n ) : null}\n </Paper>\n\n {showDetailPanel && hoveredOption ? (\n <Box\n ref={detailPaperRef}\n sx={{\n display: { xs: 'none', sm: 'block' },\n position: 'absolute',\n top: detailTop,\n ...detailPositionSx,\n width: detailWidth,\n }}\n >\n <Paper\n elevation={0}\n {...detailPaperSlotProps}\n sx={mergeSx(\n {\n px: 1.25,\n py: 1.1,\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 2,\n bgcolor:\n 'color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)',\n boxShadow:\n '0 10px 28px color-mix(in srgb, var(--mui-palette-common-black), transparent 82%)',\n },\n detailPaperSlotSx,\n )}\n >\n <Typography\n sx={{\n fontSize: '0.78rem',\n fontWeight: 700,\n color: hoveredOption.accentColor || 'text.primary',\n lineHeight: 1.2,\n mt: 0,\n mx: 0,\n mb: 0.4,\n }}\n >\n {hoveredOption.label}\n </Typography>\n <Typography\n sx={{\n fontSize: '0.72rem',\n color: 'text.secondary',\n lineHeight: 1.35,\n m: 0,\n }}\n >\n {hoveredOption.detail?.trim() || '—'}\n </Typography>\n {hoveredOption.detailSlot ? (\n <Box\n sx={{\n mt: 1,\n pt: 1,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n >\n {hoveredOption.detailSlot}\n </Box>\n ) : null}\n </Paper>\n </Box>\n ) : null}\n </Box>\n </ClickAwayListener>\n </Popper>\n )\n}\n\nconst DETAIL_GAP_PX = 8\nconst VIEWPORT_PAD_PX = 8\n\nfunction toCssPixels(value: number | string, fallback: number): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value\n }\n\n if (typeof value === 'string') {\n const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)px$/i)\n if (match) {\n return Number.parseFloat(match[1])\n }\n }\n\n return fallback\n}\n\nfunction resolveDetailSide(listRoot: HTMLElement, detailWidthPx: number): 'left' | 'right' {\n const rect = listRoot.getBoundingClientRect()\n const need = detailWidthPx + DETAIL_GAP_PX\n const spaceRight = window.innerWidth - rect.right - VIEWPORT_PAD_PX\n const spaceLeft = rect.left - VIEWPORT_PAD_PX\n\n if (spaceRight >= need) {\n return 'right'\n }\n if (spaceLeft >= need) {\n return 'left'\n }\n\n return spaceLeft > spaceRight ? 'left' : 'right'\n}\n\nexport default DetailMenu\n","export * from './FormLabel'\n\nexport * from './FormControlLabel'\n\nexport {default as FormControl} from '@mui/material/FormControl'\nexport {default as FormHelperText} from '@mui/material/FormHelperText'\nexport {default as InputAdornment} from '@mui/material/InputAdornment'\nexport {default as InputLabel} from '@mui/material/InputLabel'\nexport * from './themes'","export {default as List} from '@mui/material/List'\nexport {default as ListSubheader} from '@mui/material/ListSubheader'\nexport {default as ListItemIcon} from '@mui/material/ListItemIcon'\nexport {default as ListItemText} from '@mui/material/ListItemText'\nexport {default as ListItemButton} from '@mui/material/ListItemButton'\nexport {default as ListItem} from '@mui/material/ListItem'\n\nexport {default as TransferList} from './TransferList'\nexport * from './theme'","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","export { default } from '@mui/material/Typography'","'use client'\n\nimport { useMemo, type ReactNode } from 'react'\n\nimport { Box } from '@/ele/Box'\nimport { MemoryIcon } from '@/icons/MuiIcon'\n\nimport { DetailMenu, type DetailMenuOption, type DetailMenuProps } from '../DetailMenu'\n\nexport type ModelBrand = 'openai' | 'anthropic' | 'google' | 'meta'\n\nexport type ModelMenuOption = {\n id: string\n label: string\n /** Side-panel description when this option is hovered / focused. */\n detail?: string\n /** Optional provider key. Pass `brandIconMap` or `option.icon` for a brand mark. */\n brand?: ModelBrand | (string & {})\n /** Extra search terms merged into the filter index. */\n keywords?: string\n /** Short config pill rendered after the label (e.g. \"Fast\"); searchable. */\n badge?: string\n /** Per-option icon override; wins over the brand icon. */\n icon?: ReactNode\n /**\n * Slot rendered at the bottom of this option's detail panel — host-owned\n * config controls (e.g. a reasoning-effort selector for models that allow\n * it). ModelMenu never interprets the content; per-model capability\n * (\"does this model allow effort?\") stays with the host, which simply\n * omits the slot for models without it.\n */\n detailSlot?: ReactNode\n /** Section label — an uppercase header renders above the first option of each distinct group (e.g. \"Favorites\"). */\n group?: string\n /** Hide behind the \"N more models\" footer row until expanded (click). Ignored while searching. */\n collapsed?: boolean\n /**\n * Trailing per-option action (e.g. a settings gear), revealed on row\n * hover/focus. Clicks inside it never select the model.\n */\n actionSlot?: ReactNode\n}\n\nexport type ModelMenuProps = {\n anchorEl: HTMLElement | null\n options: readonly ModelMenuOption[]\n selectedId?: string | null\n onClose: () => void\n onSelect: (optionId: string) => void\n /** Default: on when there are 6+ options. */\n searchable?: boolean\n searchPlaceholder?: string\n /** Popper placement. Default: top-start. */\n placement?: DetailMenuProps['placement']\n /** Hover detail panel beside the list. Default true. */\n showDetailPanel?: boolean\n /** Host-owned brand marks keyed by `option.brand`. The library does not ship provider logos. */\n brandIconMap?: Record<string, ReactNode>\n slotProps?: DetailMenuProps['slotProps']\n maxListHeight?: number | string\n /** Footer under the list (e.g. \"Add Models\"). */\n footerSlot?: ReactNode\n}\n\nconst BRAND_LABELS: Record<string, string> = {\n anthropic: 'Anthropic',\n google: 'Google',\n meta: 'Meta',\n openai: 'OpenAI',\n}\n\nconst defaultBrandIcon = (): ReactNode => (\n <MemoryIcon sx={{ fontSize: 14 }} aria-hidden />\n)\n\n/**\n * Anchored model picker — DetailMenu specialized with host-owned brand\n * icons and search that turns on automatically for longer lists.\n * The model catalog and provider logos stay owned by the consuming app.\n */\nexport function ModelMenu({\n anchorEl,\n options,\n selectedId = null,\n onClose,\n onSelect,\n searchable,\n searchPlaceholder = 'Search models…',\n placement,\n showDetailPanel,\n brandIconMap,\n slotProps,\n maxListHeight,\n footerSlot,\n}: ModelMenuProps) {\n const detailOptions = useMemo<DetailMenuOption[]>(\n () =>\n options.map((option) => ({\n id: option.id,\n label: option.label,\n detail: option.detail,\n badge: option.badge,\n detailSlot: option.detailSlot,\n group: option.group,\n collapsed: option.collapsed,\n actionSlot: option.actionSlot,\n keywords: [option.brand, option.detail, option.keywords]\n .filter(Boolean)\n .join(' '),\n icon: (\n <Box\n component=\"span\"\n title={BRAND_LABELS[option.brand ?? '']}\n sx={{\n display: 'inline-flex',\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 1.25,\n color: 'text.secondary',\n '& svg': { display: 'block' },\n }}\n >\n {option.icon ??\n brandIconMap?.[option.brand ?? ''] ??\n defaultBrandIcon()}\n </Box>\n ),\n })),\n [options, brandIconMap],\n )\n\n return (\n <DetailMenu\n anchorEl={anchorEl}\n options={detailOptions}\n selectedId={selectedId}\n searchable={searchable ?? options.length >= 6}\n searchPlaceholder={searchPlaceholder}\n placement={placement}\n showDetailPanel={showDetailPanel}\n collapsedRowLabel={(count) =>\n `${count} more model${count === 1 ? '' : 's'}`\n }\n onClose={onClose}\n onSelect={onSelect}\n slotProps={slotProps}\n maxListHeight={maxListHeight}\n footerSlot={footerSlot}\n />\n )\n}\n\nexport default ModelMenu\n","'use client'\n\nimport { useEffect, useMemo, useRef, useState, type ReactNode } from 'react'\nimport { Popper, ClickAwayListener } from '@/ele/Overlay'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nimport { Box } from '@/ele/Box'\nimport { List, ListItemButton } from '@/ele/List'\nimport { Paper } from '@/ele/Paper'\nimport { Typography } from '@/ele/Typography'\nimport { KeyboardArrowRightIcon } from '@/icons/MuiIcon'\n\nimport {\n ModelMenu,\n type ModelMenuOption,\n type ModelMenuProps,\n} from '../ModelMenu'\n\nexport type ModelPickerProps = {\n anchorEl: HTMLElement | null\n options: readonly ModelMenuOption[]\n selectedId?: string | null\n onClose: () => void\n onSelect: (optionId: string) => void\n /**\n * Host-owned config controls rendered above the Model row (e.g. a\n * Reasoning Low/High/Max list). ModelPicker never interprets the content —\n * omit it when the selected model has nothing to configure.\n */\n configSlot?: ReactNode\n /** Label for the bottom Model section. Default: \"Model\". */\n modelSectionLabel?: string\n /** Forwarded to the ModelMenu flyout. */\n searchable?: boolean\n searchPlaceholder?: string\n brandIconMap?: ModelMenuProps['brandIconMap']\n slotProps?: ModelMenuProps['slotProps']\n maxListHeight?: ModelMenuProps['maxListHeight']\n /** Footer under the model list flyout (e.g. \"Add Models\"). */\n footerSlot?: ReactNode\n /**\n * Hover detail panel beside the model list (title + detail text + optional\n * detailSlot). Default true.\n */\n showDetailPanel?: boolean\n}\n\nconst paperSx = {\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 2.5,\n overflow: 'hidden',\n bgcolor:\n 'color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)',\n boxShadow:\n '0 12px 32px color-mix(in srgb, var(--mui-palette-common-black), transparent 78%)',\n minWidth: 180,\n} as const\n\n/**\n * Cursor-style model picker: configure first (configSlot), change the model\n * at the bottom. The Model row opens ModelMenu as a side flyout.\n */\nexport function ModelPicker({\n anchorEl,\n options,\n selectedId = null,\n onClose,\n onSelect,\n configSlot,\n modelSectionLabel = 'Model',\n searchable,\n searchPlaceholder,\n brandIconMap,\n slotProps,\n maxListHeight,\n footerSlot,\n showDetailPanel = true,\n}: ModelPickerProps) {\n const open = Boolean(anchorEl)\n const [modelRowEl, setModelRowEl] = useState<HTMLElement | null>(null)\n const [modelFlyoutOpen, setModelFlyoutOpen] = useState(false)\n const rootRef = useRef<HTMLDivElement>(null)\n\n const selected = useMemo(\n () => options.find((option) => option.id === selectedId) ?? options[0],\n [options, selectedId],\n )\n\n useEffect(() => {\n if (!open) {\n setModelFlyoutOpen(false)\n setModelRowEl(null)\n }\n }, [open])\n\n const closeAll = () => {\n setModelFlyoutOpen(false)\n onClose()\n }\n\n const openModelFlyout = (element: HTMLElement) => {\n setModelRowEl(element)\n setModelFlyoutOpen(true)\n }\n\n const isInsidePickerSurface = (event: MouseEvent | TouchEvent) => {\n const path =\n typeof event.composedPath === 'function'\n ? event.composedPath()\n : [event.target]\n return path.some((node) => {\n if (!(node instanceof Element)) {\n return false\n }\n if (rootRef.current?.contains(node)) {\n return true\n }\n // ModelMenu portals its Paper to document.body — tag it so click-away\n // does not treat expand / model selection as \"outside\". Prefer the path\n // attribute check so a row that React unmounted mid-click still counts.\n return (\n node.hasAttribute('data-model-picker-flyout') ||\n Boolean(node.closest('[data-model-picker-flyout]'))\n )\n })\n }\n\n const flyoutSlotProps = useMemo<ModelMenuProps['slotProps']>(() => {\n const paper = slotProps?.paper\n const detailPaper = slotProps?.detailPaper\n // Tag list + detail Papers so click-away keeps the config menu open —\n // the detail panel sits outside the list Paper as an absolute sibling.\n const flyoutTag = { 'data-model-picker-flyout': '' } as const\n return {\n ...slotProps,\n paper: {\n ...paper,\n ...flyoutTag,\n } as NonNullable<ModelMenuProps['slotProps']>['paper'],\n detailPaper: {\n ...detailPaper,\n ...flyoutTag,\n } as NonNullable<ModelMenuProps['slotProps']>['detailPaper'],\n }\n }, [slotProps])\n\n return (\n <>\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"top-start\"\n modifiers={[\n { name: 'offset', options: { offset: [0, 10] } },\n { name: 'preventOverflow', options: { padding: 8 } },\n {\n name: 'flip',\n options: { fallbackPlacements: ['bottom-start', 'top-start'] },\n },\n ]}\n sx={{ zIndex: (theme) => theme.zIndex.modal + 2 }}\n >\n <ClickAwayListener\n onClickAway={(event) => {\n if (isInsidePickerSurface(event)) {\n return\n }\n closeAll()\n }}\n >\n <Box ref={rootRef} sx={{ display: 'inline-block' }}>\n <Paper\n elevation={0}\n sx={paperSx as SxProps<Theme>}\n >\n {configSlot ? (\n <Box sx={{ px: 0.5, pt: 0.5, pb: 0.25 }}>{configSlot}</Box>\n ) : null}\n\n {configSlot ? (\n <Box\n sx={{\n borderTop: '1px solid',\n borderColor: 'divider',\n mx: 1,\n }}\n />\n ) : null}\n\n <Box sx={{ px: 0.5, pb: 0.5, pt: configSlot ? 0.25 : 0.5 }}>\n <Typography\n component=\"div\"\n sx={{\n px: 1,\n pt: 0.5,\n pb: 0.15,\n fontSize: '0.66rem',\n fontWeight: 700,\n letterSpacing: '0.04em',\n color: 'text.secondary',\n m: 0,\n }}\n >\n {modelSectionLabel}\n </Typography>\n <List dense disablePadding>\n <ListItemButton\n onMouseEnter={(event) => openModelFlyout(event.currentTarget)}\n onClick={(event) => openModelFlyout(event.currentTarget)}\n sx={{\n mx: 0.5,\n my: 0.15,\n px: 1,\n py: 0.75,\n gap: 1,\n borderRadius: 1.5,\n alignItems: 'center',\n bgcolor: 'action.hover',\n '&:hover': { bgcolor: 'action.selected' },\n }}\n >\n <Typography\n sx={{\n flex: 1,\n minWidth: 0,\n fontSize: '0.82rem',\n fontWeight: 600,\n color: 'text.primary',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n m: 0,\n }}\n >\n {selected?.label ?? 'Select model'}\n </Typography>\n <KeyboardArrowRightIcon\n sx={{ fontSize: 16, color: 'text.secondary', flexShrink: 0 }}\n />\n </ListItemButton>\n </List>\n </Box>\n </Paper>\n </Box>\n </ClickAwayListener>\n </Popper>\n\n {modelFlyoutOpen ? (\n <ModelMenu\n anchorEl={modelRowEl}\n options={options}\n selectedId={selectedId}\n searchable={searchable}\n searchPlaceholder={searchPlaceholder}\n brandIconMap={brandIconMap}\n slotProps={flyoutSlotProps}\n maxListHeight={maxListHeight}\n footerSlot={footerSlot}\n placement=\"right-start\"\n showDetailPanel={showDetailPanel}\n onClose={() => setModelFlyoutOpen(false)}\n onSelect={(id) => {\n // Keep the config menu open — Cursor stays open so you can keep\n // adjusting Effort/Options after changing the model.\n onSelect(id)\n }}\n />\n ) : null}\n </>\n )\n}\n\nexport default ModelPicker\n"],"mappings":"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","names":["import_styles","MenuItem","ListItemIcon","ListItemText","MenuList","import_MenuItem","import_jsx_runtime","Paper","import_react","import_jsx_runtime","import_react","import_react","import_jsx_runtime","MuiIconButton","import_styles","import_jsx_runtime","p","import_react","import_ListItemIcon","import_ListItemText","import_PhotoSizeSelectLarge","import_Menu","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_jsx_runtime","React","paperSx","InputBase","import_react","import_jsx_runtime","import_react","import_jsx_runtime"]}
package/dist/menu.mjs ADDED
@@ -0,0 +1,43 @@
1
+ import {
2
+ DetailMenu,
3
+ IconMenu_default,
4
+ MenuPopper,
5
+ Menu_default,
6
+ ModelMenu,
7
+ ModelPicker,
8
+ StyledItemIcon,
9
+ StyledMenuItem,
10
+ default as default2,
11
+ menuItemTheme,
12
+ menuTheme,
13
+ useMenu
14
+ } from "./chunk-HR3A4H4E.mjs";
15
+ import "./chunk-TDRA5EZI.mjs";
16
+ import "./chunk-3DQINB57.mjs";
17
+ import "./chunk-BGB7JHIU.mjs";
18
+ import "./chunk-T4X375IG.mjs";
19
+ import "./chunk-3VUAM2GY.mjs";
20
+ import "./chunk-MDAUF7IL.mjs";
21
+ import "./chunk-I5JWS4Z7.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 "./chunk-S6EZVRZC.mjs";
28
+ import "./chunk-FJ6ZGZIA.mjs";
29
+ export {
30
+ DetailMenu,
31
+ IconMenu_default as IconMenu,
32
+ Menu_default as Menu,
33
+ default2 as MenuItem,
34
+ MenuPopper,
35
+ ModelMenu,
36
+ ModelPicker,
37
+ StyledItemIcon,
38
+ StyledMenuItem,
39
+ menuItemTheme,
40
+ menuTheme,
41
+ useMenu
42
+ };
43
+ //# sourceMappingURL=menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,90 @@
1
+ import { ModalProps } from '@mui/material/Modal';
2
+ export { default as Modal } from '@mui/material/Modal';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import * as React$1 from 'react';
5
+ import React__default from 'react';
6
+ import { SxProps } from '@mui/material';
7
+ import { Theme, SxProps as SxProps$1 } from '@mui/material/styles';
8
+ import CloseIcon from '@mui/icons-material/Close';
9
+ import MuiIconButton from '@mui/material/IconButton';
10
+ import { TooltipProps } from '@mui/material/Tooltip';
11
+
12
+ type IconButtonProps = React.ComponentProps<typeof MuiIconButton>;
13
+ type Props = {
14
+ /** The Icon to render */
15
+ children: React.ReactNode;
16
+ /** The title of the tooltip */
17
+ title?: string;
18
+ /**
19
+ * The color theme of the entire component.
20
+ * @default 'secondary' (from theme)
21
+ */
22
+ color?: IconButtonProps['color'];
23
+ /**
24
+ * The size of the component.
25
+ * @default 'small' (from theme)
26
+ */
27
+ size?: IconButtonProps['size'];
28
+ selected?: boolean;
29
+ slotProps?: {
30
+ tooltip?: Omit<TooltipProps, "children">;
31
+ };
32
+ } & Omit<IconButtonProps, "color" | "size">;
33
+ /**
34
+ * A MuiIconButton wrapped in a MuiTooltip.
35
+ * Default props like `size` and `color` are handled by the theme.
36
+ */
37
+ declare const IconButton: React$1.ForwardRefExoticComponent<Omit<Props, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
38
+
39
+ /**
40
+ * extended from Mui Modal
41
+ *
42
+ * [Doc](https://mui.com/material-ui/api/modal/)
43
+ *
44
+ * @param openProps - [open, setOpen]
45
+ */
46
+ declare function MuiModal({ children, openProps, size, maxHeight, maxWidth, onClose, title, titleIcon, closeButton, slots, slotProps, ...rest }: {
47
+ children?: React__default.ReactNode;
48
+ openProps: [
49
+ boolean,
50
+ (React__default.Dispatch<React__default.SetStateAction<boolean>> | React__default.Dispatch<boolean>)
51
+ ];
52
+ size?: {
53
+ w?: string | number;
54
+ h?: string | number;
55
+ };
56
+ maxHeight?: string | number;
57
+ maxWidth?: string | number;
58
+ onClose?: () => void;
59
+ title?: string;
60
+ titleIcon?: React__default.ReactNode;
61
+ closeButton?: React__default.ReactNode;
62
+ slots?: {
63
+ closeButton?: React__default.ElementType;
64
+ closeIcon?: React__default.ElementType;
65
+ };
66
+ slotProps?: {
67
+ container?: {
68
+ style?: {
69
+ bgColor?: string;
70
+ shadow?: string;
71
+ };
72
+ sx?: SxProps<Theme>;
73
+ };
74
+ header?: {
75
+ style?: {
76
+ headerImg: string;
77
+ };
78
+ };
79
+ closeButton?: Partial<React__default.ComponentProps<typeof IconButton>> & {
80
+ closeIcon?: Partial<React__default.ComponentProps<typeof CloseIcon>>;
81
+ };
82
+ };
83
+ } & Omit<ModalProps, "open" | "title">): react_jsx_runtime.JSX.Element;
84
+
85
+ declare const MUI_MODAL_PAPER_RADIUS = "20px";
86
+ declare const muiModalRootSx: SxProps$1<Theme>;
87
+ /** Internal paper chrome. Pass as the first `sx` array item so host `slotProps.container.sx` merges instead of replacing `&.MuiPaper-root`. */
88
+ declare const muiModalPaperSx: SxProps$1<Theme>;
89
+
90
+ export { MUI_MODAL_PAPER_RADIUS, MuiModal, muiModalPaperSx, muiModalRootSx };
@@ -0,0 +1,90 @@
1
+ import { ModalProps } from '@mui/material/Modal';
2
+ export { default as Modal } from '@mui/material/Modal';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import * as React$1 from 'react';
5
+ import React__default from 'react';
6
+ import { SxProps } from '@mui/material';
7
+ import { Theme, SxProps as SxProps$1 } from '@mui/material/styles';
8
+ import CloseIcon from '@mui/icons-material/Close';
9
+ import MuiIconButton from '@mui/material/IconButton';
10
+ import { TooltipProps } from '@mui/material/Tooltip';
11
+
12
+ type IconButtonProps = React.ComponentProps<typeof MuiIconButton>;
13
+ type Props = {
14
+ /** The Icon to render */
15
+ children: React.ReactNode;
16
+ /** The title of the tooltip */
17
+ title?: string;
18
+ /**
19
+ * The color theme of the entire component.
20
+ * @default 'secondary' (from theme)
21
+ */
22
+ color?: IconButtonProps['color'];
23
+ /**
24
+ * The size of the component.
25
+ * @default 'small' (from theme)
26
+ */
27
+ size?: IconButtonProps['size'];
28
+ selected?: boolean;
29
+ slotProps?: {
30
+ tooltip?: Omit<TooltipProps, "children">;
31
+ };
32
+ } & Omit<IconButtonProps, "color" | "size">;
33
+ /**
34
+ * A MuiIconButton wrapped in a MuiTooltip.
35
+ * Default props like `size` and `color` are handled by the theme.
36
+ */
37
+ declare const IconButton: React$1.ForwardRefExoticComponent<Omit<Props, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
38
+
39
+ /**
40
+ * extended from Mui Modal
41
+ *
42
+ * [Doc](https://mui.com/material-ui/api/modal/)
43
+ *
44
+ * @param openProps - [open, setOpen]
45
+ */
46
+ declare function MuiModal({ children, openProps, size, maxHeight, maxWidth, onClose, title, titleIcon, closeButton, slots, slotProps, ...rest }: {
47
+ children?: React__default.ReactNode;
48
+ openProps: [
49
+ boolean,
50
+ (React__default.Dispatch<React__default.SetStateAction<boolean>> | React__default.Dispatch<boolean>)
51
+ ];
52
+ size?: {
53
+ w?: string | number;
54
+ h?: string | number;
55
+ };
56
+ maxHeight?: string | number;
57
+ maxWidth?: string | number;
58
+ onClose?: () => void;
59
+ title?: string;
60
+ titleIcon?: React__default.ReactNode;
61
+ closeButton?: React__default.ReactNode;
62
+ slots?: {
63
+ closeButton?: React__default.ElementType;
64
+ closeIcon?: React__default.ElementType;
65
+ };
66
+ slotProps?: {
67
+ container?: {
68
+ style?: {
69
+ bgColor?: string;
70
+ shadow?: string;
71
+ };
72
+ sx?: SxProps<Theme>;
73
+ };
74
+ header?: {
75
+ style?: {
76
+ headerImg: string;
77
+ };
78
+ };
79
+ closeButton?: Partial<React__default.ComponentProps<typeof IconButton>> & {
80
+ closeIcon?: Partial<React__default.ComponentProps<typeof CloseIcon>>;
81
+ };
82
+ };
83
+ } & Omit<ModalProps, "open" | "title">): react_jsx_runtime.JSX.Element;
84
+
85
+ declare const MUI_MODAL_PAPER_RADIUS = "20px";
86
+ declare const muiModalRootSx: SxProps$1<Theme>;
87
+ /** Internal paper chrome. Pass as the first `sx` array item so host `slotProps.container.sx` merges instead of replacing `&.MuiPaper-root`. */
88
+ declare const muiModalPaperSx: SxProps$1<Theme>;
89
+
90
+ export { MUI_MODAL_PAPER_RADIUS, MuiModal, muiModalPaperSx, muiModalRootSx };