@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,1289 @@
1
+ import {
2
+ default as default11,
3
+ default5 as default12
4
+ } from "./chunk-TDRA5EZI.mjs";
5
+ import {
6
+ default3 as default10
7
+ } from "./chunk-T4X375IG.mjs";
8
+ import {
9
+ MuiPaper
10
+ } from "./chunk-3VUAM2GY.mjs";
11
+ import {
12
+ default as default4,
13
+ default2 as default5
14
+ } from "./chunk-MDAUF7IL.mjs";
15
+ import {
16
+ IconButton_HoverSpinnin_default,
17
+ IconButton_default
18
+ } from "./chunk-JIU5GVM7.mjs";
19
+ import {
20
+ default108 as default8,
21
+ default110 as default9,
22
+ default33 as default6,
23
+ default51 as default7
24
+ } from "./chunk-ZVFYOXDE.mjs";
25
+ import {
26
+ default as default3
27
+ } from "./chunk-4RPFRNXG.mjs";
28
+ import {
29
+ default as default2,
30
+ mergeSx
31
+ } from "./chunk-S6EZVRZC.mjs";
32
+
33
+ // src/components/elemental/Menu/src/Menu/Menu.tsx
34
+ import { useState, forwardRef, useImperativeHandle, useMemo, useEffect } from "react";
35
+ import MenuList from "@mui/material/MenuList";
36
+ import ListItemText from "@mui/material/ListItemText";
37
+ import { styled as styled2 } from "@mui/material/styles";
38
+
39
+ // src/components/elemental/Menu/src/MenuItem.tsx
40
+ import MenuItem from "@mui/material/MenuItem";
41
+ import ListItemIcon from "@mui/material/ListItemIcon";
42
+ import { styled } from "@mui/material/styles";
43
+ var StyledMenuItem = styled(MenuItem, {
44
+ shouldForwardProp: (prop) => prop !== "customPadding" && prop !== "customFontSize"
45
+ })(({ customPadding, customFontSize }) => ({
46
+ width: "-webkit-fill-available",
47
+ borderRadius: "8px",
48
+ minHeight: "fit-content",
49
+ padding: customPadding || "6px 16px",
50
+ margin: "0",
51
+ overflow: "hidden",
52
+ gap: "4px",
53
+ "& .MuiListItemText-primary": {
54
+ fontSize: customFontSize || "1rem",
55
+ overflow: "hidden",
56
+ textOverflow: "ellipsis"
57
+ }
58
+ }));
59
+ var StyledItemIcon = styled(ListItemIcon, {
60
+ shouldForwardProp: (prop) => prop !== "isIconOnly"
61
+ })({
62
+ "&.MuiListItemIcon-root": {
63
+ minWidth: "var(--minW)"
64
+ },
65
+ variants: [
66
+ {
67
+ props: { isIconOnly: true },
68
+ style: {
69
+ "--minW": "0"
70
+ }
71
+ },
72
+ {
73
+ props: { isIconOnly: false },
74
+ style: {
75
+ "--minW": "auto"
76
+ }
77
+ },
78
+ {
79
+ props: { isIconOnly: void 0 },
80
+ // default
81
+ style: {
82
+ "--minW": "auto"
83
+ }
84
+ }
85
+ ]
86
+ });
87
+
88
+ // src/components/elemental/Menu/src/Menu/Menu.tsx
89
+ import { jsx, jsxs } from "react/jsx-runtime";
90
+ var CustomMenuList = forwardRef(({
91
+ options = [],
92
+ extraItemClickHandler,
93
+ menuItemProps,
94
+ initSelected = [],
95
+ multiple = false,
96
+ autoFocusItem,
97
+ menuRef,
98
+ isIconOnly = false,
99
+ optionHeader,
100
+ sorted = true
101
+ }, ref) => {
102
+ const [localSelected, setLocalSelected] = useState(initSelected);
103
+ useImperativeHandle(ref, () => ({
104
+ getSelectedItem: () => localSelected
105
+ }), [localSelected]);
106
+ useEffect(() => {
107
+ setLocalSelected(initSelected);
108
+ }, [initSelected]);
109
+ const sortedOptions = useMemo(() => {
110
+ if (!sorted) return options;
111
+ return [...options].sort((a, b) => {
112
+ if (a.label && b.label) {
113
+ return a.label.toString().localeCompare(b.label.toString());
114
+ }
115
+ return 0;
116
+ });
117
+ }, [sorted, options]);
118
+ return /* @__PURE__ */ jsxs(
119
+ StyledMenuList,
120
+ {
121
+ ref: menuRef,
122
+ autoFocusItem,
123
+ fontSize: menuItemProps?.fontSize,
124
+ padding: menuItemProps?.padding,
125
+ children: [
126
+ optionHeader,
127
+ sortedOptions.map((o, i) => /* @__PURE__ */ jsxs(
128
+ StyledMenuItem,
129
+ {
130
+ selected: localSelected.includes(o.id),
131
+ customPadding: menuItemProps?.padding,
132
+ customFontSize: menuItemProps?.fontSize,
133
+ onClick: (e) => {
134
+ if (extraItemClickHandler) extraItemClickHandler(e);
135
+ if (multiple) setLocalSelected((old) => {
136
+ if (old.includes(o.id)) return old.filter((id) => id !== o.id);
137
+ return [...old, o.id];
138
+ });
139
+ o.onClick?.();
140
+ },
141
+ children: [
142
+ o.icon && /* @__PURE__ */ jsx(StyledItemIcon, { isIconOnly, children: o.icon }),
143
+ o.label && !isIconOnly && /* @__PURE__ */ jsx(ListItemText, { children: o.label }),
144
+ o.extension
145
+ ]
146
+ },
147
+ i
148
+ ))
149
+ ]
150
+ }
151
+ );
152
+ });
153
+ var Menu_default = CustomMenuList;
154
+ var StyledMenuList = styled2(MenuList, {
155
+ shouldForwardProp: (prop) => prop !== "fontSize" && prop !== "padding"
156
+ })((p) => createMenuListTheme(p));
157
+ function createMenuListTheme(p) {
158
+ return {
159
+ "&.MuiList-root": {
160
+ padding: "8px 4px",
161
+ display: "flex",
162
+ flexDirection: "column",
163
+ alignContent: "center",
164
+ alignItems: "center",
165
+ width: "100%",
166
+ gap: "2px",
167
+ "& li": {
168
+ width: "-webkit-fill-available",
169
+ borderRadius: "8px",
170
+ minHeight: "fit-content",
171
+ padding: p.padding || "6px 16px",
172
+ margin: "0",
173
+ overflow: "hidden",
174
+ "& .MuiListItemText-primary": {
175
+ fontSize: p.fontSize || "1rem",
176
+ overflow: "hidden",
177
+ textOverflow: "ellipsis"
178
+ }
179
+ }
180
+ }
181
+ };
182
+ }
183
+
184
+ // src/components/elemental/Menu/src/Menu/index.ts
185
+ import { default as default13 } from "@mui/material/MenuItem";
186
+
187
+ // src/components/elemental/Menu/src/Menu/theme.ts
188
+ var menuItemTheme = {
189
+ defaultProps: {},
190
+ styleOverrides: {
191
+ root: {
192
+ "--menu-item-hover-bg": "var(--mui-palette-background-hover-1)",
193
+ "--menu-item-selected-bg": "var(--mui-palette-focus-1)",
194
+ "&:hover": {
195
+ backgroundColor: "var(--menu-item-hover-bg)"
196
+ },
197
+ "&.Mui-selected:before": {
198
+ width: "100%",
199
+ height: "100%",
200
+ content: "''",
201
+ position: "absolute",
202
+ left: 0,
203
+ top: 0,
204
+ backgroundColor: "var(--menu-item-selected-bg)",
205
+ overflow: "hidden"
206
+ },
207
+ "& svg": {
208
+ fontSize: "1.2rem"
209
+ }
210
+ }
211
+ }
212
+ };
213
+ var menuTheme = {
214
+ styleOverrides: {}
215
+ };
216
+
217
+ // src/components/elemental/Menu/src/useMenu/useMenu.tsx
218
+ import { useState as useState2, useRef } from "react";
219
+ import { jsx as jsx2 } from "react/jsx-runtime";
220
+ var MenuPopper = ({
221
+ placement = "bottom-start",
222
+ options = [],
223
+ openMenuProps,
224
+ menuItemProps,
225
+ optionHeader
226
+ }) => {
227
+ const {
228
+ closeHandler,
229
+ anchorEl,
230
+ onItemClickClientArg,
231
+ multiple,
232
+ ref,
233
+ menuRef,
234
+ initSelected,
235
+ sorted = true
236
+ } = openMenuProps;
237
+ const open = Boolean(anchorEl);
238
+ return /* @__PURE__ */ jsx2(
239
+ default5,
240
+ {
241
+ open,
242
+ anchorEl,
243
+ placement,
244
+ sx: { zIndex: "1301" },
245
+ modifiers: [{
246
+ name: "offset",
247
+ options: { offset: [0, 8] }
248
+ }],
249
+ children: /* @__PURE__ */ jsx2(
250
+ MuiPaper,
251
+ {
252
+ variant: "outlined",
253
+ sx: {
254
+ "&.MuiPaper-root": {
255
+ pr: 1,
256
+ minWidth: 150,
257
+ maxHeight: 300,
258
+ borderRadius: "16px",
259
+ overflow: "hidden",
260
+ display: "flex",
261
+ flexDirection: "column",
262
+ "& .MuiList-root": {
263
+ display: "flex",
264
+ flexDirection: "column",
265
+ alignContent: "center",
266
+ alignItems: "center",
267
+ width: "100%",
268
+ overflowY: "auto",
269
+ height: "100%"
270
+ },
271
+ "& li": {
272
+ width: "100%"
273
+ }
274
+ }
275
+ },
276
+ children: /* @__PURE__ */ jsx2(default4, { onClickAway: closeHandler, children: /* @__PURE__ */ jsx2(
277
+ Menu_default,
278
+ {
279
+ ref,
280
+ menuRef,
281
+ autoFocusItem: open,
282
+ menuItemProps,
283
+ optionHeader,
284
+ options,
285
+ multiple,
286
+ initSelected,
287
+ extraItemClickHandler: (e) => {
288
+ if (onItemClickClientArg) onItemClickClientArg({ event: e, closeHandler });
289
+ },
290
+ sorted
291
+ }
292
+ ) })
293
+ }
294
+ )
295
+ }
296
+ );
297
+ };
298
+ function useMenu({
299
+ onItemClickClientArg,
300
+ multiple = false,
301
+ initSelected = [],
302
+ setSelected
303
+ }) {
304
+ const [anchorEl, setAnchorEl] = useState2(null);
305
+ const [anchorPosition, setAnchorPosition] = useState2({ top: 0, left: 0 });
306
+ const ref = useRef(null);
307
+ const menuRef = useRef(null);
308
+ const closeHandler = (event) => {
309
+ if (event && menuRef.current && event.target instanceof Node && menuRef.current.contains(event.target)) {
310
+ return;
311
+ }
312
+ if (setSelected && multiple) {
313
+ const localSelected = ref.current?.getSelectedItem();
314
+ if (localSelected && Array.isArray(localSelected)) {
315
+ setSelected(localSelected);
316
+ }
317
+ }
318
+ setAnchorEl(null);
319
+ };
320
+ const onTriggerClickHandler = (event) => {
321
+ const bottom = event.clientY;
322
+ const right = event.clientX;
323
+ setAnchorEl(event.currentTarget);
324
+ setAnchorPosition({ top: bottom, left: right });
325
+ };
326
+ return {
327
+ anchorEl,
328
+ anchorPosition,
329
+ onTriggerClickHandler,
330
+ onItemClickClientArg,
331
+ closeHandler,
332
+ multiple,
333
+ ref,
334
+ initSelected,
335
+ menuRef
336
+ };
337
+ }
338
+
339
+ // src/components/elemental/Menu/src/useMenu/IconMenu.tsx
340
+ import { useMemo as useMemo2 } from "react";
341
+ import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
342
+ var IconMenuList = (props) => {
343
+ const {
344
+ options = [],
345
+ slots = {},
346
+ slotProps = {}
347
+ } = props;
348
+ const {
349
+ trigger: triggerProps = {},
350
+ menu: menuProps,
351
+ menuItem: menuItemProps,
352
+ optionHeader: optionHeaderProps,
353
+ popper: popperProps
354
+ } = slotProps;
355
+ const {
356
+ title,
357
+ onItemClickClientArg,
358
+ icon,
359
+ iconSize = "small",
360
+ isSpinButton,
361
+ ...triggerExtraProps
362
+ } = triggerProps;
363
+ const p = useMenu({
364
+ onItemClickClientArg: (p2) => {
365
+ if (p2.closeHandler) p2.closeHandler();
366
+ if (onItemClickClientArg) onItemClickClientArg(p2);
367
+ }
368
+ });
369
+ const Trigger = useMemo2(() => {
370
+ if (slots.trigger) return slots.trigger;
371
+ if (isSpinButton) {
372
+ return IconButton_HoverSpinnin_default;
373
+ } else {
374
+ return IconButton_default;
375
+ }
376
+ }, [isSpinButton, slots.trigger]);
377
+ return (
378
+ // dont use Box here, it will cause the Button tooltip render differently
379
+ // the height of the tooltip will be a bit off from IconButton
380
+ /* @__PURE__ */ jsxs2(Fragment, { children: [
381
+ /* @__PURE__ */ jsx3(
382
+ Trigger,
383
+ {
384
+ title,
385
+ onClick: p.onTriggerClickHandler,
386
+ size: iconSize,
387
+ ...triggerExtraProps,
388
+ children: icon
389
+ }
390
+ ),
391
+ /* @__PURE__ */ jsx3(
392
+ MenuPopper,
393
+ {
394
+ openMenuProps: {
395
+ ...p,
396
+ ...menuProps
397
+ },
398
+ optionHeader: optionHeaderProps,
399
+ options,
400
+ menuItemProps,
401
+ ...popperProps
402
+ }
403
+ )
404
+ ] })
405
+ );
406
+ };
407
+ var IconMenu_default = IconMenuList;
408
+
409
+ // src/components/elemental/Menu/src/DetailMenu/DetailMenu.tsx
410
+ import React, { useEffect as useEffect2, useLayoutEffect, useMemo as useMemo3, useRef as useRef2, useState as useState3 } from "react";
411
+ import InputBase from "@mui/material/InputBase";
412
+ import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
413
+ function DetailMenu({
414
+ anchorEl,
415
+ options,
416
+ selectedId = null,
417
+ onClose,
418
+ onSelect,
419
+ placement = "top-start",
420
+ searchable = false,
421
+ searchPlaceholder = "Search\u2026",
422
+ showDetailPanel = true,
423
+ emptySearchText = "No matches",
424
+ collapsedRowLabel = (count) => `${count} more`,
425
+ footerSlot,
426
+ maxListHeight = 280,
427
+ listMinWidth = 196,
428
+ listMaxWidth = 260,
429
+ detailWidth = 180,
430
+ slotProps
431
+ }) {
432
+ const open = Boolean(anchorEl);
433
+ const [hoveredId, setHoveredId] = useState3(null);
434
+ const [query, setQuery] = useState3("");
435
+ const [expanded, setExpanded] = useState3(false);
436
+ const [detailSide, setDetailSide] = useState3("right");
437
+ const [detailTop, setDetailTop] = useState3(0);
438
+ const searchRef = useRef2(null);
439
+ const rootRef = useRef2(null);
440
+ const listRef = useRef2(null);
441
+ const detailPaperRef = useRef2(null);
442
+ const eventOriginatedInside = (event) => {
443
+ const root = rootRef.current;
444
+ if (!root) {
445
+ return false;
446
+ }
447
+ const path = typeof event.composedPath === "function" ? event.composedPath() : [event.target];
448
+ return path.some(
449
+ (node) => node instanceof Node && (node === root || root.contains(node))
450
+ );
451
+ };
452
+ const { sx: paperSlotSx, ...paperSlotProps } = slotProps?.paper ?? {};
453
+ const { sx: detailPaperSlotSx, ...detailPaperSlotProps } = slotProps?.detailPaper ?? {};
454
+ const filteredOptions = useMemo3(() => {
455
+ const normalized = query.trim().toLowerCase();
456
+ if (!normalized) {
457
+ return options;
458
+ }
459
+ return options.filter((option) => {
460
+ const haystack = [option.label, option.detail, option.badge, option.keywords].filter(Boolean).join(" ").toLowerCase();
461
+ return haystack.includes(normalized);
462
+ });
463
+ }, [options, query]);
464
+ const showCollapsed = expanded || query.trim().length > 0;
465
+ const visibleOptions = showCollapsed ? filteredOptions : filteredOptions.filter((option) => !option.collapsed);
466
+ const hiddenCount = filteredOptions.length - visibleOptions.length;
467
+ const updateDetailPosition = React.useCallback(() => {
468
+ const root = rootRef.current;
469
+ if (!root || !showDetailPanel) {
470
+ return;
471
+ }
472
+ const nextSide = resolveDetailSide(root, toCssPixels(detailWidth, 180));
473
+ setDetailSide((current) => current === nextSide ? current : nextSide);
474
+ if (!hoveredId) {
475
+ return;
476
+ }
477
+ const row = root.querySelector(
478
+ `[data-detail-menu-option="${CSS.escape(hoveredId)}"]`
479
+ );
480
+ if (!(row instanceof HTMLElement)) {
481
+ return;
482
+ }
483
+ const rootRect = root.getBoundingClientRect();
484
+ const rowRect = row.getBoundingClientRect();
485
+ let top = rowRect.top - rootRect.top;
486
+ const detailHeight = detailPaperRef.current?.offsetHeight ?? 0;
487
+ if (detailHeight > 0) {
488
+ const overflow = rowRect.top + detailHeight - (window.innerHeight - VIEWPORT_PAD_PX);
489
+ if (overflow > 0) {
490
+ top -= overflow;
491
+ }
492
+ }
493
+ setDetailTop(
494
+ (current) => Math.abs(current - top) < 0.5 ? current : top
495
+ );
496
+ }, [detailWidth, hoveredId, showDetailPanel]);
497
+ const updateDetailPositionRef = useRef2(updateDetailPosition);
498
+ updateDetailPositionRef.current = updateDetailPosition;
499
+ useLayoutEffect(() => {
500
+ if (!open || !showDetailPanel) {
501
+ return;
502
+ }
503
+ updateDetailPosition();
504
+ const id = window.requestAnimationFrame(() => updateDetailPosition());
505
+ return () => window.cancelAnimationFrame(id);
506
+ }, [open, showDetailPanel, hoveredId, updateDetailPosition]);
507
+ useEffect2(() => {
508
+ if (!open || !showDetailPanel) {
509
+ return;
510
+ }
511
+ const onResize = () => updateDetailPosition();
512
+ window.addEventListener("resize", onResize);
513
+ const list = listRef.current;
514
+ list?.addEventListener("scroll", onResize, { passive: true });
515
+ return () => {
516
+ window.removeEventListener("resize", onResize);
517
+ list?.removeEventListener("scroll", onResize);
518
+ };
519
+ }, [open, showDetailPanel, updateDetailPosition]);
520
+ const updateDetailSideRef = updateDetailPositionRef;
521
+ useEffect2(() => {
522
+ if (!open) {
523
+ setHoveredId(null);
524
+ setQuery("");
525
+ setExpanded(false);
526
+ setDetailSide("right");
527
+ setDetailTop(0);
528
+ return;
529
+ }
530
+ setHoveredId(selectedId || options[0]?.id || null);
531
+ if (searchable) {
532
+ const id = window.requestAnimationFrame(() => {
533
+ searchRef.current?.focus();
534
+ });
535
+ return () => window.cancelAnimationFrame(id);
536
+ }
537
+ }, [open, options, selectedId, searchable]);
538
+ useEffect2(() => {
539
+ if (!open) {
540
+ return;
541
+ }
542
+ if (visibleOptions.length === 0) {
543
+ setHoveredId(null);
544
+ return;
545
+ }
546
+ setHoveredId((current) => {
547
+ if (current && visibleOptions.some((option) => option.id === current)) {
548
+ return current;
549
+ }
550
+ if (selectedId && visibleOptions.some((option) => option.id === selectedId)) {
551
+ return selectedId;
552
+ }
553
+ return visibleOptions[0]?.id ?? null;
554
+ });
555
+ }, [visibleOptions, open, selectedId]);
556
+ const hoveredOption = visibleOptions.find((option) => option.id === hoveredId) ?? visibleOptions.find((option) => option.id === selectedId) ?? visibleOptions[0];
557
+ const paperSx2 = {
558
+ border: "1px solid",
559
+ borderColor: "divider",
560
+ borderRadius: 2.5,
561
+ overflow: "hidden",
562
+ bgcolor: "color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)",
563
+ boxShadow: "0 12px 32px color-mix(in srgb, var(--mui-palette-common-black), transparent 78%)"
564
+ };
565
+ const detailPositionSx = detailSide === "left" ? { right: "calc(100% + 8px)", left: "auto" } : { left: "calc(100% + 8px)", right: "auto" };
566
+ const flipFallbacks = placement.startsWith("right") ? ["left-start", "right-end", "left-end"] : placement.startsWith("left") ? ["right-start", "left-end", "right-end"] : ["bottom-start", "top-start"];
567
+ return /* @__PURE__ */ jsx4(
568
+ default5,
569
+ {
570
+ open,
571
+ anchorEl,
572
+ placement,
573
+ modifiers: [
574
+ { name: "offset", options: { offset: [0, 10] } },
575
+ { name: "preventOverflow", options: { padding: 8 } },
576
+ // Keep start-aligned so the list stays under the chip; end placements
577
+ // misalign when a wide absolute detail panel exists beside the list.
578
+ // Side placements (ModelPicker flyout) flip left/right instead of up.
579
+ { name: "flip", options: { fallbackPlacements: [...flipFallbacks] } },
580
+ {
581
+ name: "detailSide",
582
+ enabled: true,
583
+ phase: "write",
584
+ fn() {
585
+ updateDetailSideRef.current();
586
+ }
587
+ }
588
+ ],
589
+ sx: { zIndex: (theme) => theme.zIndex.modal + 2 },
590
+ children: /* @__PURE__ */ jsx4(
591
+ default4,
592
+ {
593
+ onClickAway: (event) => {
594
+ if (eventOriginatedInside(event)) {
595
+ return;
596
+ }
597
+ onClose();
598
+ },
599
+ children: /* @__PURE__ */ jsxs3(
600
+ default2,
601
+ {
602
+ ref: rootRef,
603
+ onKeyDown: (event) => {
604
+ if (event.key === "Tab" && hiddenCount > 0) {
605
+ event.preventDefault();
606
+ setExpanded(true);
607
+ }
608
+ },
609
+ sx: {
610
+ position: "relative",
611
+ display: "inline-block",
612
+ verticalAlign: "top"
613
+ },
614
+ children: [
615
+ /* @__PURE__ */ jsxs3(
616
+ MuiPaper,
617
+ {
618
+ elevation: 0,
619
+ ...paperSlotProps,
620
+ sx: mergeSx(
621
+ { ...paperSx2, minWidth: listMinWidth, maxWidth: listMaxWidth },
622
+ paperSlotSx
623
+ ),
624
+ children: [
625
+ searchable ? /* @__PURE__ */ jsx4(
626
+ default2,
627
+ {
628
+ sx: {
629
+ px: 1,
630
+ pt: 1,
631
+ pb: 0.5,
632
+ borderBottom: "1px solid",
633
+ borderColor: "divider"
634
+ },
635
+ children: /* @__PURE__ */ jsx4(
636
+ InputBase,
637
+ {
638
+ inputRef: searchRef,
639
+ value: query,
640
+ onChange: (event) => setQuery(event.target.value),
641
+ onKeyDown: (event) => {
642
+ if (event.key === "Escape") {
643
+ event.stopPropagation();
644
+ if (query) {
645
+ setQuery("");
646
+ return;
647
+ }
648
+ onClose();
649
+ }
650
+ },
651
+ placeholder: searchPlaceholder,
652
+ fullWidth: true,
653
+ startAdornment: /* @__PURE__ */ jsx4(default10, { position: "start", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsx4(default6, { sx: { fontSize: 16, color: "text.secondary" } }) }),
654
+ endAdornment: query ? /* @__PURE__ */ jsx4(default10, { position: "end", children: /* @__PURE__ */ jsx4(
655
+ IconButton_default,
656
+ {
657
+ size: "small",
658
+ "aria-label": "Clear search",
659
+ onClick: () => {
660
+ setQuery("");
661
+ searchRef.current?.focus();
662
+ },
663
+ sx: { p: 0.25 },
664
+ children: /* @__PURE__ */ jsx4(default8, { sx: { fontSize: 14 } })
665
+ }
666
+ ) }) : null,
667
+ sx: {
668
+ px: 0.75,
669
+ py: 0.35,
670
+ fontSize: "0.82rem",
671
+ borderRadius: 1.5,
672
+ bgcolor: "action.hover",
673
+ "& .MuiInputBase-input": {
674
+ py: 0.4
675
+ }
676
+ }
677
+ }
678
+ )
679
+ }
680
+ ) : null,
681
+ /* @__PURE__ */ jsx4(
682
+ default11,
683
+ {
684
+ ref: listRef,
685
+ dense: true,
686
+ disablePadding: true,
687
+ sx: {
688
+ py: 0.5,
689
+ maxHeight: maxListHeight,
690
+ overflowY: "auto"
691
+ },
692
+ children: visibleOptions.length === 0 && hiddenCount === 0 ? /* @__PURE__ */ jsx4(default2, { sx: { px: 1.5, py: 1.25 }, children: /* @__PURE__ */ jsx4(
693
+ default3,
694
+ {
695
+ variant: "body2",
696
+ sx: { fontSize: "0.78rem", color: "text.secondary", m: 0 },
697
+ children: emptySearchText
698
+ }
699
+ ) }) : /* @__PURE__ */ jsxs3(Fragment2, { children: [
700
+ visibleOptions.map((option, index) => {
701
+ const selected = option.id === selectedId;
702
+ const hovered = option.id === hoveredId;
703
+ const accent = option.accentColor;
704
+ const showGroupHeader = option.group != null && (index === 0 || visibleOptions[index - 1]?.group !== option.group);
705
+ return /* @__PURE__ */ jsxs3(React.Fragment, { children: [
706
+ showGroupHeader ? /* @__PURE__ */ jsx4(
707
+ default3,
708
+ {
709
+ component: "div",
710
+ sx: {
711
+ px: 1.5,
712
+ pt: 1,
713
+ pb: 0.25,
714
+ fontSize: "0.66rem",
715
+ fontWeight: 700,
716
+ letterSpacing: "0.06em",
717
+ textTransform: "uppercase",
718
+ color: "text.secondary",
719
+ m: 0
720
+ },
721
+ children: option.group
722
+ }
723
+ ) : null,
724
+ /* @__PURE__ */ jsxs3(
725
+ default12,
726
+ {
727
+ selected,
728
+ "data-detail-menu-option": option.id,
729
+ onMouseEnter: () => setHoveredId(option.id),
730
+ onFocus: () => setHoveredId(option.id),
731
+ onClick: () => onSelect(option.id),
732
+ sx: {
733
+ mx: 0.5,
734
+ my: 0.15,
735
+ px: 1,
736
+ py: 0.85,
737
+ gap: 1,
738
+ borderRadius: 1.75,
739
+ alignItems: "center",
740
+ "& .detail-menu-action": { opacity: 0 },
741
+ "&:hover .detail-menu-action, &:focus-within .detail-menu-action": { opacity: 1 },
742
+ "&.Mui-selected": {
743
+ bgcolor: "color-mix(in srgb, var(--mui-palette-action-selected), transparent 55%)"
744
+ },
745
+ "&.Mui-selected:hover": {
746
+ bgcolor: "color-mix(in srgb, var(--mui-palette-action-selected), transparent 35%)"
747
+ },
748
+ ...hovered && !selected ? {
749
+ bgcolor: "color-mix(in srgb, var(--mui-palette-action-hover), transparent 40%)"
750
+ } : null
751
+ },
752
+ children: [
753
+ option.icon ? /* @__PURE__ */ jsx4(
754
+ default2,
755
+ {
756
+ sx: {
757
+ width: 22,
758
+ height: 22,
759
+ display: "inline-flex",
760
+ alignItems: "center",
761
+ justifyContent: "center",
762
+ flexShrink: 0
763
+ },
764
+ children: option.icon
765
+ }
766
+ ) : null,
767
+ /* @__PURE__ */ jsx4(
768
+ default3,
769
+ {
770
+ sx: {
771
+ flex: 1,
772
+ minWidth: 0,
773
+ fontSize: "0.82rem",
774
+ fontWeight: selected ? 700 : 600,
775
+ color: selected && accent ? accent : "text.primary",
776
+ lineHeight: 1.2,
777
+ overflow: "hidden",
778
+ textOverflow: "ellipsis",
779
+ whiteSpace: "nowrap",
780
+ m: 0
781
+ },
782
+ children: option.label
783
+ }
784
+ ),
785
+ option.badge ? /* @__PURE__ */ jsx4(
786
+ default3,
787
+ {
788
+ component: "span",
789
+ sx: {
790
+ flexShrink: 0,
791
+ fontSize: "0.72rem",
792
+ fontWeight: 500,
793
+ color: "text.secondary",
794
+ m: 0
795
+ },
796
+ children: option.badge
797
+ }
798
+ ) : null,
799
+ option.actionSlot ? /* @__PURE__ */ jsx4(
800
+ default2,
801
+ {
802
+ component: "span",
803
+ className: "detail-menu-action",
804
+ onClick: (event) => event.stopPropagation(),
805
+ sx: {
806
+ display: "inline-flex",
807
+ alignItems: "center",
808
+ justifyContent: "center",
809
+ minWidth: 18,
810
+ flexShrink: 0,
811
+ color: "text.secondary",
812
+ transition: "opacity 120ms"
813
+ },
814
+ children: option.actionSlot
815
+ }
816
+ ) : null
817
+ ]
818
+ }
819
+ )
820
+ ] }, option.id);
821
+ }),
822
+ hiddenCount > 0 ? /* @__PURE__ */ jsx4(
823
+ default12,
824
+ {
825
+ onMouseDown: (event) => {
826
+ event.preventDefault();
827
+ event.stopPropagation();
828
+ },
829
+ onClick: (event) => {
830
+ event.preventDefault();
831
+ event.stopPropagation();
832
+ setExpanded(true);
833
+ },
834
+ sx: {
835
+ mx: 0.5,
836
+ my: 0.15,
837
+ px: 1,
838
+ py: 0.85,
839
+ borderRadius: 1.75,
840
+ alignItems: "center"
841
+ },
842
+ children: /* @__PURE__ */ jsx4(
843
+ default3,
844
+ {
845
+ sx: {
846
+ flex: 1,
847
+ minWidth: 0,
848
+ fontSize: "0.78rem",
849
+ color: "text.secondary",
850
+ m: 0
851
+ },
852
+ children: collapsedRowLabel(hiddenCount)
853
+ }
854
+ )
855
+ }
856
+ ) : null
857
+ ] })
858
+ }
859
+ ),
860
+ footerSlot ? /* @__PURE__ */ jsx4(
861
+ default2,
862
+ {
863
+ sx: {
864
+ borderTop: "1px solid",
865
+ borderColor: "divider",
866
+ px: 0.5,
867
+ py: 0.35
868
+ },
869
+ children: footerSlot
870
+ }
871
+ ) : null
872
+ ]
873
+ }
874
+ ),
875
+ showDetailPanel && hoveredOption ? /* @__PURE__ */ jsx4(
876
+ default2,
877
+ {
878
+ ref: detailPaperRef,
879
+ sx: {
880
+ display: { xs: "none", sm: "block" },
881
+ position: "absolute",
882
+ top: detailTop,
883
+ ...detailPositionSx,
884
+ width: detailWidth
885
+ },
886
+ children: /* @__PURE__ */ jsxs3(
887
+ MuiPaper,
888
+ {
889
+ elevation: 0,
890
+ ...detailPaperSlotProps,
891
+ sx: mergeSx(
892
+ {
893
+ px: 1.25,
894
+ py: 1.1,
895
+ border: "1px solid",
896
+ borderColor: "divider",
897
+ borderRadius: 2,
898
+ bgcolor: "color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)",
899
+ boxShadow: "0 10px 28px color-mix(in srgb, var(--mui-palette-common-black), transparent 82%)"
900
+ },
901
+ detailPaperSlotSx
902
+ ),
903
+ children: [
904
+ /* @__PURE__ */ jsx4(
905
+ default3,
906
+ {
907
+ sx: {
908
+ fontSize: "0.78rem",
909
+ fontWeight: 700,
910
+ color: hoveredOption.accentColor || "text.primary",
911
+ lineHeight: 1.2,
912
+ mt: 0,
913
+ mx: 0,
914
+ mb: 0.4
915
+ },
916
+ children: hoveredOption.label
917
+ }
918
+ ),
919
+ /* @__PURE__ */ jsx4(
920
+ default3,
921
+ {
922
+ sx: {
923
+ fontSize: "0.72rem",
924
+ color: "text.secondary",
925
+ lineHeight: 1.35,
926
+ m: 0
927
+ },
928
+ children: hoveredOption.detail?.trim() || "\u2014"
929
+ }
930
+ ),
931
+ hoveredOption.detailSlot ? /* @__PURE__ */ jsx4(
932
+ default2,
933
+ {
934
+ sx: {
935
+ mt: 1,
936
+ pt: 1,
937
+ borderTop: "1px solid",
938
+ borderColor: "divider"
939
+ },
940
+ children: hoveredOption.detailSlot
941
+ }
942
+ ) : null
943
+ ]
944
+ }
945
+ )
946
+ }
947
+ ) : null
948
+ ]
949
+ }
950
+ )
951
+ }
952
+ )
953
+ }
954
+ );
955
+ }
956
+ var DETAIL_GAP_PX = 8;
957
+ var VIEWPORT_PAD_PX = 8;
958
+ function toCssPixels(value, fallback) {
959
+ if (typeof value === "number" && Number.isFinite(value)) {
960
+ return value;
961
+ }
962
+ if (typeof value === "string") {
963
+ const match = value.trim().match(/^(\d+(?:\.\d+)?)px$/i);
964
+ if (match) {
965
+ return Number.parseFloat(match[1]);
966
+ }
967
+ }
968
+ return fallback;
969
+ }
970
+ function resolveDetailSide(listRoot, detailWidthPx) {
971
+ const rect = listRoot.getBoundingClientRect();
972
+ const need = detailWidthPx + DETAIL_GAP_PX;
973
+ const spaceRight = window.innerWidth - rect.right - VIEWPORT_PAD_PX;
974
+ const spaceLeft = rect.left - VIEWPORT_PAD_PX;
975
+ if (spaceRight >= need) {
976
+ return "right";
977
+ }
978
+ if (spaceLeft >= need) {
979
+ return "left";
980
+ }
981
+ return spaceLeft > spaceRight ? "left" : "right";
982
+ }
983
+
984
+ // src/components/elemental/Menu/src/ModelMenu/ModelMenu.tsx
985
+ import { useMemo as useMemo4 } from "react";
986
+ import { jsx as jsx5 } from "react/jsx-runtime";
987
+ var BRAND_LABELS = {
988
+ anthropic: "Anthropic",
989
+ google: "Google",
990
+ meta: "Meta",
991
+ openai: "OpenAI"
992
+ };
993
+ var defaultBrandIcon = () => /* @__PURE__ */ jsx5(default7, { sx: { fontSize: 14 }, "aria-hidden": true });
994
+ function ModelMenu({
995
+ anchorEl,
996
+ options,
997
+ selectedId = null,
998
+ onClose,
999
+ onSelect,
1000
+ searchable,
1001
+ searchPlaceholder = "Search models\u2026",
1002
+ placement,
1003
+ showDetailPanel,
1004
+ brandIconMap,
1005
+ slotProps,
1006
+ maxListHeight,
1007
+ footerSlot
1008
+ }) {
1009
+ const detailOptions = useMemo4(
1010
+ () => options.map((option) => ({
1011
+ id: option.id,
1012
+ label: option.label,
1013
+ detail: option.detail,
1014
+ badge: option.badge,
1015
+ detailSlot: option.detailSlot,
1016
+ group: option.group,
1017
+ collapsed: option.collapsed,
1018
+ actionSlot: option.actionSlot,
1019
+ keywords: [option.brand, option.detail, option.keywords].filter(Boolean).join(" "),
1020
+ icon: /* @__PURE__ */ jsx5(
1021
+ default2,
1022
+ {
1023
+ component: "span",
1024
+ title: BRAND_LABELS[option.brand ?? ""],
1025
+ sx: {
1026
+ display: "inline-flex",
1027
+ width: 20,
1028
+ height: 20,
1029
+ alignItems: "center",
1030
+ justifyContent: "center",
1031
+ border: "1px solid",
1032
+ borderColor: "divider",
1033
+ borderRadius: 1.25,
1034
+ color: "text.secondary",
1035
+ "& svg": { display: "block" }
1036
+ },
1037
+ children: option.icon ?? brandIconMap?.[option.brand ?? ""] ?? defaultBrandIcon()
1038
+ }
1039
+ )
1040
+ })),
1041
+ [options, brandIconMap]
1042
+ );
1043
+ return /* @__PURE__ */ jsx5(
1044
+ DetailMenu,
1045
+ {
1046
+ anchorEl,
1047
+ options: detailOptions,
1048
+ selectedId,
1049
+ searchable: searchable ?? options.length >= 6,
1050
+ searchPlaceholder,
1051
+ placement,
1052
+ showDetailPanel,
1053
+ collapsedRowLabel: (count) => `${count} more model${count === 1 ? "" : "s"}`,
1054
+ onClose,
1055
+ onSelect,
1056
+ slotProps,
1057
+ maxListHeight,
1058
+ footerSlot
1059
+ }
1060
+ );
1061
+ }
1062
+
1063
+ // src/components/elemental/Menu/src/ModelPicker/ModelPicker.tsx
1064
+ import { useEffect as useEffect3, useMemo as useMemo5, useRef as useRef3, useState as useState4 } from "react";
1065
+ import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
1066
+ var paperSx = {
1067
+ border: "1px solid",
1068
+ borderColor: "divider",
1069
+ borderRadius: 2.5,
1070
+ overflow: "hidden",
1071
+ bgcolor: "color-mix(in srgb, var(--mui-palette-background-paper), transparent 4%)",
1072
+ boxShadow: "0 12px 32px color-mix(in srgb, var(--mui-palette-common-black), transparent 78%)",
1073
+ minWidth: 180
1074
+ };
1075
+ function ModelPicker({
1076
+ anchorEl,
1077
+ options,
1078
+ selectedId = null,
1079
+ onClose,
1080
+ onSelect,
1081
+ configSlot,
1082
+ modelSectionLabel = "Model",
1083
+ searchable,
1084
+ searchPlaceholder,
1085
+ brandIconMap,
1086
+ slotProps,
1087
+ maxListHeight,
1088
+ footerSlot,
1089
+ showDetailPanel = true
1090
+ }) {
1091
+ const open = Boolean(anchorEl);
1092
+ const [modelRowEl, setModelRowEl] = useState4(null);
1093
+ const [modelFlyoutOpen, setModelFlyoutOpen] = useState4(false);
1094
+ const rootRef = useRef3(null);
1095
+ const selected = useMemo5(
1096
+ () => options.find((option) => option.id === selectedId) ?? options[0],
1097
+ [options, selectedId]
1098
+ );
1099
+ useEffect3(() => {
1100
+ if (!open) {
1101
+ setModelFlyoutOpen(false);
1102
+ setModelRowEl(null);
1103
+ }
1104
+ }, [open]);
1105
+ const closeAll = () => {
1106
+ setModelFlyoutOpen(false);
1107
+ onClose();
1108
+ };
1109
+ const openModelFlyout = (element) => {
1110
+ setModelRowEl(element);
1111
+ setModelFlyoutOpen(true);
1112
+ };
1113
+ const isInsidePickerSurface = (event) => {
1114
+ const path = typeof event.composedPath === "function" ? event.composedPath() : [event.target];
1115
+ return path.some((node) => {
1116
+ if (!(node instanceof Element)) {
1117
+ return false;
1118
+ }
1119
+ if (rootRef.current?.contains(node)) {
1120
+ return true;
1121
+ }
1122
+ return node.hasAttribute("data-model-picker-flyout") || Boolean(node.closest("[data-model-picker-flyout]"));
1123
+ });
1124
+ };
1125
+ const flyoutSlotProps = useMemo5(() => {
1126
+ const paper = slotProps?.paper;
1127
+ const detailPaper = slotProps?.detailPaper;
1128
+ const flyoutTag = { "data-model-picker-flyout": "" };
1129
+ return {
1130
+ ...slotProps,
1131
+ paper: {
1132
+ ...paper,
1133
+ ...flyoutTag
1134
+ },
1135
+ detailPaper: {
1136
+ ...detailPaper,
1137
+ ...flyoutTag
1138
+ }
1139
+ };
1140
+ }, [slotProps]);
1141
+ return /* @__PURE__ */ jsxs4(Fragment3, { children: [
1142
+ /* @__PURE__ */ jsx6(
1143
+ default5,
1144
+ {
1145
+ open,
1146
+ anchorEl,
1147
+ placement: "top-start",
1148
+ modifiers: [
1149
+ { name: "offset", options: { offset: [0, 10] } },
1150
+ { name: "preventOverflow", options: { padding: 8 } },
1151
+ {
1152
+ name: "flip",
1153
+ options: { fallbackPlacements: ["bottom-start", "top-start"] }
1154
+ }
1155
+ ],
1156
+ sx: { zIndex: (theme) => theme.zIndex.modal + 2 },
1157
+ children: /* @__PURE__ */ jsx6(
1158
+ default4,
1159
+ {
1160
+ onClickAway: (event) => {
1161
+ if (isInsidePickerSurface(event)) {
1162
+ return;
1163
+ }
1164
+ closeAll();
1165
+ },
1166
+ children: /* @__PURE__ */ jsx6(default2, { ref: rootRef, sx: { display: "inline-block" }, children: /* @__PURE__ */ jsxs4(
1167
+ MuiPaper,
1168
+ {
1169
+ elevation: 0,
1170
+ sx: paperSx,
1171
+ children: [
1172
+ configSlot ? /* @__PURE__ */ jsx6(default2, { sx: { px: 0.5, pt: 0.5, pb: 0.25 }, children: configSlot }) : null,
1173
+ configSlot ? /* @__PURE__ */ jsx6(
1174
+ default2,
1175
+ {
1176
+ sx: {
1177
+ borderTop: "1px solid",
1178
+ borderColor: "divider",
1179
+ mx: 1
1180
+ }
1181
+ }
1182
+ ) : null,
1183
+ /* @__PURE__ */ jsxs4(default2, { sx: { px: 0.5, pb: 0.5, pt: configSlot ? 0.25 : 0.5 }, children: [
1184
+ /* @__PURE__ */ jsx6(
1185
+ default3,
1186
+ {
1187
+ component: "div",
1188
+ sx: {
1189
+ px: 1,
1190
+ pt: 0.5,
1191
+ pb: 0.15,
1192
+ fontSize: "0.66rem",
1193
+ fontWeight: 700,
1194
+ letterSpacing: "0.04em",
1195
+ color: "text.secondary",
1196
+ m: 0
1197
+ },
1198
+ children: modelSectionLabel
1199
+ }
1200
+ ),
1201
+ /* @__PURE__ */ jsx6(default11, { dense: true, disablePadding: true, children: /* @__PURE__ */ jsxs4(
1202
+ default12,
1203
+ {
1204
+ onMouseEnter: (event) => openModelFlyout(event.currentTarget),
1205
+ onClick: (event) => openModelFlyout(event.currentTarget),
1206
+ sx: {
1207
+ mx: 0.5,
1208
+ my: 0.15,
1209
+ px: 1,
1210
+ py: 0.75,
1211
+ gap: 1,
1212
+ borderRadius: 1.5,
1213
+ alignItems: "center",
1214
+ bgcolor: "action.hover",
1215
+ "&:hover": { bgcolor: "action.selected" }
1216
+ },
1217
+ children: [
1218
+ /* @__PURE__ */ jsx6(
1219
+ default3,
1220
+ {
1221
+ sx: {
1222
+ flex: 1,
1223
+ minWidth: 0,
1224
+ fontSize: "0.82rem",
1225
+ fontWeight: 600,
1226
+ color: "text.primary",
1227
+ overflow: "hidden",
1228
+ textOverflow: "ellipsis",
1229
+ whiteSpace: "nowrap",
1230
+ m: 0
1231
+ },
1232
+ children: selected?.label ?? "Select model"
1233
+ }
1234
+ ),
1235
+ /* @__PURE__ */ jsx6(
1236
+ default9,
1237
+ {
1238
+ sx: { fontSize: 16, color: "text.secondary", flexShrink: 0 }
1239
+ }
1240
+ )
1241
+ ]
1242
+ }
1243
+ ) })
1244
+ ] })
1245
+ ]
1246
+ }
1247
+ ) })
1248
+ }
1249
+ )
1250
+ }
1251
+ ),
1252
+ modelFlyoutOpen ? /* @__PURE__ */ jsx6(
1253
+ ModelMenu,
1254
+ {
1255
+ anchorEl: modelRowEl,
1256
+ options,
1257
+ selectedId,
1258
+ searchable,
1259
+ searchPlaceholder,
1260
+ brandIconMap,
1261
+ slotProps: flyoutSlotProps,
1262
+ maxListHeight,
1263
+ footerSlot,
1264
+ placement: "right-start",
1265
+ showDetailPanel,
1266
+ onClose: () => setModelFlyoutOpen(false),
1267
+ onSelect: (id) => {
1268
+ onSelect(id);
1269
+ }
1270
+ }
1271
+ ) : null
1272
+ ] });
1273
+ }
1274
+
1275
+ export {
1276
+ StyledMenuItem,
1277
+ StyledItemIcon,
1278
+ Menu_default,
1279
+ menuItemTheme,
1280
+ menuTheme,
1281
+ default13 as default,
1282
+ MenuPopper,
1283
+ useMenu,
1284
+ IconMenu_default,
1285
+ DetailMenu,
1286
+ ModelMenu,
1287
+ ModelPicker
1288
+ };
1289
+ //# sourceMappingURL=chunk-HR3A4H4E.mjs.map