@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/dist/menu.js ADDED
@@ -0,0 +1,1571 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/components/elemental/Menu/index.ts
31
+ var Menu_exports = {};
32
+ __export(Menu_exports, {
33
+ DetailMenu: () => DetailMenu,
34
+ IconMenu: () => IconMenu_default,
35
+ Menu: () => Menu_default,
36
+ MenuItem: () => import_MenuItem3.default,
37
+ MenuPopper: () => MenuPopper,
38
+ ModelMenu: () => ModelMenu,
39
+ ModelPicker: () => ModelPicker,
40
+ StyledItemIcon: () => StyledItemIcon,
41
+ StyledMenuItem: () => StyledMenuItem,
42
+ menuItemTheme: () => menuItemTheme,
43
+ menuTheme: () => menuTheme,
44
+ useMenu: () => useMenu
45
+ });
46
+ module.exports = __toCommonJS(Menu_exports);
47
+
48
+ // src/components/elemental/Menu/src/Menu/Menu.tsx
49
+ var import_react = require("react");
50
+ var import_MenuList = __toESM(require("@mui/material/MenuList"));
51
+ var import_ListItemText = __toESM(require("@mui/material/ListItemText"));
52
+ var import_styles2 = require("@mui/material/styles");
53
+
54
+ // src/components/elemental/Menu/src/MenuItem.tsx
55
+ var import_MenuItem = __toESM(require("@mui/material/MenuItem"));
56
+ var import_ListItemIcon = __toESM(require("@mui/material/ListItemIcon"));
57
+ var import_styles = require("@mui/material/styles");
58
+ var StyledMenuItem = (0, import_styles.styled)(import_MenuItem.default, {
59
+ shouldForwardProp: (prop) => prop !== "customPadding" && prop !== "customFontSize"
60
+ })(({ customPadding, customFontSize }) => ({
61
+ width: "-webkit-fill-available",
62
+ borderRadius: "8px",
63
+ minHeight: "fit-content",
64
+ padding: customPadding || "6px 16px",
65
+ margin: "0",
66
+ overflow: "hidden",
67
+ gap: "4px",
68
+ "& .MuiListItemText-primary": {
69
+ fontSize: customFontSize || "1rem",
70
+ overflow: "hidden",
71
+ textOverflow: "ellipsis"
72
+ }
73
+ }));
74
+ var StyledItemIcon = (0, import_styles.styled)(import_ListItemIcon.default, {
75
+ shouldForwardProp: (prop) => prop !== "isIconOnly"
76
+ })({
77
+ "&.MuiListItemIcon-root": {
78
+ minWidth: "var(--minW)"
79
+ },
80
+ variants: [
81
+ {
82
+ props: { isIconOnly: true },
83
+ style: {
84
+ "--minW": "0"
85
+ }
86
+ },
87
+ {
88
+ props: { isIconOnly: false },
89
+ style: {
90
+ "--minW": "auto"
91
+ }
92
+ },
93
+ {
94
+ props: { isIconOnly: void 0 },
95
+ // default
96
+ style: {
97
+ "--minW": "auto"
98
+ }
99
+ }
100
+ ]
101
+ });
102
+
103
+ // src/components/elemental/Menu/src/Menu/Menu.tsx
104
+ var import_jsx_runtime = require("react/jsx-runtime");
105
+ var CustomMenuList = (0, import_react.forwardRef)(({
106
+ options = [],
107
+ extraItemClickHandler,
108
+ menuItemProps,
109
+ initSelected = [],
110
+ multiple = false,
111
+ autoFocusItem,
112
+ menuRef,
113
+ isIconOnly = false,
114
+ optionHeader,
115
+ sorted = true
116
+ }, ref) => {
117
+ const [localSelected, setLocalSelected] = (0, import_react.useState)(initSelected);
118
+ (0, import_react.useImperativeHandle)(ref, () => ({
119
+ getSelectedItem: () => localSelected
120
+ }), [localSelected]);
121
+ (0, import_react.useEffect)(() => {
122
+ setLocalSelected(initSelected);
123
+ }, [initSelected]);
124
+ const sortedOptions = (0, import_react.useMemo)(() => {
125
+ if (!sorted) return options;
126
+ return [...options].sort((a, b) => {
127
+ if (a.label && b.label) {
128
+ return a.label.toString().localeCompare(b.label.toString());
129
+ }
130
+ return 0;
131
+ });
132
+ }, [sorted, options]);
133
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
134
+ StyledMenuList,
135
+ {
136
+ ref: menuRef,
137
+ autoFocusItem,
138
+ fontSize: menuItemProps?.fontSize,
139
+ padding: menuItemProps?.padding,
140
+ children: [
141
+ optionHeader,
142
+ sortedOptions.map((o, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
143
+ StyledMenuItem,
144
+ {
145
+ selected: localSelected.includes(o.id),
146
+ customPadding: menuItemProps?.padding,
147
+ customFontSize: menuItemProps?.fontSize,
148
+ onClick: (e) => {
149
+ if (extraItemClickHandler) extraItemClickHandler(e);
150
+ if (multiple) setLocalSelected((old) => {
151
+ if (old.includes(o.id)) return old.filter((id) => id !== o.id);
152
+ return [...old, o.id];
153
+ });
154
+ o.onClick?.();
155
+ },
156
+ children: [
157
+ o.icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledItemIcon, { isIconOnly, children: o.icon }),
158
+ o.label && !isIconOnly && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ListItemText.default, { children: o.label }),
159
+ o.extension
160
+ ]
161
+ },
162
+ i
163
+ ))
164
+ ]
165
+ }
166
+ );
167
+ });
168
+ var Menu_default = CustomMenuList;
169
+ var StyledMenuList = (0, import_styles2.styled)(import_MenuList.default, {
170
+ shouldForwardProp: (prop) => prop !== "fontSize" && prop !== "padding"
171
+ })((p) => createMenuListTheme(p));
172
+ function createMenuListTheme(p) {
173
+ return {
174
+ "&.MuiList-root": {
175
+ padding: "8px 4px",
176
+ display: "flex",
177
+ flexDirection: "column",
178
+ alignContent: "center",
179
+ alignItems: "center",
180
+ width: "100%",
181
+ gap: "2px",
182
+ "& li": {
183
+ width: "-webkit-fill-available",
184
+ borderRadius: "8px",
185
+ minHeight: "fit-content",
186
+ padding: p.padding || "6px 16px",
187
+ margin: "0",
188
+ overflow: "hidden",
189
+ "& .MuiListItemText-primary": {
190
+ fontSize: p.fontSize || "1rem",
191
+ overflow: "hidden",
192
+ textOverflow: "ellipsis"
193
+ }
194
+ }
195
+ }
196
+ };
197
+ }
198
+
199
+ // src/components/elemental/Menu/src/Menu/index.ts
200
+ var import_MenuItem3 = __toESM(require("@mui/material/MenuItem"));
201
+
202
+ // src/components/elemental/Menu/src/Menu/theme.ts
203
+ var menuItemTheme = {
204
+ defaultProps: {},
205
+ styleOverrides: {
206
+ root: {
207
+ "--menu-item-hover-bg": "var(--mui-palette-background-hover-1)",
208
+ "--menu-item-selected-bg": "var(--mui-palette-focus-1)",
209
+ "&:hover": {
210
+ backgroundColor: "var(--menu-item-hover-bg)"
211
+ },
212
+ "&.Mui-selected:before": {
213
+ width: "100%",
214
+ height: "100%",
215
+ content: "''",
216
+ position: "absolute",
217
+ left: 0,
218
+ top: 0,
219
+ backgroundColor: "var(--menu-item-selected-bg)",
220
+ overflow: "hidden"
221
+ },
222
+ "& svg": {
223
+ fontSize: "1.2rem"
224
+ }
225
+ }
226
+ }
227
+ };
228
+ var menuTheme = {
229
+ styleOverrides: {}
230
+ };
231
+
232
+ // src/components/elemental/Overlay/src/index.ts
233
+ var import_ClickAwayListener = __toESM(require("@mui/material/ClickAwayListener"));
234
+ var import_Popper = __toESM(require("@mui/material/Popper"));
235
+
236
+ // src/components/elemental/Paper/src/Paper/Paper.tsx
237
+ var import_Paper = __toESM(require("@mui/material/Paper"));
238
+ var import_jsx_runtime2 = require("react/jsx-runtime");
239
+ function MuiPaper(props) {
240
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_Paper.default, { ...props });
241
+ }
242
+
243
+ // src/components/elemental/Menu/src/useMenu/useMenu.tsx
244
+ var import_react2 = require("react");
245
+ var import_jsx_runtime3 = require("react/jsx-runtime");
246
+ var MenuPopper = ({
247
+ placement = "bottom-start",
248
+ options = [],
249
+ openMenuProps,
250
+ menuItemProps,
251
+ optionHeader
252
+ }) => {
253
+ const {
254
+ closeHandler,
255
+ anchorEl,
256
+ onItemClickClientArg,
257
+ multiple,
258
+ ref,
259
+ menuRef,
260
+ initSelected,
261
+ sorted = true
262
+ } = openMenuProps;
263
+ const open = Boolean(anchorEl);
264
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
265
+ import_Popper.default,
266
+ {
267
+ open,
268
+ anchorEl,
269
+ placement,
270
+ sx: { zIndex: "1301" },
271
+ modifiers: [{
272
+ name: "offset",
273
+ options: { offset: [0, 8] }
274
+ }],
275
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
276
+ MuiPaper,
277
+ {
278
+ variant: "outlined",
279
+ sx: {
280
+ "&.MuiPaper-root": {
281
+ pr: 1,
282
+ minWidth: 150,
283
+ maxHeight: 300,
284
+ borderRadius: "16px",
285
+ overflow: "hidden",
286
+ display: "flex",
287
+ flexDirection: "column",
288
+ "& .MuiList-root": {
289
+ display: "flex",
290
+ flexDirection: "column",
291
+ alignContent: "center",
292
+ alignItems: "center",
293
+ width: "100%",
294
+ overflowY: "auto",
295
+ height: "100%"
296
+ },
297
+ "& li": {
298
+ width: "100%"
299
+ }
300
+ }
301
+ },
302
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_ClickAwayListener.default, { onClickAway: closeHandler, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
303
+ Menu_default,
304
+ {
305
+ ref,
306
+ menuRef,
307
+ autoFocusItem: open,
308
+ menuItemProps,
309
+ optionHeader,
310
+ options,
311
+ multiple,
312
+ initSelected,
313
+ extraItemClickHandler: (e) => {
314
+ if (onItemClickClientArg) onItemClickClientArg({ event: e, closeHandler });
315
+ },
316
+ sorted
317
+ }
318
+ ) })
319
+ }
320
+ )
321
+ }
322
+ );
323
+ };
324
+ function useMenu({
325
+ onItemClickClientArg,
326
+ multiple = false,
327
+ initSelected = [],
328
+ setSelected
329
+ }) {
330
+ const [anchorEl, setAnchorEl] = (0, import_react2.useState)(null);
331
+ const [anchorPosition, setAnchorPosition] = (0, import_react2.useState)({ top: 0, left: 0 });
332
+ const ref = (0, import_react2.useRef)(null);
333
+ const menuRef = (0, import_react2.useRef)(null);
334
+ const closeHandler = (event) => {
335
+ if (event && menuRef.current && event.target instanceof Node && menuRef.current.contains(event.target)) {
336
+ return;
337
+ }
338
+ if (setSelected && multiple) {
339
+ const localSelected = ref.current?.getSelectedItem();
340
+ if (localSelected && Array.isArray(localSelected)) {
341
+ setSelected(localSelected);
342
+ }
343
+ }
344
+ setAnchorEl(null);
345
+ };
346
+ const onTriggerClickHandler = (event) => {
347
+ const bottom = event.clientY;
348
+ const right = event.clientX;
349
+ setAnchorEl(event.currentTarget);
350
+ setAnchorPosition({ top: bottom, left: right });
351
+ };
352
+ return {
353
+ anchorEl,
354
+ anchorPosition,
355
+ onTriggerClickHandler,
356
+ onItemClickClientArg,
357
+ closeHandler,
358
+ multiple,
359
+ ref,
360
+ initSelected,
361
+ menuRef
362
+ };
363
+ }
364
+
365
+ // src/components/elemental/Menu/src/useMenu/IconMenu.tsx
366
+ var import_react4 = require("react");
367
+
368
+ // src/_utils/_func/sx.ts
369
+ function flattenSx(part) {
370
+ if (part == null || typeof part === "boolean") {
371
+ return [];
372
+ }
373
+ if (Array.isArray(part)) {
374
+ return part.flatMap(flattenSx);
375
+ }
376
+ if (typeof part === "function" || typeof part === "object") {
377
+ return [part];
378
+ }
379
+ return [];
380
+ }
381
+ function mergeSx(...parts) {
382
+ const list = parts.flatMap(flattenSx);
383
+ if (list.length === 0) {
384
+ return void 0;
385
+ }
386
+ if (list.length === 1) {
387
+ return list[0];
388
+ }
389
+ return list;
390
+ }
391
+
392
+ // src/components/elemental/Box/src/index.ts
393
+ var import_Box = __toESM(require("@mui/material/Box"));
394
+ var import_Stack = __toESM(require("@mui/material/Stack"));
395
+ var import_Grid = __toESM(require("@mui/material/Grid"));
396
+
397
+ // src/components/elemental/Button/src/IconButton/IconButton.tsx
398
+ var import_react3 = require("react");
399
+ var import_IconButton = __toESM(require("@mui/material/IconButton"));
400
+
401
+ // src/components/elemental/Tooltip/src/Tooltip/index.ts
402
+ var import_Tooltip = __toESM(require("@mui/material/Tooltip"));
403
+
404
+ // src/components/elemental/Button/src/IconButton/IconButton.tsx
405
+ var import_jsx_runtime4 = require("react/jsx-runtime");
406
+ var IconButton = (0, import_react3.forwardRef)(({
407
+ title = "",
408
+ children,
409
+ color,
410
+ size,
411
+ slotProps,
412
+ selected,
413
+ className,
414
+ ...props
415
+ }, ref) => {
416
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
417
+ import_Tooltip.default,
418
+ {
419
+ title,
420
+ slotProps: {
421
+ popper: {
422
+ sx: {
423
+ textTransform: "capitalize"
424
+ }
425
+ },
426
+ ...slotProps?.tooltip
427
+ },
428
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_Box.default, { component: "span", sx: { width: "fit-content" }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
429
+ import_IconButton.default,
430
+ {
431
+ ref,
432
+ color,
433
+ size,
434
+ className: [className, selected ? "Mui-selected" : ""].filter(Boolean).join(" "),
435
+ ...props,
436
+ children
437
+ }
438
+ ) })
439
+ }
440
+ );
441
+ });
442
+ var IconButton_default = IconButton;
443
+
444
+ // src/components/elemental/Button/src/IconButton/IconButton.HoverSpinnin.tsx
445
+ var import_styles3 = require("@mui/material/styles");
446
+ var IconButton_HoverSpinnin_default = (0, import_styles3.styled)(IconButton_default)({
447
+ "&:hover svg": {
448
+ transform: "rotate(360deg)",
449
+ transition: "transform 0.3s ease-in-out"
450
+ }
451
+ });
452
+
453
+ // src/components/elemental/Menu/src/useMenu/IconMenu.tsx
454
+ var import_jsx_runtime5 = (
455
+ // dont use Box here, it will cause the Button tooltip render differently
456
+ // the height of the tooltip will be a bit off from IconButton
457
+ require("react/jsx-runtime")
458
+ );
459
+ var IconMenuList = (props) => {
460
+ const {
461
+ options = [],
462
+ slots = {},
463
+ slotProps = {}
464
+ } = props;
465
+ const {
466
+ trigger: triggerProps = {},
467
+ menu: menuProps,
468
+ menuItem: menuItemProps,
469
+ optionHeader: optionHeaderProps,
470
+ popper: popperProps
471
+ } = slotProps;
472
+ const {
473
+ title,
474
+ onItemClickClientArg,
475
+ icon,
476
+ iconSize = "small",
477
+ isSpinButton,
478
+ ...triggerExtraProps
479
+ } = triggerProps;
480
+ const p = useMenu({
481
+ onItemClickClientArg: (p2) => {
482
+ if (p2.closeHandler) p2.closeHandler();
483
+ if (onItemClickClientArg) onItemClickClientArg(p2);
484
+ }
485
+ });
486
+ const Trigger = (0, import_react4.useMemo)(() => {
487
+ if (slots.trigger) return slots.trigger;
488
+ if (isSpinButton) {
489
+ return IconButton_HoverSpinnin_default;
490
+ } else {
491
+ return IconButton_default;
492
+ }
493
+ }, [isSpinButton, slots.trigger]);
494
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
495
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
496
+ Trigger,
497
+ {
498
+ title,
499
+ onClick: p.onTriggerClickHandler,
500
+ size: iconSize,
501
+ ...triggerExtraProps,
502
+ children: icon
503
+ }
504
+ ),
505
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
506
+ MenuPopper,
507
+ {
508
+ openMenuProps: {
509
+ ...p,
510
+ ...menuProps
511
+ },
512
+ optionHeader: optionHeaderProps,
513
+ options,
514
+ menuItemProps,
515
+ ...popperProps
516
+ }
517
+ )
518
+ ] });
519
+ };
520
+ var IconMenu_default = IconMenuList;
521
+
522
+ // src/components/elemental/Menu/src/DetailMenu/DetailMenu.tsx
523
+ var import_react5 = __toESM(require("react"));
524
+
525
+ // src/components/elemental/Form/src/index.ts
526
+ var import_FormControl = __toESM(require("@mui/material/FormControl"));
527
+ var import_FormHelperText = __toESM(require("@mui/material/FormHelperText"));
528
+ var import_InputAdornment = __toESM(require("@mui/material/InputAdornment"));
529
+ var import_InputLabel = __toESM(require("@mui/material/InputLabel"));
530
+
531
+ // src/components/elemental/Menu/src/DetailMenu/DetailMenu.tsx
532
+ var import_InputBase = __toESM(require("@mui/material/InputBase"));
533
+
534
+ // src/components/elemental/List/src/List/index.ts
535
+ var import_List = __toESM(require("@mui/material/List"));
536
+ var import_ListSubheader = __toESM(require("@mui/material/ListSubheader"));
537
+ var import_ListItemIcon2 = __toESM(require("@mui/material/ListItemIcon"));
538
+ var import_ListItemText2 = __toESM(require("@mui/material/ListItemText"));
539
+ var import_ListItemButton = __toESM(require("@mui/material/ListItemButton"));
540
+ var import_ListItem = __toESM(require("@mui/material/ListItem"));
541
+
542
+ // src/components/Icons/MuiIcon/index.ts
543
+ var import_ArrowRightAlt = __toESM(require("@mui/icons-material/ArrowRightAlt"));
544
+ var import_DescriptionOutlined = __toESM(require("@mui/icons-material/DescriptionOutlined"));
545
+ var import_Description = __toESM(require("@mui/icons-material/Description"));
546
+ var import_PictureAsPdf = __toESM(require("@mui/icons-material/PictureAsPdf"));
547
+ var import_AudioFile = __toESM(require("@mui/icons-material/AudioFile"));
548
+ var import_VideoFile = __toESM(require("@mui/icons-material/VideoFile"));
549
+ var import_TableChart = __toESM(require("@mui/icons-material/TableChart"));
550
+ var import_FolderZip = __toESM(require("@mui/icons-material/FolderZip"));
551
+ var import_InsertDriveFile = __toESM(require("@mui/icons-material/InsertDriveFile"));
552
+ var import_ImageOutlined = __toESM(require("@mui/icons-material/ImageOutlined"));
553
+ var import_LayersOutlined = __toESM(require("@mui/icons-material/LayersOutlined"));
554
+ var import_TextFormat = __toESM(require("@mui/icons-material/TextFormat"));
555
+ var import_Remove = __toESM(require("@mui/icons-material/Remove"));
556
+ var import_PostAdd = __toESM(require("@mui/icons-material/PostAdd"));
557
+ var import_ErrorOutline = __toESM(require("@mui/icons-material/ErrorOutline"));
558
+ var import_QuestionMarkOutlined = __toESM(require("@mui/icons-material/QuestionMarkOutlined"));
559
+ var import_MeetingRoomOutlined = __toESM(require("@mui/icons-material/MeetingRoomOutlined"));
560
+ var import_PlaylistRemove = __toESM(require("@mui/icons-material/PlaylistRemove"));
561
+ var import_ChecklistRtl = __toESM(require("@mui/icons-material/ChecklistRtl"));
562
+ var import_HideImageOutlined = __toESM(require("@mui/icons-material/HideImageOutlined"));
563
+ var import_RemoveRedEyeTwoTone = __toESM(require("@mui/icons-material/RemoveRedEyeTwoTone"));
564
+ var import_PhotoSizeSelectLarge = __toESM(require("@mui/icons-material/PhotoSizeSelectLarge"));
565
+ var import_LockPersonOutlined = __toESM(require("@mui/icons-material/LockPersonOutlined"));
566
+ var import_Person = __toESM(require("@mui/icons-material/Person"));
567
+ var import_InsertEmoticon = __toESM(require("@mui/icons-material/InsertEmoticon"));
568
+ var import_RemoveDoneOutlined = __toESM(require("@mui/icons-material/RemoveDoneOutlined"));
569
+ var import_Tag = __toESM(require("@mui/icons-material/Tag"));
570
+ var import_Audiotrack = __toESM(require("@mui/icons-material/Audiotrack"));
571
+ var import_Videocam = __toESM(require("@mui/icons-material/Videocam"));
572
+ var import_Code = __toESM(require("@mui/icons-material/Code"));
573
+ var import_Equalizer = __toESM(require("@mui/icons-material/Equalizer"));
574
+ var import_PivotTableChart = __toESM(require("@mui/icons-material/PivotTableChart"));
575
+ var import_Search = __toESM(require("@mui/icons-material/Search"));
576
+ var import_DataObject = __toESM(require("@mui/icons-material/DataObject"));
577
+ var import_SortByAlpha = __toESM(require("@mui/icons-material/SortByAlpha"));
578
+ var import_ThumbUp = __toESM(require("@mui/icons-material/ThumbUp"));
579
+ var import_AttachMoneyOutlined = __toESM(require("@mui/icons-material/AttachMoneyOutlined"));
580
+ var import_Storage = __toESM(require("@mui/icons-material/Storage"));
581
+ var import_WorkspacePremium = __toESM(require("@mui/icons-material/WorkspacePremium"));
582
+ var import_Numbers = __toESM(require("@mui/icons-material/Numbers"));
583
+ var import_Functions = __toESM(require("@mui/icons-material/Functions"));
584
+ var import_Lightbulb = __toESM(require("@mui/icons-material/Lightbulb"));
585
+ var import_CropRotate = __toESM(require("@mui/icons-material/CropRotate"));
586
+ var import_PhotoSizeSelectLarge2 = __toESM(require("@mui/icons-material/PhotoSizeSelectLarge"));
587
+ var import_CollectionsBookmark = __toESM(require("@mui/icons-material/CollectionsBookmark"));
588
+ var import_Schedule = __toESM(require("@mui/icons-material/Schedule"));
589
+ var import_Style = __toESM(require("@mui/icons-material/Style"));
590
+ var import_Crop169 = __toESM(require("@mui/icons-material/Crop169"));
591
+ var import_CropSquare = __toESM(require("@mui/icons-material/CropSquare"));
592
+ var import_GraphicEqRounded = __toESM(require("@mui/icons-material/GraphicEqRounded"));
593
+ var import_MemoryRounded = __toESM(require("@mui/icons-material/MemoryRounded"));
594
+ var import_AddCircleOutlineRounded = __toESM(require("@mui/icons-material/AddCircleOutlineRounded"));
595
+ var import_Add = __toESM(require("@mui/icons-material/Add"));
596
+ var import_Close = __toESM(require("@mui/icons-material/Close"));
597
+ var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
598
+ var import_Autorenew = __toESM(require("@mui/icons-material/Autorenew"));
599
+ var import_CheckCircle = __toESM(require("@mui/icons-material/CheckCircle"));
600
+ var import_Menu3 = __toESM(require("@mui/icons-material/Menu"));
601
+ var import_MoreVert = __toESM(require("@mui/icons-material/MoreVert"));
602
+ var import_MoreHoriz = __toESM(require("@mui/icons-material/MoreHoriz"));
603
+ var import_ContentCopy = __toESM(require("@mui/icons-material/ContentCopy"));
604
+ var import_ContentPaste = __toESM(require("@mui/icons-material/ContentPaste"));
605
+ var import_Cloud = __toESM(require("@mui/icons-material/Cloud"));
606
+ var import_DownloadOutlined = __toESM(require("@mui/icons-material/DownloadOutlined"));
607
+ var import_DownloadDoneOutlined = __toESM(require("@mui/icons-material/DownloadDoneOutlined"));
608
+ var import_StarBorderOutlined = __toESM(require("@mui/icons-material/StarBorderOutlined"));
609
+ var import_DeleteForever = __toESM(require("@mui/icons-material/DeleteForever"));
610
+ var import_LayersClear = __toESM(require("@mui/icons-material/LayersClear"));
611
+ var import_Check = __toESM(require("@mui/icons-material/Check"));
612
+ var import_DoneAll = __toESM(require("@mui/icons-material/DoneAll"));
613
+ var import_PowerSettingsNew = __toESM(require("@mui/icons-material/PowerSettingsNew"));
614
+ var import_Send = __toESM(require("@mui/icons-material/Send"));
615
+ var import_ZoomInMap = __toESM(require("@mui/icons-material/ZoomInMap"));
616
+ var import_ZoomOutMap = __toESM(require("@mui/icons-material/ZoomOutMap"));
617
+ var import_HomeRepairService = __toESM(require("@mui/icons-material/HomeRepairService"));
618
+ var import_Construction = __toESM(require("@mui/icons-material/Construction"));
619
+ var import_Help = __toESM(require("@mui/icons-material/Help"));
620
+ var import_EmojiFlags = __toESM(require("@mui/icons-material/EmojiFlags"));
621
+ var import_Edit = __toESM(require("@mui/icons-material/Edit"));
622
+ var import_ForkRight = __toESM(require("@mui/icons-material/ForkRight"));
623
+ var import_Settings = __toESM(require("@mui/icons-material/Settings"));
624
+ var import_Restore = __toESM(require("@mui/icons-material/Restore"));
625
+ var import_EditNote = __toESM(require("@mui/icons-material/EditNote"));
626
+ var import_HomeOutlined = __toESM(require("@mui/icons-material/HomeOutlined"));
627
+ var import_ExitToAppOutlined = __toESM(require("@mui/icons-material/ExitToAppOutlined"));
628
+ var import_WbSunnyOutlined = __toESM(require("@mui/icons-material/WbSunnyOutlined"));
629
+ var import_DarkModeOutlined = __toESM(require("@mui/icons-material/DarkModeOutlined"));
630
+ var import_AttachFileOutlined = __toESM(require("@mui/icons-material/AttachFileOutlined"));
631
+ var import_NoteAdd = __toESM(require("@mui/icons-material/NoteAdd"));
632
+ var import_CloudUpload = __toESM(require("@mui/icons-material/CloudUpload"));
633
+ var import_KeyboardDoubleArrowRight = __toESM(require("@mui/icons-material/KeyboardDoubleArrowRight"));
634
+ var import_KeyboardDoubleArrowLeft = __toESM(require("@mui/icons-material/KeyboardDoubleArrowLeft"));
635
+ var import_KeyboardDoubleArrowRightRounded = __toESM(require("@mui/icons-material/KeyboardDoubleArrowRightRounded"));
636
+ var import_FitScreen = __toESM(require("@mui/icons-material/FitScreen"));
637
+ var import_Fullscreen = __toESM(require("@mui/icons-material/Fullscreen"));
638
+ var import_Biotech = __toESM(require("@mui/icons-material/Biotech"));
639
+ var import_Share = __toESM(require("@mui/icons-material/Share"));
640
+ var import_FilterAlt = __toESM(require("@mui/icons-material/FilterAlt"));
641
+ var import_Sync = __toESM(require("@mui/icons-material/Sync"));
642
+ var import_PlayArrow = __toESM(require("@mui/icons-material/PlayArrow"));
643
+ var import_PauseOutlined = __toESM(require("@mui/icons-material/PauseOutlined"));
644
+ var import_Casino = __toESM(require("@mui/icons-material/Casino"));
645
+ var import_Paid = __toESM(require("@mui/icons-material/Paid"));
646
+ var import_Save = __toESM(require("@mui/icons-material/Save"));
647
+ var import_StopRounded = __toESM(require("@mui/icons-material/StopRounded"));
648
+ var import_Replay = __toESM(require("@mui/icons-material/Replay"));
649
+ var import_AccountTree = __toESM(require("@mui/icons-material/AccountTree"));
650
+ var import_Close2 = __toESM(require("@mui/icons-material/Close"));
651
+ var import_KeyboardArrowDown = __toESM(require("@mui/icons-material/KeyboardArrowDown"));
652
+ var import_KeyboardArrowRight = __toESM(require("@mui/icons-material/KeyboardArrowRight"));
653
+ var import_SearchRounded = __toESM(require("@mui/icons-material/SearchRounded"));
654
+ var import_CloseRounded = __toESM(require("@mui/icons-material/CloseRounded"));
655
+ var import_SortByAlphaRounded = __toESM(require("@mui/icons-material/SortByAlphaRounded"));
656
+ var import_FilterAltOutlined = __toESM(require("@mui/icons-material/FilterAltOutlined"));
657
+ var import_InboxOutlined = __toESM(require("@mui/icons-material/InboxOutlined"));
658
+ var import_SearchOff = __toESM(require("@mui/icons-material/SearchOff"));
659
+ var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
660
+ var import_ArrowDropDownRounded = __toESM(require("@mui/icons-material/ArrowDropDownRounded"));
661
+ var import_AccountBox = __toESM(require("@mui/icons-material/AccountBox"));
662
+ var import_Logout = __toESM(require("@mui/icons-material/Logout"));
663
+ var import_Login = __toESM(require("@mui/icons-material/Login"));
664
+ var import_Dashboard = __toESM(require("@mui/icons-material/Dashboard"));
665
+ var import_AccountTreeOutlined = __toESM(require("@mui/icons-material/AccountTreeOutlined"));
666
+ var import_HelpOutline = __toESM(require("@mui/icons-material/HelpOutline"));
667
+ var import_NavigateBefore = __toESM(require("@mui/icons-material/NavigateBefore"));
668
+ var import_NavigateNext = __toESM(require("@mui/icons-material/NavigateNext"));
669
+ var import_Person2 = __toESM(require("@mui/icons-material/Person"));
670
+ var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
671
+ var import_QuestionAnswerOutlined = __toESM(require("@mui/icons-material/QuestionAnswerOutlined"));
672
+ var import_Today = __toESM(require("@mui/icons-material/Today"));
673
+ var import_DeleteForever2 = __toESM(require("@mui/icons-material/DeleteForever"));
674
+ var import_AdsClick = __toESM(require("@mui/icons-material/AdsClick"));
675
+ var import_Fingerprint = __toESM(require("@mui/icons-material/Fingerprint"));
676
+ var import_SportsEsportsOutlined = __toESM(require("@mui/icons-material/SportsEsportsOutlined"));
677
+ var import_HelpOutlineRounded = __toESM(require("@mui/icons-material/HelpOutlineRounded"));
678
+ var import_AccountTreeOutlined2 = __toESM(require("@mui/icons-material/AccountTreeOutlined"));
679
+ var import_SmartToyOutlined = __toESM(require("@mui/icons-material/SmartToyOutlined"));
680
+ var import_AcUnit = __toESM(require("@mui/icons-material/AcUnit"));
681
+ var import_Loop = __toESM(require("@mui/icons-material/Loop"));
682
+ var import_Pending = __toESM(require("@mui/icons-material/Pending"));
683
+ var import_AllInclusive = __toESM(require("@mui/icons-material/AllInclusive"));
684
+ var import_WarningOutlined = __toESM(require("@mui/icons-material/WarningOutlined"));
685
+ var import_InfoOutlined = __toESM(require("@mui/icons-material/InfoOutlined"));
686
+ var import_AutoAwesomeRounded = __toESM(require("@mui/icons-material/AutoAwesomeRounded"));
687
+ var import_ErrorOutlineOutlined = __toESM(require("@mui/icons-material/ErrorOutlineOutlined"));
688
+ var import_Download = __toESM(require("@mui/icons-material/Download"));
689
+
690
+ // src/components/elemental/Typography/src/Typography.ts
691
+ var import_Typography = __toESM(require("@mui/material/Typography"));
692
+
693
+ // src/components/elemental/Menu/src/DetailMenu/DetailMenu.tsx
694
+ var import_jsx_runtime6 = require("react/jsx-runtime");
695
+ function DetailMenu({
696
+ anchorEl,
697
+ options,
698
+ selectedId = null,
699
+ onClose,
700
+ onSelect,
701
+ placement = "top-start",
702
+ searchable = false,
703
+ searchPlaceholder = "Search\u2026",
704
+ showDetailPanel = true,
705
+ emptySearchText = "No matches",
706
+ collapsedRowLabel = (count) => `${count} more`,
707
+ footerSlot,
708
+ maxListHeight = 280,
709
+ listMinWidth = 196,
710
+ listMaxWidth = 260,
711
+ detailWidth = 180,
712
+ slotProps
713
+ }) {
714
+ const open = Boolean(anchorEl);
715
+ const [hoveredId, setHoveredId] = (0, import_react5.useState)(null);
716
+ const [query, setQuery] = (0, import_react5.useState)("");
717
+ const [expanded, setExpanded] = (0, import_react5.useState)(false);
718
+ const [detailSide, setDetailSide] = (0, import_react5.useState)("right");
719
+ const [detailTop, setDetailTop] = (0, import_react5.useState)(0);
720
+ const searchRef = (0, import_react5.useRef)(null);
721
+ const rootRef = (0, import_react5.useRef)(null);
722
+ const listRef = (0, import_react5.useRef)(null);
723
+ const detailPaperRef = (0, import_react5.useRef)(null);
724
+ const eventOriginatedInside = (event) => {
725
+ const root = rootRef.current;
726
+ if (!root) {
727
+ return false;
728
+ }
729
+ const path = typeof event.composedPath === "function" ? event.composedPath() : [event.target];
730
+ return path.some(
731
+ (node) => node instanceof Node && (node === root || root.contains(node))
732
+ );
733
+ };
734
+ const { sx: paperSlotSx, ...paperSlotProps } = slotProps?.paper ?? {};
735
+ const { sx: detailPaperSlotSx, ...detailPaperSlotProps } = slotProps?.detailPaper ?? {};
736
+ const filteredOptions = (0, import_react5.useMemo)(() => {
737
+ const normalized = query.trim().toLowerCase();
738
+ if (!normalized) {
739
+ return options;
740
+ }
741
+ return options.filter((option) => {
742
+ const haystack = [option.label, option.detail, option.badge, option.keywords].filter(Boolean).join(" ").toLowerCase();
743
+ return haystack.includes(normalized);
744
+ });
745
+ }, [options, query]);
746
+ const showCollapsed = expanded || query.trim().length > 0;
747
+ const visibleOptions = showCollapsed ? filteredOptions : filteredOptions.filter((option) => !option.collapsed);
748
+ const hiddenCount = filteredOptions.length - visibleOptions.length;
749
+ const updateDetailPosition = import_react5.default.useCallback(() => {
750
+ const root = rootRef.current;
751
+ if (!root || !showDetailPanel) {
752
+ return;
753
+ }
754
+ const nextSide = resolveDetailSide(root, toCssPixels(detailWidth, 180));
755
+ setDetailSide((current) => current === nextSide ? current : nextSide);
756
+ if (!hoveredId) {
757
+ return;
758
+ }
759
+ const row = root.querySelector(
760
+ `[data-detail-menu-option="${CSS.escape(hoveredId)}"]`
761
+ );
762
+ if (!(row instanceof HTMLElement)) {
763
+ return;
764
+ }
765
+ const rootRect = root.getBoundingClientRect();
766
+ const rowRect = row.getBoundingClientRect();
767
+ let top = rowRect.top - rootRect.top;
768
+ const detailHeight = detailPaperRef.current?.offsetHeight ?? 0;
769
+ if (detailHeight > 0) {
770
+ const overflow = rowRect.top + detailHeight - (window.innerHeight - VIEWPORT_PAD_PX);
771
+ if (overflow > 0) {
772
+ top -= overflow;
773
+ }
774
+ }
775
+ setDetailTop(
776
+ (current) => Math.abs(current - top) < 0.5 ? current : top
777
+ );
778
+ }, [detailWidth, hoveredId, showDetailPanel]);
779
+ const updateDetailPositionRef = (0, import_react5.useRef)(updateDetailPosition);
780
+ updateDetailPositionRef.current = updateDetailPosition;
781
+ (0, import_react5.useLayoutEffect)(() => {
782
+ if (!open || !showDetailPanel) {
783
+ return;
784
+ }
785
+ updateDetailPosition();
786
+ const id = window.requestAnimationFrame(() => updateDetailPosition());
787
+ return () => window.cancelAnimationFrame(id);
788
+ }, [open, showDetailPanel, hoveredId, updateDetailPosition]);
789
+ (0, import_react5.useEffect)(() => {
790
+ if (!open || !showDetailPanel) {
791
+ return;
792
+ }
793
+ const onResize = () => updateDetailPosition();
794
+ window.addEventListener("resize", onResize);
795
+ const list = listRef.current;
796
+ list?.addEventListener("scroll", onResize, { passive: true });
797
+ return () => {
798
+ window.removeEventListener("resize", onResize);
799
+ list?.removeEventListener("scroll", onResize);
800
+ };
801
+ }, [open, showDetailPanel, updateDetailPosition]);
802
+ const updateDetailSideRef = updateDetailPositionRef;
803
+ (0, import_react5.useEffect)(() => {
804
+ if (!open) {
805
+ setHoveredId(null);
806
+ setQuery("");
807
+ setExpanded(false);
808
+ setDetailSide("right");
809
+ setDetailTop(0);
810
+ return;
811
+ }
812
+ setHoveredId(selectedId || options[0]?.id || null);
813
+ if (searchable) {
814
+ const id = window.requestAnimationFrame(() => {
815
+ searchRef.current?.focus();
816
+ });
817
+ return () => window.cancelAnimationFrame(id);
818
+ }
819
+ }, [open, options, selectedId, searchable]);
820
+ (0, import_react5.useEffect)(() => {
821
+ if (!open) {
822
+ return;
823
+ }
824
+ if (visibleOptions.length === 0) {
825
+ setHoveredId(null);
826
+ return;
827
+ }
828
+ setHoveredId((current) => {
829
+ if (current && visibleOptions.some((option) => option.id === current)) {
830
+ return current;
831
+ }
832
+ if (selectedId && visibleOptions.some((option) => option.id === selectedId)) {
833
+ return selectedId;
834
+ }
835
+ return visibleOptions[0]?.id ?? null;
836
+ });
837
+ }, [visibleOptions, open, selectedId]);
838
+ const hoveredOption = visibleOptions.find((option) => option.id === hoveredId) ?? visibleOptions.find((option) => option.id === selectedId) ?? visibleOptions[0];
839
+ const paperSx2 = {
840
+ border: "1px solid",
841
+ borderColor: "divider",
842
+ borderRadius: 2.5,
843
+ overflow: "hidden",
844
+ bgcolor: "color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)",
845
+ boxShadow: "0 12px 32px color-mix(in srgb, var(--mui-palette-common-black), transparent 78%)"
846
+ };
847
+ const detailPositionSx = detailSide === "left" ? { right: "calc(100% + 8px)", left: "auto" } : { left: "calc(100% + 8px)", right: "auto" };
848
+ const flipFallbacks = placement.startsWith("right") ? ["left-start", "right-end", "left-end"] : placement.startsWith("left") ? ["right-start", "left-end", "right-end"] : ["bottom-start", "top-start"];
849
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
850
+ import_Popper.default,
851
+ {
852
+ open,
853
+ anchorEl,
854
+ placement,
855
+ modifiers: [
856
+ { name: "offset", options: { offset: [0, 10] } },
857
+ { name: "preventOverflow", options: { padding: 8 } },
858
+ // Keep start-aligned so the list stays under the chip; end placements
859
+ // misalign when a wide absolute detail panel exists beside the list.
860
+ // Side placements (ModelPicker flyout) flip left/right instead of up.
861
+ { name: "flip", options: { fallbackPlacements: [...flipFallbacks] } },
862
+ {
863
+ name: "detailSide",
864
+ enabled: true,
865
+ phase: "write",
866
+ fn() {
867
+ updateDetailSideRef.current();
868
+ }
869
+ }
870
+ ],
871
+ sx: { zIndex: (theme) => theme.zIndex.modal + 2 },
872
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
873
+ import_ClickAwayListener.default,
874
+ {
875
+ onClickAway: (event) => {
876
+ if (eventOriginatedInside(event)) {
877
+ return;
878
+ }
879
+ onClose();
880
+ },
881
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
882
+ import_Box.default,
883
+ {
884
+ ref: rootRef,
885
+ onKeyDown: (event) => {
886
+ if (event.key === "Tab" && hiddenCount > 0) {
887
+ event.preventDefault();
888
+ setExpanded(true);
889
+ }
890
+ },
891
+ sx: {
892
+ position: "relative",
893
+ display: "inline-block",
894
+ verticalAlign: "top"
895
+ },
896
+ children: [
897
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
898
+ MuiPaper,
899
+ {
900
+ elevation: 0,
901
+ ...paperSlotProps,
902
+ sx: mergeSx(
903
+ { ...paperSx2, minWidth: listMinWidth, maxWidth: listMaxWidth },
904
+ paperSlotSx
905
+ ),
906
+ children: [
907
+ searchable ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
908
+ import_Box.default,
909
+ {
910
+ sx: {
911
+ px: 1,
912
+ pt: 1,
913
+ pb: 0.5,
914
+ borderBottom: "1px solid",
915
+ borderColor: "divider"
916
+ },
917
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
918
+ import_InputBase.default,
919
+ {
920
+ inputRef: searchRef,
921
+ value: query,
922
+ onChange: (event) => setQuery(event.target.value),
923
+ onKeyDown: (event) => {
924
+ if (event.key === "Escape") {
925
+ event.stopPropagation();
926
+ if (query) {
927
+ setQuery("");
928
+ return;
929
+ }
930
+ onClose();
931
+ }
932
+ },
933
+ placeholder: searchPlaceholder,
934
+ fullWidth: true,
935
+ startAdornment: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_InputAdornment.default, { position: "start", sx: { mr: 0.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Search.default, { sx: { fontSize: 16, color: "text.secondary" } }) }),
936
+ endAdornment: query ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_InputAdornment.default, { position: "end", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
937
+ IconButton_default,
938
+ {
939
+ size: "small",
940
+ "aria-label": "Clear search",
941
+ onClick: () => {
942
+ setQuery("");
943
+ searchRef.current?.focus();
944
+ },
945
+ sx: { p: 0.25 },
946
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Close2.default, { sx: { fontSize: 14 } })
947
+ }
948
+ ) }) : null,
949
+ sx: {
950
+ px: 0.75,
951
+ py: 0.35,
952
+ fontSize: "0.82rem",
953
+ borderRadius: 1.5,
954
+ bgcolor: "action.hover",
955
+ "& .MuiInputBase-input": {
956
+ py: 0.4
957
+ }
958
+ }
959
+ }
960
+ )
961
+ }
962
+ ) : null,
963
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
964
+ import_List.default,
965
+ {
966
+ ref: listRef,
967
+ dense: true,
968
+ disablePadding: true,
969
+ sx: {
970
+ py: 0.5,
971
+ maxHeight: maxListHeight,
972
+ overflowY: "auto"
973
+ },
974
+ children: visibleOptions.length === 0 && hiddenCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Box.default, { sx: { px: 1.5, py: 1.25 }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
975
+ import_Typography.default,
976
+ {
977
+ variant: "body2",
978
+ sx: { fontSize: "0.78rem", color: "text.secondary", m: 0 },
979
+ children: emptySearchText
980
+ }
981
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
982
+ visibleOptions.map((option, index) => {
983
+ const selected = option.id === selectedId;
984
+ const hovered = option.id === hoveredId;
985
+ const accent = option.accentColor;
986
+ const showGroupHeader = option.group != null && (index === 0 || visibleOptions[index - 1]?.group !== option.group);
987
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_react5.default.Fragment, { children: [
988
+ showGroupHeader ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
989
+ import_Typography.default,
990
+ {
991
+ component: "div",
992
+ sx: {
993
+ px: 1.5,
994
+ pt: 1,
995
+ pb: 0.25,
996
+ fontSize: "0.66rem",
997
+ fontWeight: 700,
998
+ letterSpacing: "0.06em",
999
+ textTransform: "uppercase",
1000
+ color: "text.secondary",
1001
+ m: 0
1002
+ },
1003
+ children: option.group
1004
+ }
1005
+ ) : null,
1006
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1007
+ import_ListItemButton.default,
1008
+ {
1009
+ selected,
1010
+ "data-detail-menu-option": option.id,
1011
+ onMouseEnter: () => setHoveredId(option.id),
1012
+ onFocus: () => setHoveredId(option.id),
1013
+ onClick: () => onSelect(option.id),
1014
+ sx: {
1015
+ mx: 0.5,
1016
+ my: 0.15,
1017
+ px: 1,
1018
+ py: 0.85,
1019
+ gap: 1,
1020
+ borderRadius: 1.75,
1021
+ alignItems: "center",
1022
+ "& .detail-menu-action": { opacity: 0 },
1023
+ "&:hover .detail-menu-action, &:focus-within .detail-menu-action": { opacity: 1 },
1024
+ "&.Mui-selected": {
1025
+ bgcolor: "color-mix(in srgb, var(--mui-palette-action-selected), transparent 55%)"
1026
+ },
1027
+ "&.Mui-selected:hover": {
1028
+ bgcolor: "color-mix(in srgb, var(--mui-palette-action-selected), transparent 35%)"
1029
+ },
1030
+ ...hovered && !selected ? {
1031
+ bgcolor: "color-mix(in srgb, var(--mui-palette-action-hover), transparent 40%)"
1032
+ } : null
1033
+ },
1034
+ children: [
1035
+ option.icon ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1036
+ import_Box.default,
1037
+ {
1038
+ sx: {
1039
+ width: 22,
1040
+ height: 22,
1041
+ display: "inline-flex",
1042
+ alignItems: "center",
1043
+ justifyContent: "center",
1044
+ flexShrink: 0
1045
+ },
1046
+ children: option.icon
1047
+ }
1048
+ ) : null,
1049
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1050
+ import_Typography.default,
1051
+ {
1052
+ sx: {
1053
+ flex: 1,
1054
+ minWidth: 0,
1055
+ fontSize: "0.82rem",
1056
+ fontWeight: selected ? 700 : 600,
1057
+ color: selected && accent ? accent : "text.primary",
1058
+ lineHeight: 1.2,
1059
+ overflow: "hidden",
1060
+ textOverflow: "ellipsis",
1061
+ whiteSpace: "nowrap",
1062
+ m: 0
1063
+ },
1064
+ children: option.label
1065
+ }
1066
+ ),
1067
+ option.badge ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1068
+ import_Typography.default,
1069
+ {
1070
+ component: "span",
1071
+ sx: {
1072
+ flexShrink: 0,
1073
+ fontSize: "0.72rem",
1074
+ fontWeight: 500,
1075
+ color: "text.secondary",
1076
+ m: 0
1077
+ },
1078
+ children: option.badge
1079
+ }
1080
+ ) : null,
1081
+ option.actionSlot ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1082
+ import_Box.default,
1083
+ {
1084
+ component: "span",
1085
+ className: "detail-menu-action",
1086
+ onClick: (event) => event.stopPropagation(),
1087
+ sx: {
1088
+ display: "inline-flex",
1089
+ alignItems: "center",
1090
+ justifyContent: "center",
1091
+ minWidth: 18,
1092
+ flexShrink: 0,
1093
+ color: "text.secondary",
1094
+ transition: "opacity 120ms"
1095
+ },
1096
+ children: option.actionSlot
1097
+ }
1098
+ ) : null
1099
+ ]
1100
+ }
1101
+ )
1102
+ ] }, option.id);
1103
+ }),
1104
+ hiddenCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1105
+ import_ListItemButton.default,
1106
+ {
1107
+ onMouseDown: (event) => {
1108
+ event.preventDefault();
1109
+ event.stopPropagation();
1110
+ },
1111
+ onClick: (event) => {
1112
+ event.preventDefault();
1113
+ event.stopPropagation();
1114
+ setExpanded(true);
1115
+ },
1116
+ sx: {
1117
+ mx: 0.5,
1118
+ my: 0.15,
1119
+ px: 1,
1120
+ py: 0.85,
1121
+ borderRadius: 1.75,
1122
+ alignItems: "center"
1123
+ },
1124
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1125
+ import_Typography.default,
1126
+ {
1127
+ sx: {
1128
+ flex: 1,
1129
+ minWidth: 0,
1130
+ fontSize: "0.78rem",
1131
+ color: "text.secondary",
1132
+ m: 0
1133
+ },
1134
+ children: collapsedRowLabel(hiddenCount)
1135
+ }
1136
+ )
1137
+ }
1138
+ ) : null
1139
+ ] })
1140
+ }
1141
+ ),
1142
+ footerSlot ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1143
+ import_Box.default,
1144
+ {
1145
+ sx: {
1146
+ borderTop: "1px solid",
1147
+ borderColor: "divider",
1148
+ px: 0.5,
1149
+ py: 0.35
1150
+ },
1151
+ children: footerSlot
1152
+ }
1153
+ ) : null
1154
+ ]
1155
+ }
1156
+ ),
1157
+ showDetailPanel && hoveredOption ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1158
+ import_Box.default,
1159
+ {
1160
+ ref: detailPaperRef,
1161
+ sx: {
1162
+ display: { xs: "none", sm: "block" },
1163
+ position: "absolute",
1164
+ top: detailTop,
1165
+ ...detailPositionSx,
1166
+ width: detailWidth
1167
+ },
1168
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1169
+ MuiPaper,
1170
+ {
1171
+ elevation: 0,
1172
+ ...detailPaperSlotProps,
1173
+ sx: mergeSx(
1174
+ {
1175
+ px: 1.25,
1176
+ py: 1.1,
1177
+ border: "1px solid",
1178
+ borderColor: "divider",
1179
+ borderRadius: 2,
1180
+ bgcolor: "color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)",
1181
+ boxShadow: "0 10px 28px color-mix(in srgb, var(--mui-palette-common-black), transparent 82%)"
1182
+ },
1183
+ detailPaperSlotSx
1184
+ ),
1185
+ children: [
1186
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1187
+ import_Typography.default,
1188
+ {
1189
+ sx: {
1190
+ fontSize: "0.78rem",
1191
+ fontWeight: 700,
1192
+ color: hoveredOption.accentColor || "text.primary",
1193
+ lineHeight: 1.2,
1194
+ mt: 0,
1195
+ mx: 0,
1196
+ mb: 0.4
1197
+ },
1198
+ children: hoveredOption.label
1199
+ }
1200
+ ),
1201
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1202
+ import_Typography.default,
1203
+ {
1204
+ sx: {
1205
+ fontSize: "0.72rem",
1206
+ color: "text.secondary",
1207
+ lineHeight: 1.35,
1208
+ m: 0
1209
+ },
1210
+ children: hoveredOption.detail?.trim() || "\u2014"
1211
+ }
1212
+ ),
1213
+ hoveredOption.detailSlot ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1214
+ import_Box.default,
1215
+ {
1216
+ sx: {
1217
+ mt: 1,
1218
+ pt: 1,
1219
+ borderTop: "1px solid",
1220
+ borderColor: "divider"
1221
+ },
1222
+ children: hoveredOption.detailSlot
1223
+ }
1224
+ ) : null
1225
+ ]
1226
+ }
1227
+ )
1228
+ }
1229
+ ) : null
1230
+ ]
1231
+ }
1232
+ )
1233
+ }
1234
+ )
1235
+ }
1236
+ );
1237
+ }
1238
+ var DETAIL_GAP_PX = 8;
1239
+ var VIEWPORT_PAD_PX = 8;
1240
+ function toCssPixels(value, fallback) {
1241
+ if (typeof value === "number" && Number.isFinite(value)) {
1242
+ return value;
1243
+ }
1244
+ if (typeof value === "string") {
1245
+ const match = value.trim().match(/^(\d+(?:\.\d+)?)px$/i);
1246
+ if (match) {
1247
+ return Number.parseFloat(match[1]);
1248
+ }
1249
+ }
1250
+ return fallback;
1251
+ }
1252
+ function resolveDetailSide(listRoot, detailWidthPx) {
1253
+ const rect = listRoot.getBoundingClientRect();
1254
+ const need = detailWidthPx + DETAIL_GAP_PX;
1255
+ const spaceRight = window.innerWidth - rect.right - VIEWPORT_PAD_PX;
1256
+ const spaceLeft = rect.left - VIEWPORT_PAD_PX;
1257
+ if (spaceRight >= need) {
1258
+ return "right";
1259
+ }
1260
+ if (spaceLeft >= need) {
1261
+ return "left";
1262
+ }
1263
+ return spaceLeft > spaceRight ? "left" : "right";
1264
+ }
1265
+
1266
+ // src/components/elemental/Menu/src/ModelMenu/ModelMenu.tsx
1267
+ var import_react6 = require("react");
1268
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1269
+ var BRAND_LABELS = {
1270
+ anthropic: "Anthropic",
1271
+ google: "Google",
1272
+ meta: "Meta",
1273
+ openai: "OpenAI"
1274
+ };
1275
+ var defaultBrandIcon = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_MemoryRounded.default, { sx: { fontSize: 14 }, "aria-hidden": true });
1276
+ function ModelMenu({
1277
+ anchorEl,
1278
+ options,
1279
+ selectedId = null,
1280
+ onClose,
1281
+ onSelect,
1282
+ searchable,
1283
+ searchPlaceholder = "Search models\u2026",
1284
+ placement,
1285
+ showDetailPanel,
1286
+ brandIconMap,
1287
+ slotProps,
1288
+ maxListHeight,
1289
+ footerSlot
1290
+ }) {
1291
+ const detailOptions = (0, import_react6.useMemo)(
1292
+ () => options.map((option) => ({
1293
+ id: option.id,
1294
+ label: option.label,
1295
+ detail: option.detail,
1296
+ badge: option.badge,
1297
+ detailSlot: option.detailSlot,
1298
+ group: option.group,
1299
+ collapsed: option.collapsed,
1300
+ actionSlot: option.actionSlot,
1301
+ keywords: [option.brand, option.detail, option.keywords].filter(Boolean).join(" "),
1302
+ icon: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1303
+ import_Box.default,
1304
+ {
1305
+ component: "span",
1306
+ title: BRAND_LABELS[option.brand ?? ""],
1307
+ sx: {
1308
+ display: "inline-flex",
1309
+ width: 20,
1310
+ height: 20,
1311
+ alignItems: "center",
1312
+ justifyContent: "center",
1313
+ border: "1px solid",
1314
+ borderColor: "divider",
1315
+ borderRadius: 1.25,
1316
+ color: "text.secondary",
1317
+ "& svg": { display: "block" }
1318
+ },
1319
+ children: option.icon ?? brandIconMap?.[option.brand ?? ""] ?? defaultBrandIcon()
1320
+ }
1321
+ )
1322
+ })),
1323
+ [options, brandIconMap]
1324
+ );
1325
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1326
+ DetailMenu,
1327
+ {
1328
+ anchorEl,
1329
+ options: detailOptions,
1330
+ selectedId,
1331
+ searchable: searchable ?? options.length >= 6,
1332
+ searchPlaceholder,
1333
+ placement,
1334
+ showDetailPanel,
1335
+ collapsedRowLabel: (count) => `${count} more model${count === 1 ? "" : "s"}`,
1336
+ onClose,
1337
+ onSelect,
1338
+ slotProps,
1339
+ maxListHeight,
1340
+ footerSlot
1341
+ }
1342
+ );
1343
+ }
1344
+
1345
+ // src/components/elemental/Menu/src/ModelPicker/ModelPicker.tsx
1346
+ var import_react7 = require("react");
1347
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1348
+ var paperSx = {
1349
+ border: "1px solid",
1350
+ borderColor: "divider",
1351
+ borderRadius: 2.5,
1352
+ overflow: "hidden",
1353
+ bgcolor: "color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)",
1354
+ boxShadow: "0 12px 32px color-mix(in srgb, var(--mui-palette-common-black), transparent 78%)",
1355
+ minWidth: 180
1356
+ };
1357
+ function ModelPicker({
1358
+ anchorEl,
1359
+ options,
1360
+ selectedId = null,
1361
+ onClose,
1362
+ onSelect,
1363
+ configSlot,
1364
+ modelSectionLabel = "Model",
1365
+ searchable,
1366
+ searchPlaceholder,
1367
+ brandIconMap,
1368
+ slotProps,
1369
+ maxListHeight,
1370
+ footerSlot,
1371
+ showDetailPanel = true
1372
+ }) {
1373
+ const open = Boolean(anchorEl);
1374
+ const [modelRowEl, setModelRowEl] = (0, import_react7.useState)(null);
1375
+ const [modelFlyoutOpen, setModelFlyoutOpen] = (0, import_react7.useState)(false);
1376
+ const rootRef = (0, import_react7.useRef)(null);
1377
+ const selected = (0, import_react7.useMemo)(
1378
+ () => options.find((option) => option.id === selectedId) ?? options[0],
1379
+ [options, selectedId]
1380
+ );
1381
+ (0, import_react7.useEffect)(() => {
1382
+ if (!open) {
1383
+ setModelFlyoutOpen(false);
1384
+ setModelRowEl(null);
1385
+ }
1386
+ }, [open]);
1387
+ const closeAll = () => {
1388
+ setModelFlyoutOpen(false);
1389
+ onClose();
1390
+ };
1391
+ const openModelFlyout = (element) => {
1392
+ setModelRowEl(element);
1393
+ setModelFlyoutOpen(true);
1394
+ };
1395
+ const isInsidePickerSurface = (event) => {
1396
+ const path = typeof event.composedPath === "function" ? event.composedPath() : [event.target];
1397
+ return path.some((node) => {
1398
+ if (!(node instanceof Element)) {
1399
+ return false;
1400
+ }
1401
+ if (rootRef.current?.contains(node)) {
1402
+ return true;
1403
+ }
1404
+ return node.hasAttribute("data-model-picker-flyout") || Boolean(node.closest("[data-model-picker-flyout]"));
1405
+ });
1406
+ };
1407
+ const flyoutSlotProps = (0, import_react7.useMemo)(() => {
1408
+ const paper = slotProps?.paper;
1409
+ const detailPaper = slotProps?.detailPaper;
1410
+ const flyoutTag = { "data-model-picker-flyout": "" };
1411
+ return {
1412
+ ...slotProps,
1413
+ paper: {
1414
+ ...paper,
1415
+ ...flyoutTag
1416
+ },
1417
+ detailPaper: {
1418
+ ...detailPaper,
1419
+ ...flyoutTag
1420
+ }
1421
+ };
1422
+ }, [slotProps]);
1423
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1424
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1425
+ import_Popper.default,
1426
+ {
1427
+ open,
1428
+ anchorEl,
1429
+ placement: "top-start",
1430
+ modifiers: [
1431
+ { name: "offset", options: { offset: [0, 10] } },
1432
+ { name: "preventOverflow", options: { padding: 8 } },
1433
+ {
1434
+ name: "flip",
1435
+ options: { fallbackPlacements: ["bottom-start", "top-start"] }
1436
+ }
1437
+ ],
1438
+ sx: { zIndex: (theme) => theme.zIndex.modal + 2 },
1439
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1440
+ import_ClickAwayListener.default,
1441
+ {
1442
+ onClickAway: (event) => {
1443
+ if (isInsidePickerSurface(event)) {
1444
+ return;
1445
+ }
1446
+ closeAll();
1447
+ },
1448
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_Box.default, { ref: rootRef, sx: { display: "inline-block" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1449
+ MuiPaper,
1450
+ {
1451
+ elevation: 0,
1452
+ sx: paperSx,
1453
+ children: [
1454
+ configSlot ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_Box.default, { sx: { px: 0.5, pt: 0.5, pb: 0.25 }, children: configSlot }) : null,
1455
+ configSlot ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1456
+ import_Box.default,
1457
+ {
1458
+ sx: {
1459
+ borderTop: "1px solid",
1460
+ borderColor: "divider",
1461
+ mx: 1
1462
+ }
1463
+ }
1464
+ ) : null,
1465
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_Box.default, { sx: { px: 0.5, pb: 0.5, pt: configSlot ? 0.25 : 0.5 }, children: [
1466
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1467
+ import_Typography.default,
1468
+ {
1469
+ component: "div",
1470
+ sx: {
1471
+ px: 1,
1472
+ pt: 0.5,
1473
+ pb: 0.15,
1474
+ fontSize: "0.66rem",
1475
+ fontWeight: 700,
1476
+ letterSpacing: "0.04em",
1477
+ color: "text.secondary",
1478
+ m: 0
1479
+ },
1480
+ children: modelSectionLabel
1481
+ }
1482
+ ),
1483
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_List.default, { dense: true, disablePadding: true, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1484
+ import_ListItemButton.default,
1485
+ {
1486
+ onMouseEnter: (event) => openModelFlyout(event.currentTarget),
1487
+ onClick: (event) => openModelFlyout(event.currentTarget),
1488
+ sx: {
1489
+ mx: 0.5,
1490
+ my: 0.15,
1491
+ px: 1,
1492
+ py: 0.75,
1493
+ gap: 1,
1494
+ borderRadius: 1.5,
1495
+ alignItems: "center",
1496
+ bgcolor: "action.hover",
1497
+ "&:hover": { bgcolor: "action.selected" }
1498
+ },
1499
+ children: [
1500
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1501
+ import_Typography.default,
1502
+ {
1503
+ sx: {
1504
+ flex: 1,
1505
+ minWidth: 0,
1506
+ fontSize: "0.82rem",
1507
+ fontWeight: 600,
1508
+ color: "text.primary",
1509
+ overflow: "hidden",
1510
+ textOverflow: "ellipsis",
1511
+ whiteSpace: "nowrap",
1512
+ m: 0
1513
+ },
1514
+ children: selected?.label ?? "Select model"
1515
+ }
1516
+ ),
1517
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1518
+ import_KeyboardArrowRight.default,
1519
+ {
1520
+ sx: { fontSize: 16, color: "text.secondary", flexShrink: 0 }
1521
+ }
1522
+ )
1523
+ ]
1524
+ }
1525
+ ) })
1526
+ ] })
1527
+ ]
1528
+ }
1529
+ ) })
1530
+ }
1531
+ )
1532
+ }
1533
+ ),
1534
+ modelFlyoutOpen ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1535
+ ModelMenu,
1536
+ {
1537
+ anchorEl: modelRowEl,
1538
+ options,
1539
+ selectedId,
1540
+ searchable,
1541
+ searchPlaceholder,
1542
+ brandIconMap,
1543
+ slotProps: flyoutSlotProps,
1544
+ maxListHeight,
1545
+ footerSlot,
1546
+ placement: "right-start",
1547
+ showDetailPanel,
1548
+ onClose: () => setModelFlyoutOpen(false),
1549
+ onSelect: (id) => {
1550
+ onSelect(id);
1551
+ }
1552
+ }
1553
+ ) : null
1554
+ ] });
1555
+ }
1556
+ // Annotate the CommonJS export names for ESM import in node:
1557
+ 0 && (module.exports = {
1558
+ DetailMenu,
1559
+ IconMenu,
1560
+ Menu,
1561
+ MenuItem,
1562
+ MenuPopper,
1563
+ ModelMenu,
1564
+ ModelPicker,
1565
+ StyledItemIcon,
1566
+ StyledMenuItem,
1567
+ menuItemTheme,
1568
+ menuTheme,
1569
+ useMenu
1570
+ });
1571
+ //# sourceMappingURL=menu.js.map