@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,558 @@
1
+ import {
2
+ default as default8
3
+ } from "./chunk-VYD3PDBB.mjs";
4
+ import {
5
+ MenuPopper,
6
+ Menu_default,
7
+ useMenu
8
+ } from "./chunk-HR3A4H4E.mjs";
9
+ import {
10
+ default3 as default7
11
+ } from "./chunk-T4X375IG.mjs";
12
+ import {
13
+ MuiPaper
14
+ } from "./chunk-3VUAM2GY.mjs";
15
+ import {
16
+ CircularProgress
17
+ } from "./chunk-WYYP3Y34.mjs";
18
+ import {
19
+ Button,
20
+ IconButton_default
21
+ } from "./chunk-JIU5GVM7.mjs";
22
+ import {
23
+ default108 as default5,
24
+ default118 as default6,
25
+ default33 as default4
26
+ } from "./chunk-ZVFYOXDE.mjs";
27
+ import {
28
+ default as default3
29
+ } from "./chunk-4RPFRNXG.mjs";
30
+ import {
31
+ default as default2,
32
+ mergeSx
33
+ } from "./chunk-S6EZVRZC.mjs";
34
+
35
+ // src/components/compound/UseSearch/context.tsx
36
+ import * as React2 from "react";
37
+
38
+ // src/components/compound/UseSearch/useSearch.ts
39
+ import * as React from "react";
40
+ function useSearch(options = {}) {
41
+ const {
42
+ defaultQuery = "",
43
+ query: controlledQuery,
44
+ onQueryChange,
45
+ debounceMs = 300,
46
+ defaultScope,
47
+ scope: controlledScope,
48
+ onScopeChange
49
+ } = options;
50
+ const isQueryControlled = controlledQuery !== void 0;
51
+ const isScopeControlled = controlledScope !== void 0;
52
+ const [innerQuery, setInnerQuery] = React.useState(defaultQuery);
53
+ const [debouncedQuery, setDebouncedQuery] = React.useState(controlledQuery ?? defaultQuery);
54
+ const [innerScope, setInnerScope] = React.useState(defaultScope);
55
+ const query = isQueryControlled ? controlledQuery : innerQuery;
56
+ const onQueryChangeRef = React.useRef(onQueryChange);
57
+ React.useLayoutEffect(() => {
58
+ onQueryChangeRef.current = onQueryChange;
59
+ }, [onQueryChange]);
60
+ const onScopeChangeRef = React.useRef(onScopeChange);
61
+ React.useLayoutEffect(() => {
62
+ onScopeChangeRef.current = onScopeChange;
63
+ }, [onScopeChange]);
64
+ const setQuery = React.useCallback(
65
+ (q) => {
66
+ if (!isQueryControlled) {
67
+ setInnerQuery(q);
68
+ }
69
+ onQueryChangeRef.current?.(q);
70
+ },
71
+ [isQueryControlled]
72
+ );
73
+ const scope = isScopeControlled ? controlledScope : innerScope;
74
+ const setScope = React.useCallback(
75
+ (nextScope) => {
76
+ if (!isScopeControlled) {
77
+ setInnerScope(nextScope);
78
+ }
79
+ onScopeChangeRef.current?.(nextScope);
80
+ },
81
+ [isScopeControlled]
82
+ );
83
+ const clear = React.useCallback(() => {
84
+ if (!isQueryControlled) {
85
+ setInnerQuery(defaultQuery);
86
+ }
87
+ onQueryChangeRef.current?.(defaultQuery);
88
+ if (!isScopeControlled) {
89
+ setInnerScope(defaultScope);
90
+ }
91
+ onScopeChangeRef.current?.(defaultScope);
92
+ }, [defaultQuery, defaultScope, isQueryControlled, isScopeControlled]);
93
+ React.useEffect(() => {
94
+ const timer = window.setTimeout(() => {
95
+ setDebouncedQuery(query);
96
+ }, debounceMs);
97
+ return () => window.clearTimeout(timer);
98
+ }, [query, debounceMs]);
99
+ return { query, debouncedQuery, setQuery, scope, setScope, clear };
100
+ }
101
+
102
+ // src/components/compound/UseSearch/context.tsx
103
+ import { jsx } from "react/jsx-runtime";
104
+ var SearchContext = React2.createContext(null);
105
+ var SearchProvider = ({ options, children }) => {
106
+ const search = useSearch(options);
107
+ return /* @__PURE__ */ jsx(SearchContext.Provider, { value: search, children });
108
+ };
109
+ function useSearchContext() {
110
+ const ctx = React2.useContext(SearchContext);
111
+ if (!ctx) {
112
+ throw new Error("useSearchContext must be used within a SearchProvider");
113
+ }
114
+ return ctx;
115
+ }
116
+
117
+ // src/components/compound/UseSearch/SearchBar.tsx
118
+ import * as React3 from "react";
119
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
120
+ var SearchBar = ({
121
+ placeholder,
122
+ adornment,
123
+ onSubmit,
124
+ showSubmitButton = true,
125
+ submitOnEnter = true,
126
+ loading = false,
127
+ sx
128
+ }) => {
129
+ const { query, scope, setQuery } = useSearchContext();
130
+ const onSubmitRef = React3.useRef(onSubmit);
131
+ React3.useLayoutEffect(() => {
132
+ onSubmitRef.current = onSubmit;
133
+ }, [onSubmit]);
134
+ const handleClear = React3.useCallback(() => {
135
+ setQuery("");
136
+ }, [setQuery]);
137
+ const handleSubmit = React3.useCallback(() => {
138
+ const normalized = query.trim();
139
+ if (!normalized) {
140
+ return;
141
+ }
142
+ onSubmitRef.current?.(normalized, scope);
143
+ }, [query, scope]);
144
+ const handleKeyDown = React3.useCallback(
145
+ (event) => {
146
+ if (!submitOnEnter) {
147
+ return;
148
+ }
149
+ if (event.key === "Enter") {
150
+ event.preventDefault();
151
+ handleSubmit();
152
+ }
153
+ },
154
+ [handleSubmit, submitOnEnter]
155
+ );
156
+ return /* @__PURE__ */ jsx2(
157
+ default8,
158
+ {
159
+ value: query,
160
+ onChange: (e) => setQuery(e.target.value),
161
+ onKeyDown: handleKeyDown,
162
+ placeholder,
163
+ sx: mergeSx(
164
+ {
165
+ "& .MuiInputAdornment-root": {
166
+ gap: 0.5
167
+ }
168
+ },
169
+ sx
170
+ ),
171
+ slotProps: {
172
+ input: {
173
+ startAdornment: adornment ? /* @__PURE__ */ jsx2(default7, { position: "start", children: adornment }) : void 0,
174
+ endAdornment: /* @__PURE__ */ jsxs(default7, { position: "end", children: [
175
+ query ? /* @__PURE__ */ jsx2(IconButton_default, { size: "small", onClick: handleClear, "aria-label": "Clear search input", children: /* @__PURE__ */ jsx2(default5, { fontSize: "small" }) }) : null,
176
+ showSubmitButton ? loading ? /* @__PURE__ */ jsx2(CircularProgress, { size: 18, thickness: 5 }) : /* @__PURE__ */ jsx2(IconButton_default, { size: "small", onClick: handleSubmit, "aria-label": "Submit search", children: /* @__PURE__ */ jsx2(default4, { fontSize: "small" }) }) : null
177
+ ] })
178
+ }
179
+ }
180
+ }
181
+ );
182
+ };
183
+
184
+ // src/components/compound/UseSearch/SearchScope.tsx
185
+ import * as React4 from "react";
186
+ import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
187
+ var SearchScope = ({
188
+ options,
189
+ sx,
190
+ placeholderLabel = "All"
191
+ }) => {
192
+ const { scope, setScope } = useSearchContext();
193
+ const openMenuProps = useMenu({
194
+ onItemClickClientArg: ({ closeHandler }) => {
195
+ closeHandler?.();
196
+ },
197
+ initSelected: scope ? [scope] : []
198
+ });
199
+ const menuOptions = React4.useMemo(() => (options || []).map((option) => ({
200
+ id: option.value,
201
+ label: option.label,
202
+ onClick: () => {
203
+ setScope(option.value);
204
+ }
205
+ })), [options, setScope]);
206
+ if (!options || options.length === 0) {
207
+ return null;
208
+ }
209
+ const activeLabel = options.find((option) => option.value === scope)?.label ?? placeholderLabel;
210
+ return /* @__PURE__ */ jsxs2(Fragment, { children: [
211
+ /* @__PURE__ */ jsx3(
212
+ Button,
213
+ {
214
+ size: "small",
215
+ variant: "outlined",
216
+ onClick: openMenuProps.onTriggerClickHandler,
217
+ endIcon: /* @__PURE__ */ jsx3(default6, {}),
218
+ sx,
219
+ children: activeLabel
220
+ }
221
+ ),
222
+ /* @__PURE__ */ jsx3(
223
+ MenuPopper,
224
+ {
225
+ options: menuOptions,
226
+ openMenuProps: {
227
+ ...openMenuProps,
228
+ initSelected: scope ? [scope] : [],
229
+ sorted: false
230
+ },
231
+ placement: "bottom-start",
232
+ menuItemProps: {
233
+ fontSize: "0.875rem",
234
+ padding: "6px 12px"
235
+ }
236
+ }
237
+ )
238
+ ] });
239
+ };
240
+
241
+ // src/components/compound/UseSearch/SuggestionList.tsx
242
+ import * as React5 from "react";
243
+
244
+ // src/components/compound/UseSearch/theme.ts
245
+ var useSearchRootSx = {
246
+ "--usesearch-empty-text-color": "var(--mui-palette-text-secondary)"
247
+ };
248
+
249
+ // src/components/compound/UseSearch/SuggestionList.tsx
250
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
251
+ var DEFAULT_MAX_ITEMS = 8;
252
+ function SuggestionList({
253
+ items,
254
+ onSelect,
255
+ renderItem,
256
+ getItemLabel,
257
+ maxItems = DEFAULT_MAX_ITEMS,
258
+ showWhenEmptyQuery = false,
259
+ loading = false,
260
+ loadingText = "Fetching suggestions...",
261
+ emptyText = "No suggestions",
262
+ filterMode = "client",
263
+ footer,
264
+ sx
265
+ }) {
266
+ const { query, setQuery } = useSearchContext();
267
+ const resolvedGetLabel = React5.useCallback(
268
+ (item) => getItemLabel ? getItemLabel(item) : item.label,
269
+ [getItemLabel]
270
+ );
271
+ const normalizedQuery = query.trim().toLowerCase();
272
+ const filteredItems = React5.useMemo(() => {
273
+ if (!showWhenEmptyQuery && !normalizedQuery) {
274
+ return [];
275
+ }
276
+ if (filterMode === "none") {
277
+ return items.slice(0, maxItems);
278
+ }
279
+ return items.filter((item) => {
280
+ if (!normalizedQuery) {
281
+ return true;
282
+ }
283
+ return resolvedGetLabel(item).toLowerCase().includes(normalizedQuery);
284
+ }).slice(0, maxItems);
285
+ }, [filterMode, items, maxItems, normalizedQuery, resolvedGetLabel, showWhenEmptyQuery]);
286
+ const handleSelect = React5.useCallback(
287
+ (item) => {
288
+ setQuery(resolvedGetLabel(item));
289
+ onSelect?.(item);
290
+ },
291
+ [onSelect, resolvedGetLabel, setQuery]
292
+ );
293
+ const menuOptions = React5.useMemo(
294
+ () => filteredItems.map((item) => ({
295
+ id: String(item.id),
296
+ label: renderItem ? renderItem(item) : resolvedGetLabel(item),
297
+ onClick: () => handleSelect(item)
298
+ })),
299
+ [filteredItems, handleSelect, renderItem, resolvedGetLabel]
300
+ );
301
+ if (loading && (normalizedQuery || showWhenEmptyQuery)) {
302
+ return /* @__PURE__ */ jsx4(MuiPaper, { elevation: 3, sx, children: /* @__PURE__ */ jsxs3(default2, { sx: { display: "flex", alignItems: "center", gap: 1, px: 1.5, py: 1.25 }, children: [
303
+ /* @__PURE__ */ jsx4(CircularProgress, { size: 16, thickness: 5 }),
304
+ /* @__PURE__ */ jsx4(default3, { variant: "body2", children: loadingText })
305
+ ] }) });
306
+ }
307
+ if (filteredItems.length === 0) {
308
+ if (!normalizedQuery && !showWhenEmptyQuery) {
309
+ return null;
310
+ }
311
+ return /* @__PURE__ */ jsx4(MuiPaper, { elevation: 3, sx, children: /* @__PURE__ */ jsx4(default2, { sx: mergeSx({ px: 1.5, py: 1.25 }, useSearchRootSx), children: /* @__PURE__ */ jsx4(default3, { variant: "body2", sx: { color: "var(--usesearch-empty-text-color)" }, children: emptyText }) }) });
312
+ }
313
+ return /* @__PURE__ */ jsxs3(MuiPaper, { elevation: 3, sx, children: [
314
+ /* @__PURE__ */ jsx4(
315
+ Menu_default,
316
+ {
317
+ options: menuOptions,
318
+ initSelected: [],
319
+ sorted: false,
320
+ menuItemProps: {
321
+ fontSize: "0.875rem",
322
+ padding: "6px 12px"
323
+ }
324
+ }
325
+ ),
326
+ footer ? /* @__PURE__ */ jsx4(default2, { sx: { px: 1, pb: 1 }, children: footer }) : null
327
+ ] });
328
+ }
329
+
330
+ // src/components/compound/UseSearch/ScopeSuggestions.tsx
331
+ import * as React6 from "react";
332
+ import { jsx as jsx5 } from "react/jsx-runtime";
333
+ function ScopeSuggestions({
334
+ getSuggestions,
335
+ onLoadMore,
336
+ hasMore,
337
+ loadMoreLabel = "Load more",
338
+ onLoadingChange,
339
+ onError,
340
+ onSelect,
341
+ renderItem,
342
+ getItemLabel,
343
+ maxItems,
344
+ showWhenEmptyQuery,
345
+ loadingText,
346
+ emptyText,
347
+ filterMode,
348
+ sx
349
+ }) {
350
+ const { scope, debouncedQuery } = useSearchContext();
351
+ const requestIdRef = React6.useRef(0);
352
+ const [items, setItems] = React6.useState([]);
353
+ const [loading, setLoading] = React6.useState(false);
354
+ const [loadingMore, setLoadingMore] = React6.useState(false);
355
+ const getSuggestionsRef = React6.useRef(getSuggestions);
356
+ React6.useLayoutEffect(() => {
357
+ getSuggestionsRef.current = getSuggestions;
358
+ }, [getSuggestions]);
359
+ const onLoadingChangeRef = React6.useRef(onLoadingChange);
360
+ React6.useLayoutEffect(() => {
361
+ onLoadingChangeRef.current = onLoadingChange;
362
+ }, [onLoadingChange]);
363
+ const onErrorRef = React6.useRef(onError);
364
+ React6.useLayoutEffect(() => {
365
+ onErrorRef.current = onError;
366
+ }, [onError]);
367
+ const resolvedHasMore = React6.useMemo(() => {
368
+ if (typeof hasMore === "function") {
369
+ return hasMore(items, scope, debouncedQuery.trim());
370
+ }
371
+ return Boolean(hasMore);
372
+ }, [debouncedQuery, hasMore, items, scope]);
373
+ React6.useEffect(() => {
374
+ const query = debouncedQuery.trim();
375
+ if (!query && !showWhenEmptyQuery) {
376
+ setItems([]);
377
+ setLoading(false);
378
+ setLoadingMore(false);
379
+ onLoadingChangeRef.current?.(false);
380
+ return;
381
+ }
382
+ requestIdRef.current += 1;
383
+ const currentRequestId = requestIdRef.current;
384
+ let isActive = true;
385
+ setLoading(true);
386
+ onLoadingChangeRef.current?.(true);
387
+ Promise.resolve(getSuggestionsRef.current(scope, query)).then((next) => {
388
+ if (!isActive || currentRequestId !== requestIdRef.current) {
389
+ return;
390
+ }
391
+ setItems(next);
392
+ }).catch((error) => {
393
+ if (!isActive || currentRequestId !== requestIdRef.current) {
394
+ return;
395
+ }
396
+ setItems([]);
397
+ onErrorRef.current?.(error);
398
+ }).finally(() => {
399
+ if (!isActive || currentRequestId !== requestIdRef.current) {
400
+ return;
401
+ }
402
+ setLoading(false);
403
+ setLoadingMore(false);
404
+ onLoadingChangeRef.current?.(false);
405
+ });
406
+ return () => {
407
+ isActive = false;
408
+ onLoadingChangeRef.current?.(false);
409
+ };
410
+ }, [debouncedQuery, scope, showWhenEmptyQuery]);
411
+ const handleLoadMore = React6.useCallback(() => {
412
+ if (!onLoadMore || loading || loadingMore) {
413
+ return;
414
+ }
415
+ const query = debouncedQuery.trim();
416
+ if (!query && !showWhenEmptyQuery) {
417
+ return;
418
+ }
419
+ setLoadingMore(true);
420
+ Promise.resolve(onLoadMore(scope, query, items)).then((next) => {
421
+ setItems(next);
422
+ }).catch((error) => {
423
+ onErrorRef.current?.(error);
424
+ }).finally(() => {
425
+ setLoadingMore(false);
426
+ });
427
+ }, [debouncedQuery, items, loading, loadingMore, onLoadMore, scope, showWhenEmptyQuery]);
428
+ const footer = onLoadMore && resolvedHasMore ? /* @__PURE__ */ jsx5(
429
+ Button,
430
+ {
431
+ size: "small",
432
+ variant: "text",
433
+ fullWidth: true,
434
+ disabled: loadingMore || loading,
435
+ onClick: handleLoadMore,
436
+ children: loadingMore ? "Loading more..." : loadMoreLabel
437
+ }
438
+ ) : null;
439
+ return /* @__PURE__ */ jsx5(
440
+ SuggestionList,
441
+ {
442
+ items,
443
+ loading,
444
+ footer,
445
+ onSelect,
446
+ renderItem,
447
+ getItemLabel,
448
+ maxItems,
449
+ showWhenEmptyQuery,
450
+ loadingText,
451
+ emptyText,
452
+ filterMode,
453
+ sx
454
+ }
455
+ );
456
+ }
457
+
458
+ // src/components/compound/UseSearch/UseSearchLayout.tsx
459
+ import * as React7 from "react";
460
+
461
+ // src/components/compound/UseSearch/SearchResults.tsx
462
+ import { Fragment as Fragment2, jsx as jsx6 } from "react/jsx-runtime";
463
+ var SearchResults = ({ children }) => {
464
+ const { debouncedQuery, scope } = useSearchContext();
465
+ return /* @__PURE__ */ jsx6(Fragment2, { children: children(debouncedQuery, scope) });
466
+ };
467
+
468
+ // src/components/compound/UseSearch/UseSearchLayout.tsx
469
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
470
+ var DEFAULT_CONTAINER_SX = { width: 560, maxWidth: "90vw", position: "relative" };
471
+ var DEFAULT_ROW_SX = { display: "flex", gap: 1 };
472
+ var DEFAULT_SCOPE_SX = { minWidth: 130 };
473
+ var DEFAULT_SEARCH_BAR_SX = { flex: 1 };
474
+ var DEFAULT_SUGGESTIONS_SX = {
475
+ position: "absolute",
476
+ top: 56,
477
+ left: 0,
478
+ right: 0,
479
+ zIndex: 2
480
+ };
481
+ function UseSearchLayout({
482
+ scopeOptions,
483
+ scopePlaceholderLabel = "Engine",
484
+ searchPlaceholder = "Search",
485
+ getSuggestions,
486
+ onLoadMoreSuggestions,
487
+ hasMoreSuggestions,
488
+ loadMoreSuggestionsLabel,
489
+ onSuggestionSelect,
490
+ renderSuggestionItem,
491
+ getSuggestionLabel,
492
+ suggestionFilterMode,
493
+ suggestionsLoadingText,
494
+ suggestionsEmptyText,
495
+ onSuggestionsError,
496
+ onSearchSubmit,
497
+ children,
498
+ containerSx,
499
+ rowSx,
500
+ scopeSx,
501
+ searchBarSx,
502
+ suggestionsSx
503
+ }) {
504
+ const [suggestionsLoading, setSuggestionsLoading] = React7.useState(false);
505
+ return /* @__PURE__ */ jsxs4(default2, { sx: containerSx ?? DEFAULT_CONTAINER_SX, children: [
506
+ /* @__PURE__ */ jsxs4(default2, { sx: rowSx ?? DEFAULT_ROW_SX, children: [
507
+ /* @__PURE__ */ jsx7(
508
+ SearchScope,
509
+ {
510
+ options: scopeOptions,
511
+ sx: scopeSx ?? DEFAULT_SCOPE_SX,
512
+ placeholderLabel: scopePlaceholderLabel
513
+ }
514
+ ),
515
+ /* @__PURE__ */ jsx7(
516
+ SearchBar,
517
+ {
518
+ placeholder: searchPlaceholder,
519
+ sx: searchBarSx ?? DEFAULT_SEARCH_BAR_SX,
520
+ loading: suggestionsLoading,
521
+ onSubmit: onSearchSubmit
522
+ }
523
+ )
524
+ ] }),
525
+ getSuggestions && /* @__PURE__ */ jsx7(
526
+ ScopeSuggestions,
527
+ {
528
+ getSuggestions,
529
+ onLoadMore: onLoadMoreSuggestions,
530
+ hasMore: hasMoreSuggestions,
531
+ loadMoreLabel: loadMoreSuggestionsLabel,
532
+ onLoadingChange: setSuggestionsLoading,
533
+ onSelect: onSuggestionSelect,
534
+ renderItem: renderSuggestionItem,
535
+ getItemLabel: getSuggestionLabel,
536
+ filterMode: suggestionFilterMode,
537
+ loadingText: suggestionsLoadingText,
538
+ emptyText: suggestionsEmptyText,
539
+ onError: onSuggestionsError,
540
+ sx: suggestionsSx ?? DEFAULT_SUGGESTIONS_SX
541
+ }
542
+ ),
543
+ /* @__PURE__ */ jsx7(SearchResults, { children })
544
+ ] });
545
+ }
546
+
547
+ export {
548
+ useSearch,
549
+ SearchProvider,
550
+ useSearchContext,
551
+ SearchBar,
552
+ SearchScope,
553
+ SuggestionList,
554
+ ScopeSuggestions,
555
+ SearchResults,
556
+ UseSearchLayout
557
+ };
558
+ //# sourceMappingURL=chunk-XJ2SXC2Q.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/compound/UseSearch/context.tsx","../src/components/compound/UseSearch/useSearch.ts","../src/components/compound/UseSearch/SearchBar.tsx","../src/components/compound/UseSearch/SearchScope.tsx","../src/components/compound/UseSearch/SuggestionList.tsx","../src/components/compound/UseSearch/theme.ts","../src/components/compound/UseSearch/ScopeSuggestions.tsx","../src/components/compound/UseSearch/UseSearchLayout.tsx","../src/components/compound/UseSearch/SearchResults.tsx"],"sourcesContent":["import * as React from 'react';\nimport {UseSearchOptions, UseSearchReturn} from './_types';\nimport {useSearch} from './useSearch';\n\ntype SearchContextType = UseSearchReturn;\n\nconst SearchContext = React.createContext<SearchContextType | null>(null);\n\n// props accepted by <SearchProvider>. `options` corresponds to the\n// same configuration object passed to the standalone `useSearch` hook.\nexport interface SearchProviderProps {\n options?: UseSearchOptions;\n children: React.ReactNode;\n}\n\nexport const SearchProvider: React.FC<SearchProviderProps> = ({options, children}) => {\n const search = useSearch(options);\n return <SearchContext.Provider value={search}>{children}</SearchContext.Provider>;\n};\n\nexport function useSearchContext(): SearchContextType {\n const ctx = React.useContext(SearchContext);\n if (!ctx) {\n throw new Error('useSearchContext must be used within a SearchProvider');\n }\n return ctx;\n}\n","import * as React from 'react';\nimport {UseSearchOptions, UseSearchReturn} from './_types';\n\nexport function useSearch(options: UseSearchOptions = {}): UseSearchReturn {\n const {\n defaultQuery = '',\n query: controlledQuery,\n onQueryChange,\n debounceMs = 300,\n defaultScope,\n scope: controlledScope,\n onScopeChange,\n } = options;\n\n const isQueryControlled = controlledQuery !== undefined;\n const isScopeControlled = controlledScope !== undefined;\n\n const [innerQuery, setInnerQuery] = React.useState(defaultQuery);\n const [debouncedQuery, setDebouncedQuery] = React.useState(controlledQuery ?? defaultQuery);\n const [innerScope, setInnerScope] = React.useState<string | undefined>(defaultScope);\n\n const query = isQueryControlled ? controlledQuery : innerQuery;\n\n // Stable refs for callbacks - prevents unnecessary re-references if inline functions are passed.\n const onQueryChangeRef = React.useRef(onQueryChange);\n React.useLayoutEffect(() => { onQueryChangeRef.current = onQueryChange; }, [onQueryChange]);\n \n const onScopeChangeRef = React.useRef(onScopeChange);\n React.useLayoutEffect(() => { onScopeChangeRef.current = onScopeChange; }, [onScopeChange]);\n\n const setQuery = React.useCallback(\n (q: string) => {\n if (!isQueryControlled) {\n setInnerQuery(q);\n }\n onQueryChangeRef.current?.(q);\n },\n [isQueryControlled],\n );\n\n const scope = isScopeControlled ? controlledScope : innerScope;\n\n const setScope = React.useCallback(\n (nextScope: string | undefined) => {\n if (!isScopeControlled) {\n setInnerScope(nextScope);\n }\n onScopeChangeRef.current?.(nextScope);\n },\n [isScopeControlled],\n );\n\n const clear = React.useCallback(() => {\n if (!isQueryControlled) {\n setInnerQuery(defaultQuery);\n }\n onQueryChangeRef.current?.(defaultQuery);\n\n if (!isScopeControlled) {\n setInnerScope(defaultScope);\n }\n onScopeChangeRef.current?.(defaultScope);\n }, [defaultQuery, defaultScope, isQueryControlled, isScopeControlled]);\n\n React.useEffect(() => {\n const timer = window.setTimeout(() => {\n setDebouncedQuery(query);\n }, debounceMs);\n\n // Cleanup guarantees pending timers are cancelled on unmount.\n return () => window.clearTimeout(timer);\n }, [query, debounceMs]);\n\n return {query, debouncedQuery, setQuery, scope, setScope, clear};\n}\n","import * as React from 'react';\nimport { InputAdornment } from '@/ele/Form';\nimport { TextField } from '@/ele/Input';\nimport { IconButton } from '@/ele/Button';\nimport { CircularProgress } from '@/ele/Progress';\nimport { ClearIcon, SearchIcon } from '@/icons/MuiIcon';\nimport type {SearchBarProps} from './_types';\nimport {useSearchContext} from './context';\nimport { mergeSx } from '@/_utils/_func';\n\nexport const SearchBar: React.FC<SearchBarProps> = ({\n placeholder,\n adornment,\n onSubmit,\n showSubmitButton = true,\n submitOnEnter = true,\n loading = false,\n sx,\n}) => {\n const {query, scope, setQuery} = useSearchContext();\n\n // Stable ref — callers can pass inline functions without stale-closure bugs.\n const onSubmitRef = React.useRef(onSubmit);\n React.useLayoutEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);\n\n const handleClear = React.useCallback(() => {\n setQuery('');\n }, [setQuery]);\n\n const handleSubmit = React.useCallback(() => {\n const normalized = query.trim();\n if (!normalized) {\n return;\n }\n onSubmitRef.current?.(normalized, scope);\n }, [query, scope]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!submitOnEnter) {\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit, submitOnEnter],\n );\n\n return (\n <TextField\n value={query}\n onChange={e => setQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n sx={mergeSx(\n {\n \"& .MuiInputAdornment-root\": {\n gap: 0.5,\n },\n },\n sx,\n )}\n slotProps={{\n input: {\n startAdornment: adornment ? (\n <InputAdornment position=\"start\">{adornment}</InputAdornment>\n ) : undefined,\n endAdornment: (\n <InputAdornment position=\"end\">\n {query ? (\n <IconButton size=\"small\" onClick={handleClear} aria-label=\"Clear search input\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n ) : null}\n {showSubmitButton ? (\n loading ? (\n <CircularProgress size={18} thickness={5} />\n ) : (\n <IconButton size=\"small\" onClick={handleSubmit} aria-label=\"Submit search\">\n <SearchIcon fontSize=\"small\" />\n </IconButton>\n )\n ) : null}\n </InputAdornment>\n ),\n },\n }}\n />\n );\n};\n","import * as React from 'react';\nimport {Button} from '@/ele/Button';\nimport {MenuPopper, useMenu} from '@/ele/Menu';\nimport {ArrowDropDownRoundedIcon} from '@/icons/MuiIcon';\nimport type {SearchScopeProps} from './_types';\nimport {useSearchContext} from './context';\n\nexport const SearchScope: React.FC<SearchScopeProps> = ({\n options,\n sx,\n placeholderLabel = 'All',\n}) => {\n const {scope, setScope} = useSearchContext();\n\n const openMenuProps = useMenu({\n onItemClickClientArg: ({closeHandler}) => {\n closeHandler?.();\n },\n initSelected: scope ? [scope] : [],\n });\n\n const menuOptions = React.useMemo(() => (options || []).map(option => ({\n id: option.value,\n label: option.label,\n onClick: () => {\n setScope(option.value);\n },\n })), [options, setScope]);\n\n if (!options || options.length === 0) {\n return null;\n }\n\n const activeLabel = options.find(option => option.value === scope)?.label ?? placeholderLabel;\n\n return (\n <>\n <Button\n size='small'\n variant='outlined'\n onClick={openMenuProps.onTriggerClickHandler}\n endIcon={<ArrowDropDownRoundedIcon />}\n sx={sx}\n >\n {activeLabel}\n </Button>\n\n <MenuPopper\n options={menuOptions}\n openMenuProps={{\n ...openMenuProps,\n initSelected: scope ? [scope] : [],\n sorted: false,\n }}\n placement='bottom-start'\n menuItemProps={{\n fontSize: '0.875rem',\n padding: '6px 12px',\n }}\n />\n </>\n );\n};\n","import * as React from 'react';\nimport { Box } from '@/ele/Box';\nimport { CircularProgress } from '@/ele/Progress';\nimport { Paper } from '@/ele/Paper';\nimport { Typography } from '@/ele/Typography';\nimport {Menu} from '@/ele/Menu';\nimport type {SuggestionItem, SuggestionListProps} from './_types';\nimport {useSearchContext} from './context';\nimport { useSearchRootSx } from './theme';\nimport { mergeSx } from '@/_utils/_func';\n\nconst DEFAULT_MAX_ITEMS = 8;\n\nexport function SuggestionList<T extends SuggestionItem>({\n items,\n onSelect,\n renderItem,\n getItemLabel,\n maxItems = DEFAULT_MAX_ITEMS,\n showWhenEmptyQuery = false,\n loading = false,\n loadingText = 'Fetching suggestions...',\n emptyText = 'No suggestions',\n filterMode = 'client',\n footer,\n sx,\n}: SuggestionListProps<T>) {\n const {query, setQuery} = useSearchContext();\n\n const resolvedGetLabel = React.useCallback(\n (item: T) => (getItemLabel ? getItemLabel(item) : item.label),\n [getItemLabel],\n );\n\n const normalizedQuery = query.trim().toLowerCase();\n\n const filteredItems = React.useMemo(() => {\n if (!showWhenEmptyQuery && !normalizedQuery) {\n return [] as T[];\n }\n\n if (filterMode === 'none') {\n return items.slice(0, maxItems);\n }\n\n return items\n .filter(item => {\n if (!normalizedQuery) {\n return true;\n }\n return resolvedGetLabel(item).toLowerCase().includes(normalizedQuery);\n })\n .slice(0, maxItems);\n }, [filterMode, items, maxItems, normalizedQuery, resolvedGetLabel, showWhenEmptyQuery]);\n\n const handleSelect = React.useCallback(\n (item: T) => {\n setQuery(resolvedGetLabel(item));\n onSelect?.(item);\n },\n [onSelect, resolvedGetLabel, setQuery],\n );\n\n const menuOptions = React.useMemo(\n () =>\n filteredItems.map(item => ({\n id: String(item.id),\n label: renderItem ? renderItem(item) : resolvedGetLabel(item),\n onClick: () => handleSelect(item),\n })),\n [filteredItems, handleSelect, renderItem, resolvedGetLabel],\n );\n\n if (loading && (normalizedQuery || showWhenEmptyQuery)) {\n return (\n <Paper elevation={3} sx={sx}>\n <Box sx={{display: 'flex', alignItems: 'center', gap: 1, px: 1.5, py: 1.25}}>\n <CircularProgress size={16} thickness={5} />\n <Typography variant='body2'>{loadingText}</Typography>\n </Box>\n </Paper>\n );\n }\n\n if (filteredItems.length === 0) {\n if (!normalizedQuery && !showWhenEmptyQuery) {\n return null;\n }\n\n return (\n <Paper elevation={3} sx={sx}>\n <Box sx={mergeSx({ px: 1.5, py: 1.25 }, useSearchRootSx)}>\n <Typography variant='body2' sx={{ color: 'var(--usesearch-empty-text-color)' }}>\n {emptyText}\n </Typography>\n </Box>\n </Paper>\n );\n }\n\n return (\n <Paper elevation={3} sx={sx}>\n <Menu\n options={menuOptions}\n initSelected={[]}\n sorted={false}\n menuItemProps={{\n fontSize: '0.875rem',\n padding: '6px 12px',\n }}\n />\n {footer ? (\n <Box sx={{px: 1, pb: 1}}>\n {footer}\n </Box>\n ) : null}\n </Paper>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\n/**\n * Root-level CSS variable aliases for UseSearch compound component.\n * Spread on container elements — children consume via `var(--*)`.\n */\nexport const useSearchRootSx: SxProps<Theme> = {\n '--usesearch-empty-text-color': 'var(--mui-palette-text-secondary)',\n};\n","import * as React from 'react';\nimport {Button} from '@/ele/Button';\nimport {ScopeSuggestionsProps, SuggestionItem} from './_types';\nimport {SuggestionList} from './SuggestionList';\nimport {useSearchContext} from './context';\n\nexport function ScopeSuggestions<T extends SuggestionItem>({\n getSuggestions,\n onLoadMore,\n hasMore,\n loadMoreLabel = 'Load more',\n onLoadingChange,\n onError,\n onSelect,\n renderItem,\n getItemLabel,\n maxItems,\n showWhenEmptyQuery,\n loadingText,\n emptyText,\n filterMode,\n sx,\n}: ScopeSuggestionsProps<T>) {\n const {scope, debouncedQuery} = useSearchContext();\n const requestIdRef = React.useRef(0);\n const [items, setItems] = React.useState<T[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [loadingMore, setLoadingMore] = React.useState(false);\n\n // Stable refs for callbacks — prevents infinite loops when callers pass inline functions.\n const getSuggestionsRef = React.useRef(getSuggestions);\n React.useLayoutEffect(() => { getSuggestionsRef.current = getSuggestions; }, [getSuggestions]);\n const onLoadingChangeRef = React.useRef(onLoadingChange);\n React.useLayoutEffect(() => { onLoadingChangeRef.current = onLoadingChange; }, [onLoadingChange]);\n const onErrorRef = React.useRef(onError);\n React.useLayoutEffect(() => { onErrorRef.current = onError; }, [onError]);\n\n const resolvedHasMore = React.useMemo(() => {\n if (typeof hasMore === 'function') {\n return hasMore(items, scope, debouncedQuery.trim());\n }\n return Boolean(hasMore);\n }, [debouncedQuery, hasMore, items, scope]);\n\n React.useEffect(() => {\n const query = debouncedQuery.trim();\n\n if (!query && !showWhenEmptyQuery) {\n setItems([]);\n setLoading(false);\n setLoadingMore(false);\n onLoadingChangeRef.current?.(false);\n return;\n }\n\n requestIdRef.current += 1;\n const currentRequestId = requestIdRef.current;\n let isActive = true;\n\n setLoading(true);\n onLoadingChangeRef.current?.(true);\n\n Promise.resolve(getSuggestionsRef.current(scope, query))\n .then(next => {\n if (!isActive || currentRequestId !== requestIdRef.current) {\n return;\n }\n setItems(next);\n })\n .catch(error => {\n if (!isActive || currentRequestId !== requestIdRef.current) {\n return;\n }\n setItems([]);\n onErrorRef.current?.(error);\n })\n .finally(() => {\n if (!isActive || currentRequestId !== requestIdRef.current) {\n return;\n }\n setLoading(false);\n setLoadingMore(false);\n onLoadingChangeRef.current?.(false);\n });\n\n return () => {\n isActive = false;\n // Notify parent that loading stopped when the effect is re-run or component unmounts.\n onLoadingChangeRef.current?.(false);\n };\n }, [debouncedQuery, scope, showWhenEmptyQuery]);\n\n const handleLoadMore = React.useCallback(() => {\n if (!onLoadMore || loading || loadingMore) {\n return;\n }\n\n const query = debouncedQuery.trim();\n if (!query && !showWhenEmptyQuery) {\n return;\n }\n\n setLoadingMore(true);\n Promise.resolve(onLoadMore(scope, query, items))\n .then(next => {\n setItems(next);\n })\n .catch(error => {\n onErrorRef.current?.(error);\n })\n .finally(() => {\n setLoadingMore(false);\n });\n }, [debouncedQuery, items, loading, loadingMore, onLoadMore, scope, showWhenEmptyQuery]);\n\n const footer = onLoadMore && resolvedHasMore ? (\n <Button\n size='small'\n variant='text'\n fullWidth\n disabled={loadingMore || loading}\n onClick={handleLoadMore}\n >\n {loadingMore ? 'Loading more...' : loadMoreLabel}\n </Button>\n ) : null;\n\n return (\n <SuggestionList\n items={items}\n loading={loading}\n footer={footer}\n onSelect={onSelect}\n renderItem={renderItem}\n getItemLabel={getItemLabel}\n maxItems={maxItems}\n showWhenEmptyQuery={showWhenEmptyQuery}\n loadingText={loadingText}\n emptyText={emptyText}\n filterMode={filterMode}\n sx={sx}\n />\n );\n}\n","import * as React from 'react';\nimport { Box } from '@/ele/Box';\nimport type {SuggestionItem, UseSearchLayoutProps} from './_types';\nimport {SearchBar} from './SearchBar';\nimport {SearchScope} from './SearchScope';\nimport {ScopeSuggestions} from './ScopeSuggestions';\nimport {SearchResults} from './SearchResults';\n\nconst DEFAULT_CONTAINER_SX = {width: 560, maxWidth: '90vw', position: 'relative'};\nconst DEFAULT_ROW_SX = {display: 'flex', gap: 1};\nconst DEFAULT_SCOPE_SX = {minWidth: 130};\nconst DEFAULT_SEARCH_BAR_SX = {flex: 1};\nconst DEFAULT_SUGGESTIONS_SX = {\n position: 'absolute',\n top: 56,\n left: 0,\n right: 0,\n zIndex: 2,\n};\n\nexport function UseSearchLayout<T extends SuggestionItem>({\n scopeOptions,\n scopePlaceholderLabel = 'Engine',\n searchPlaceholder = 'Search',\n getSuggestions,\n onLoadMoreSuggestions,\n hasMoreSuggestions,\n loadMoreSuggestionsLabel,\n onSuggestionSelect,\n renderSuggestionItem,\n getSuggestionLabel,\n suggestionFilterMode,\n suggestionsLoadingText,\n suggestionsEmptyText,\n onSuggestionsError,\n onSearchSubmit,\n children,\n containerSx,\n rowSx,\n scopeSx,\n searchBarSx,\n suggestionsSx,\n}: UseSearchLayoutProps<T>) {\n const [suggestionsLoading, setSuggestionsLoading] = React.useState(false);\n\n return (\n <Box sx={containerSx ?? DEFAULT_CONTAINER_SX}>\n <Box sx={rowSx ?? DEFAULT_ROW_SX}>\n <SearchScope\n options={scopeOptions}\n sx={scopeSx ?? DEFAULT_SCOPE_SX}\n placeholderLabel={scopePlaceholderLabel}\n />\n <SearchBar\n placeholder={searchPlaceholder}\n sx={searchBarSx ?? DEFAULT_SEARCH_BAR_SX}\n loading={suggestionsLoading}\n onSubmit={onSearchSubmit}\n />\n </Box>\n\n {getSuggestions && (\n <ScopeSuggestions\n getSuggestions={getSuggestions}\n onLoadMore={onLoadMoreSuggestions}\n hasMore={hasMoreSuggestions}\n loadMoreLabel={loadMoreSuggestionsLabel}\n onLoadingChange={setSuggestionsLoading}\n onSelect={onSuggestionSelect}\n renderItem={renderSuggestionItem}\n getItemLabel={getSuggestionLabel}\n filterMode={suggestionFilterMode}\n loadingText={suggestionsLoadingText}\n emptyText={suggestionsEmptyText}\n onError={onSuggestionsError}\n sx={suggestionsSx ?? DEFAULT_SUGGESTIONS_SX}\n />\n )}\n\n <SearchResults>\n {children}\n </SearchResults>\n </Box>\n );\n}\n","import * as React from 'react';\nimport type {SearchResultsProps} from './_types';\nimport {useSearchContext} from './context';\n\nexport const SearchResults: React.FC<SearchResultsProps> = ({children}) => {\n const {debouncedQuery, scope} = useSearchContext();\n return <>{children(debouncedQuery, scope)}</>;\n};\n"],"mappings":"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","names":["React","React","jsx","default","React","jsx","jsxs","default","React","jsx","jsxs","default","React","jsx","React","Fragment","jsx","jsx","jsxs","default"]}