@startdownnotez404/ui 1.0.0 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/README.md +110 -0
  2. package/dist/AutocompleteField-ZKNU2IRR.mjs +181 -0
  3. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +1 -0
  4. package/dist/AvatarField-SAODT3CZ.mjs +275 -0
  5. package/dist/AvatarField-SAODT3CZ.mjs.map +1 -0
  6. package/dist/CodeEditor-JF55ZNVD.mjs +34 -0
  7. package/dist/CodeEditor-JF55ZNVD.mjs.map +1 -0
  8. package/dist/DateField-ZYMZFHL4.mjs +82 -0
  9. package/dist/DateField-ZYMZFHL4.mjs.map +1 -0
  10. package/dist/DateTimeField-TPTJ7YIZ.mjs +65 -0
  11. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +1 -0
  12. package/dist/FileUploadField-NTMWBJER.mjs +78 -0
  13. package/dist/FileUploadField-NTMWBJER.mjs.map +1 -0
  14. package/dist/JSONEditorField-TMRWGXVR.mjs +64 -0
  15. package/dist/JSONEditorField-TMRWGXVR.mjs.map +1 -0
  16. package/dist/PopperMenu-LJ36RPBW.mjs +416 -0
  17. package/dist/PopperMenu-LJ36RPBW.mjs.map +1 -0
  18. package/dist/TelField-LOGRVZ4I.mjs +88 -0
  19. package/dist/TelField-LOGRVZ4I.mjs.map +1 -0
  20. package/dist/alert.d.mts +202 -0
  21. package/dist/alert.d.ts +202 -0
  22. package/dist/alert.js +784 -0
  23. package/dist/alert.js.map +1 -0
  24. package/dist/alert.mjs +47 -0
  25. package/dist/alert.mjs.map +1 -0
  26. package/dist/appBar.d.mts +21 -0
  27. package/dist/appBar.d.ts +21 -0
  28. package/dist/appBar.js +64 -0
  29. package/dist/appBar.js.map +1 -0
  30. package/dist/appBar.mjs +12 -0
  31. package/dist/appBar.mjs.map +1 -0
  32. package/dist/autocomplete.d.mts +121 -0
  33. package/dist/autocomplete.d.ts +121 -0
  34. package/dist/autocomplete.js +2052 -0
  35. package/dist/autocomplete.js.map +1 -0
  36. package/dist/autocomplete.mjs +21 -0
  37. package/dist/autocomplete.mjs.map +1 -0
  38. package/dist/avatar.d.mts +253 -0
  39. package/dist/avatar.d.ts +253 -0
  40. package/dist/avatar.js +992 -0
  41. package/dist/avatar.js.map +1 -0
  42. package/dist/avatar.mjs +41 -0
  43. package/dist/avatar.mjs.map +1 -0
  44. package/dist/badge.d.mts +123 -0
  45. package/dist/badge.d.ts +123 -0
  46. package/dist/badge.js +151 -0
  47. package/dist/badge.js.map +1 -0
  48. package/dist/badge.mjs +10 -0
  49. package/dist/badge.mjs.map +1 -0
  50. package/dist/box.d.mts +36 -0
  51. package/dist/box.d.ts +36 -0
  52. package/dist/box.js +199 -0
  53. package/dist/box.js.map +1 -0
  54. package/dist/box.mjs +14 -0
  55. package/dist/box.mjs.map +1 -0
  56. package/dist/button.d.mts +230 -52
  57. package/dist/button.d.ts +230 -52
  58. package/dist/button.js +392 -60
  59. package/dist/button.js.map +1 -1
  60. package/dist/button.mjs +14 -8
  61. package/dist/card.d.mts +47 -0
  62. package/dist/card.d.ts +47 -0
  63. package/dist/card.js +135 -0
  64. package/dist/card.js.map +1 -0
  65. package/dist/card.mjs +24 -0
  66. package/dist/card.mjs.map +1 -0
  67. package/dist/chart.d.mts +40 -0
  68. package/dist/chart.d.ts +40 -0
  69. package/dist/chart.js +1234 -0
  70. package/dist/chart.js.map +1 -0
  71. package/dist/chart.mjs +10 -0
  72. package/dist/chart.mjs.map +1 -0
  73. package/dist/checkbox.d.mts +62 -0
  74. package/dist/checkbox.d.ts +62 -0
  75. package/dist/checkbox.js +299 -0
  76. package/dist/checkbox.js.map +1 -0
  77. package/dist/checkbox.mjs +14 -0
  78. package/dist/checkbox.mjs.map +1 -0
  79. package/dist/chip.d.mts +96 -0
  80. package/dist/chip.d.ts +96 -0
  81. package/dist/chip.js +112 -0
  82. package/dist/chip.js.map +1 -0
  83. package/dist/chip.mjs +10 -0
  84. package/dist/chip.mjs.map +1 -0
  85. package/dist/chunk-24XDGNJ6.mjs +1450 -0
  86. package/dist/chunk-24XDGNJ6.mjs.map +1 -0
  87. package/dist/chunk-27KYFU7R.mjs +30 -0
  88. package/dist/chunk-27KYFU7R.mjs.map +1 -0
  89. package/dist/chunk-2FFLT5VP.mjs +7 -0
  90. package/dist/chunk-2FFLT5VP.mjs.map +1 -0
  91. package/dist/chunk-2ZZJTBTE.mjs +148 -0
  92. package/dist/chunk-2ZZJTBTE.mjs.map +1 -0
  93. package/dist/chunk-3DQINB57.mjs +15 -0
  94. package/dist/chunk-3DQINB57.mjs.map +1 -0
  95. package/dist/chunk-3VUAM2GY.mjs +52 -0
  96. package/dist/chunk-3VUAM2GY.mjs.map +1 -0
  97. package/dist/chunk-4Q54P737.mjs +19 -0
  98. package/dist/chunk-4Q54P737.mjs.map +1 -0
  99. package/dist/chunk-4RPFRNXG.mjs +62 -0
  100. package/dist/chunk-4RPFRNXG.mjs.map +1 -0
  101. package/dist/chunk-56TI2ZBT.mjs +114 -0
  102. package/dist/chunk-56TI2ZBT.mjs.map +1 -0
  103. package/dist/chunk-6REEQBJI.mjs +62 -0
  104. package/dist/chunk-6REEQBJI.mjs.map +1 -0
  105. package/dist/chunk-AAH2O24U.mjs +325 -0
  106. package/dist/chunk-AAH2O24U.mjs.map +1 -0
  107. package/dist/chunk-B7DAB22K.mjs +16 -0
  108. package/dist/chunk-B7DAB22K.mjs.map +1 -0
  109. package/dist/chunk-BGB7JHIU.mjs +222 -0
  110. package/dist/chunk-BGB7JHIU.mjs.map +1 -0
  111. package/dist/chunk-CRYIEYZZ.mjs +756 -0
  112. package/dist/chunk-CRYIEYZZ.mjs.map +1 -0
  113. package/dist/chunk-CWFWRZWU.mjs +23 -0
  114. package/dist/chunk-CWFWRZWU.mjs.map +1 -0
  115. package/dist/chunk-DELCADNF.mjs +1926 -0
  116. package/dist/chunk-DELCADNF.mjs.map +1 -0
  117. package/dist/chunk-E3I2VDHZ.mjs +292 -0
  118. package/dist/chunk-E3I2VDHZ.mjs.map +1 -0
  119. package/dist/chunk-EEH7HACG.mjs +249 -0
  120. package/dist/chunk-EEH7HACG.mjs.map +1 -0
  121. package/dist/chunk-EKPULYPU.mjs +497 -0
  122. package/dist/chunk-EKPULYPU.mjs.map +1 -0
  123. package/dist/chunk-EW4DTFH3.mjs +69 -0
  124. package/dist/chunk-EW4DTFH3.mjs.map +1 -0
  125. package/dist/chunk-FJ6ZGZIA.mjs +43 -0
  126. package/dist/chunk-FJ6ZGZIA.mjs.map +1 -0
  127. package/dist/chunk-HE7MY3RT.mjs +23 -0
  128. package/dist/chunk-HE7MY3RT.mjs.map +1 -0
  129. package/dist/chunk-HR3A4H4E.mjs +1289 -0
  130. package/dist/chunk-HR3A4H4E.mjs.map +1 -0
  131. package/dist/chunk-I5JWS4Z7.mjs +91 -0
  132. package/dist/chunk-I5JWS4Z7.mjs.map +1 -0
  133. package/dist/chunk-IN3O4R7Q.mjs +932 -0
  134. package/dist/chunk-IN3O4R7Q.mjs.map +1 -0
  135. package/dist/chunk-JIU5GVM7.mjs +414 -0
  136. package/dist/chunk-JIU5GVM7.mjs.map +1 -0
  137. package/dist/chunk-JWANK42G.mjs +170 -0
  138. package/dist/chunk-JWANK42G.mjs.map +1 -0
  139. package/dist/chunk-MDAUF7IL.mjs +9 -0
  140. package/dist/chunk-MDAUF7IL.mjs.map +1 -0
  141. package/dist/chunk-MI64T62E.mjs +26 -0
  142. package/dist/chunk-MI64T62E.mjs.map +1 -0
  143. package/dist/chunk-NJYNJLT7.mjs +172 -0
  144. package/dist/chunk-NJYNJLT7.mjs.map +1 -0
  145. package/dist/chunk-NLBDBJ3R.mjs +97 -0
  146. package/dist/chunk-NLBDBJ3R.mjs.map +1 -0
  147. package/dist/chunk-OGNGPI3M.mjs +333 -0
  148. package/dist/chunk-OGNGPI3M.mjs.map +1 -0
  149. package/dist/chunk-OJV6V7YZ.mjs +552 -0
  150. package/dist/chunk-OJV6V7YZ.mjs.map +1 -0
  151. package/dist/chunk-ONQMRE2G.mjs +26 -0
  152. package/dist/chunk-ONQMRE2G.mjs.map +1 -0
  153. package/dist/chunk-OP6LKXPA.mjs +75 -0
  154. package/dist/chunk-OP6LKXPA.mjs.map +1 -0
  155. package/dist/chunk-QFF3HTHL.mjs +14 -0
  156. package/dist/chunk-QFF3HTHL.mjs.map +1 -0
  157. package/dist/chunk-QKGCW37O.mjs +1175 -0
  158. package/dist/chunk-QKGCW37O.mjs.map +1 -0
  159. package/dist/chunk-R5MKQN6D.mjs +227 -0
  160. package/dist/chunk-R5MKQN6D.mjs.map +1 -0
  161. package/dist/chunk-RXBQ7KXF.mjs +652 -0
  162. package/dist/chunk-RXBQ7KXF.mjs.map +1 -0
  163. package/dist/chunk-S6EZVRZC.mjs +161 -0
  164. package/dist/chunk-S6EZVRZC.mjs.map +1 -0
  165. package/dist/chunk-SGCUDWO3.mjs +396 -0
  166. package/dist/chunk-SGCUDWO3.mjs.map +1 -0
  167. package/dist/chunk-SRWPHN2N.mjs +188 -0
  168. package/dist/chunk-SRWPHN2N.mjs.map +1 -0
  169. package/dist/chunk-T34IULP5.mjs +242 -0
  170. package/dist/chunk-T34IULP5.mjs.map +1 -0
  171. package/dist/chunk-T4X375IG.mjs +100 -0
  172. package/dist/chunk-T4X375IG.mjs.map +1 -0
  173. package/dist/chunk-T6AMRENK.mjs +376 -0
  174. package/dist/chunk-T6AMRENK.mjs.map +1 -0
  175. package/dist/chunk-TDRA5EZI.mjs +325 -0
  176. package/dist/chunk-TDRA5EZI.mjs.map +1 -0
  177. package/dist/chunk-UDREPVEY.mjs +356 -0
  178. package/dist/chunk-UDREPVEY.mjs.map +1 -0
  179. package/dist/chunk-UGMRJMFZ.mjs +172 -0
  180. package/dist/chunk-UGMRJMFZ.mjs.map +1 -0
  181. package/dist/chunk-UMJ5SCIQ.mjs +438 -0
  182. package/dist/chunk-UMJ5SCIQ.mjs.map +1 -0
  183. package/dist/chunk-UTVSYS6S.mjs +270 -0
  184. package/dist/chunk-UTVSYS6S.mjs.map +1 -0
  185. package/dist/chunk-V26V2S3W.mjs +197 -0
  186. package/dist/chunk-V26V2S3W.mjs.map +1 -0
  187. package/dist/chunk-VYD3PDBB.mjs +38 -0
  188. package/dist/chunk-VYD3PDBB.mjs.map +1 -0
  189. package/dist/chunk-WYYP3Y34.mjs +55 -0
  190. package/dist/chunk-WYYP3Y34.mjs.map +1 -0
  191. package/dist/chunk-XIMFP6RB.mjs +161 -0
  192. package/dist/chunk-XIMFP6RB.mjs.map +1 -0
  193. package/dist/chunk-XJ2SXC2Q.mjs +558 -0
  194. package/dist/chunk-XJ2SXC2Q.mjs.map +1 -0
  195. package/dist/chunk-Y74ALKBL.mjs +565 -0
  196. package/dist/chunk-Y74ALKBL.mjs.map +1 -0
  197. package/dist/chunk-ZG3NQI77.mjs +353 -0
  198. package/dist/chunk-ZG3NQI77.mjs.map +1 -0
  199. package/dist/chunk-ZVFYOXDE.mjs +297 -0
  200. package/dist/chunk-ZVFYOXDE.mjs.map +1 -0
  201. package/dist/collapse.d.mts +10 -0
  202. package/dist/collapse.d.ts +10 -0
  203. package/dist/collapse.js +53 -0
  204. package/dist/collapse.js.map +1 -0
  205. package/dist/collapse.mjs +10 -0
  206. package/dist/collapse.mjs.map +1 -0
  207. package/dist/datePicker.d.mts +133 -0
  208. package/dist/datePicker.d.ts +133 -0
  209. package/dist/datePicker.js +482 -0
  210. package/dist/datePicker.js.map +1 -0
  211. package/dist/datePicker.mjs +29 -0
  212. package/dist/datePicker.mjs.map +1 -0
  213. package/dist/displayFile.d.mts +95 -0
  214. package/dist/displayFile.d.ts +95 -0
  215. package/dist/displayFile.js +357 -0
  216. package/dist/displayFile.js.map +1 -0
  217. package/dist/displayFile.mjs +19 -0
  218. package/dist/displayFile.mjs.map +1 -0
  219. package/dist/divider.d.mts +9 -0
  220. package/dist/divider.d.ts +9 -0
  221. package/dist/divider.js +52 -0
  222. package/dist/divider.js.map +1 -0
  223. package/dist/divider.mjs +10 -0
  224. package/dist/divider.mjs.map +1 -0
  225. package/dist/fileUploader.d.mts +86 -0
  226. package/dist/fileUploader.d.ts +86 -0
  227. package/dist/fileUploader.js +722 -0
  228. package/dist/fileUploader.js.map +1 -0
  229. package/dist/fileUploader.mjs +16 -0
  230. package/dist/fileUploader.mjs.map +1 -0
  231. package/dist/flowMap.d.mts +353 -0
  232. package/dist/flowMap.d.ts +353 -0
  233. package/dist/flowMap.js +94806 -0
  234. package/dist/flowMap.js.map +1 -0
  235. package/dist/flowMap.mjs +94585 -0
  236. package/dist/flowMap.mjs.map +1 -0
  237. package/dist/form.d.mts +84 -0
  238. package/dist/form.d.ts +84 -0
  239. package/dist/form.js +144 -0
  240. package/dist/form.js.map +1 -0
  241. package/dist/form.mjs +24 -0
  242. package/dist/form.mjs.map +1 -0
  243. package/dist/icons.d.mts +160 -0
  244. package/dist/icons.d.ts +160 -0
  245. package/dist/icons.js +540 -0
  246. package/dist/icons.js.map +1 -0
  247. package/dist/icons.mjs +306 -0
  248. package/dist/icons.mjs.map +1 -0
  249. package/dist/image.d.mts +49 -0
  250. package/dist/image.d.ts +49 -0
  251. package/dist/image.js +1348 -0
  252. package/dist/image.js.map +1 -0
  253. package/dist/image.mjs +19 -0
  254. package/dist/image.mjs.map +1 -0
  255. package/dist/index.d.ts +46 -0
  256. package/dist/index.js +20198 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/index.mjs +912 -0
  259. package/dist/index.mjs.map +1 -0
  260. package/dist/input.d.mts +195 -0
  261. package/dist/input.d.ts +195 -0
  262. package/dist/input.js +1101 -0
  263. package/dist/input.js.map +1 -0
  264. package/dist/input.mjs +32 -0
  265. package/dist/input.mjs.map +1 -0
  266. package/dist/jsonEditor.d.mts +13 -0
  267. package/dist/jsonEditor.d.ts +13 -0
  268. package/dist/jsonEditor.js +247 -0
  269. package/dist/jsonEditor.js.map +1 -0
  270. package/dist/jsonEditor.mjs +9 -0
  271. package/dist/jsonEditor.mjs.map +1 -0
  272. package/dist/list.d.mts +83 -0
  273. package/dist/list.d.ts +83 -0
  274. package/dist/list.js +564 -0
  275. package/dist/list.js.map +1 -0
  276. package/dist/list.mjs +39 -0
  277. package/dist/list.mjs.map +1 -0
  278. package/dist/loading.d.mts +48 -0
  279. package/dist/loading.d.ts +48 -0
  280. package/dist/loading.js +383 -0
  281. package/dist/loading.js.map +1 -0
  282. package/dist/loading.mjs +23 -0
  283. package/dist/loading.mjs.map +1 -0
  284. package/dist/markdown.d.mts +14 -0
  285. package/dist/markdown.d.ts +14 -0
  286. package/dist/markdown.js +25927 -0
  287. package/dist/markdown.js.map +1 -0
  288. package/dist/markdown.mjs +25623 -0
  289. package/dist/markdown.mjs.map +1 -0
  290. package/dist/menu.d.mts +368 -0
  291. package/dist/menu.d.ts +368 -0
  292. package/dist/menu.js +1571 -0
  293. package/dist/menu.js.map +1 -0
  294. package/dist/menu.mjs +43 -0
  295. package/dist/menu.mjs.map +1 -0
  296. package/dist/modal.d.mts +90 -0
  297. package/dist/modal.d.ts +90 -0
  298. package/dist/modal.js +883 -0
  299. package/dist/modal.js.map +1 -0
  300. package/dist/modal.mjs +25 -0
  301. package/dist/modal.mjs.map +1 -0
  302. package/dist/overlay.d.mts +2 -0
  303. package/dist/overlay.d.ts +2 -0
  304. package/dist/overlay.js +46 -0
  305. package/dist/overlay.js.map +1 -0
  306. package/dist/overlay.mjs +10 -0
  307. package/dist/overlay.mjs.map +1 -0
  308. package/dist/paper.d.mts +38 -0
  309. package/dist/paper.d.ts +38 -0
  310. package/dist/paper.js +90 -0
  311. package/dist/paper.js.map +1 -0
  312. package/dist/paper.mjs +12 -0
  313. package/dist/paper.mjs.map +1 -0
  314. package/dist/patterns.d.mts +133 -0
  315. package/dist/patterns.d.ts +133 -0
  316. package/dist/patterns.js +483 -0
  317. package/dist/patterns.js.map +1 -0
  318. package/dist/patterns.mjs +46 -0
  319. package/dist/patterns.mjs.map +1 -0
  320. package/dist/process.d.mts +125 -0
  321. package/dist/process.d.ts +125 -0
  322. package/dist/process.js +1471 -0
  323. package/dist/process.js.map +1 -0
  324. package/dist/process.mjs +30 -0
  325. package/dist/process.mjs.map +1 -0
  326. package/dist/progress.d.mts +44 -0
  327. package/dist/progress.d.ts +44 -0
  328. package/dist/progress.js +94 -0
  329. package/dist/progress.js.map +1 -0
  330. package/dist/progress.mjs +14 -0
  331. package/dist/progress.mjs.map +1 -0
  332. package/dist/resizablePanel.d.mts +297 -0
  333. package/dist/resizablePanel.d.ts +297 -0
  334. package/dist/resizablePanel.js +122 -0
  335. package/dist/resizablePanel.js.map +1 -0
  336. package/dist/resizablePanel.mjs +22 -0
  337. package/dist/resizablePanel.mjs.map +1 -0
  338. package/dist/scrollToLoad.d.mts +41 -0
  339. package/dist/scrollToLoad.d.ts +41 -0
  340. package/dist/scrollToLoad.js +256 -0
  341. package/dist/scrollToLoad.js.map +1 -0
  342. package/dist/scrollToLoad.mjs +16 -0
  343. package/dist/scrollToLoad.mjs.map +1 -0
  344. package/dist/select.d.mts +50 -0
  345. package/dist/select.d.ts +50 -0
  346. package/dist/select.js +426 -0
  347. package/dist/select.js.map +1 -0
  348. package/dist/select.mjs +24 -0
  349. package/dist/select.mjs.map +1 -0
  350. package/dist/skeleton.d.mts +13 -0
  351. package/dist/skeleton.d.ts +13 -0
  352. package/dist/skeleton.js +68 -0
  353. package/dist/skeleton.js.map +1 -0
  354. package/dist/skeleton.mjs +11 -0
  355. package/dist/skeleton.mjs.map +1 -0
  356. package/dist/slider.d.mts +65 -0
  357. package/dist/slider.d.ts +65 -0
  358. package/dist/slider.js +106 -0
  359. package/dist/slider.js.map +1 -0
  360. package/dist/slider.mjs +10 -0
  361. package/dist/slider.mjs.map +1 -0
  362. package/dist/stepper.d.mts +98 -0
  363. package/dist/stepper.d.ts +98 -0
  364. package/dist/stepper.js +313 -0
  365. package/dist/stepper.js.map +1 -0
  366. package/dist/stepper.mjs +38 -0
  367. package/dist/stepper.mjs.map +1 -0
  368. package/dist/switch.d.mts +151 -0
  369. package/dist/switch.d.ts +151 -0
  370. package/dist/switch.js +289 -0
  371. package/dist/switch.js.map +1 -0
  372. package/dist/switch.mjs +17 -0
  373. package/dist/switch.mjs.map +1 -0
  374. package/dist/tab.d.mts +182 -0
  375. package/dist/tab.d.ts +182 -0
  376. package/dist/tab.js +1418 -0
  377. package/dist/tab.js.map +1 -0
  378. package/dist/tab.mjs +34 -0
  379. package/dist/tab.mjs.map +1 -0
  380. package/dist/table.d.mts +720 -0
  381. package/dist/table.d.ts +720 -0
  382. package/dist/table.js +10882 -0
  383. package/dist/table.js.map +1 -0
  384. package/dist/table.mjs +63 -0
  385. package/dist/table.mjs.map +1 -0
  386. package/dist/theme.d.mts +30 -4
  387. package/dist/theme.d.ts +30 -4
  388. package/dist/theme.js +3210 -170
  389. package/dist/theme.js.map +1 -1
  390. package/dist/theme.mjs +52 -230
  391. package/dist/theme.mjs.map +1 -1
  392. package/dist/timeline.d.mts +30 -0
  393. package/dist/timeline.d.ts +30 -0
  394. package/dist/timeline.js +273 -0
  395. package/dist/timeline.js.map +1 -0
  396. package/dist/timeline.mjs +14 -0
  397. package/dist/timeline.mjs.map +1 -0
  398. package/dist/toggleButtonGroup.d.mts +125 -0
  399. package/dist/toggleButtonGroup.d.ts +125 -0
  400. package/dist/toggleButtonGroup.js +190 -0
  401. package/dist/toggleButtonGroup.js.map +1 -0
  402. package/dist/toggleButtonGroup.mjs +15 -0
  403. package/dist/toggleButtonGroup.mjs.map +1 -0
  404. package/dist/tooltip.d.mts +13 -0
  405. package/dist/tooltip.d.ts +13 -0
  406. package/dist/tooltip.js +56 -0
  407. package/dist/tooltip.js.map +1 -0
  408. package/dist/tooltip.mjs +10 -0
  409. package/dist/tooltip.mjs.map +1 -0
  410. package/dist/typography.d.mts +21 -23
  411. package/dist/typography.d.ts +21 -23
  412. package/dist/typography.js +37 -63
  413. package/dist/typography.js.map +1 -1
  414. package/dist/typography.mjs +2 -1
  415. package/dist/useForm.d.mts +588 -0
  416. package/dist/useForm.d.ts +588 -0
  417. package/dist/useForm.js +8743 -0
  418. package/dist/useForm.js.map +1 -0
  419. package/dist/useForm.mjs +45 -0
  420. package/dist/useForm.mjs.map +1 -0
  421. package/dist/useSearch.d.mts +126 -0
  422. package/dist/useSearch.d.ts +126 -0
  423. package/dist/useSearch.js +1125 -0
  424. package/dist/useSearch.js.map +1 -0
  425. package/dist/useSearch.mjs +42 -0
  426. package/dist/useSearch.mjs.map +1 -0
  427. package/dist/variablesRenderer.d.mts +45 -0
  428. package/dist/variablesRenderer.d.ts +45 -0
  429. package/dist/variablesRenderer.js +511 -0
  430. package/dist/variablesRenderer.js.map +1 -0
  431. package/dist/variablesRenderer.mjs +21 -0
  432. package/dist/variablesRenderer.mjs.map +1 -0
  433. package/package.json +109 -15
  434. package/dist/chunk-PKADXEAD.mjs +0 -116
  435. package/dist/chunk-PKADXEAD.mjs.map +0 -1
  436. package/dist/chunk-YGBJCPUS.mjs +0 -88
  437. package/dist/chunk-YGBJCPUS.mjs.map +0 -1
  438. package/dist/theme.css +0 -44
  439. package/dist/theme.css.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Image/src/MuiImageList/MuiImageList.tsx","../src/components/elemental/Image/src/Cropper/Cropper.tsx","../src/components/elemental/Image/src/Cropper/theme.ts","../src/components/elemental/Image/src/Cropper/layout/CropperLayout.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperSourceSection.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperControlsSection.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperActionSection.tsx","../src/components/elemental/Image/src/Cropper/sections/CropperFileSelector.tsx","../src/components/elemental/Image/src/Cropper/hooks/useCropperState.ts"],"sourcesContent":["import ImageList from '@mui/material/ImageList';\nimport ImageListItem from '@mui/material/ImageListItem';\n\n/**\n * Mui compnent for ImageList\n * \n * [Doc](https://mui.com/material-ui/react-image-list/)\n */\nconst MuiImageList = ({imageList,cols=3,rowHeight=164,width='100%',height='auto'}: {\n imageList: {\n id: string | number;\n url: string; \n title?: string;\n }[];\n cols?: number; \n rowHeight?: number;\n width?: number | string;\n height?: number | string;\n}) => {\n return (\n <ImageList sx={{ width, height }} cols={cols} rowHeight={rowHeight}>\n {imageList.map((item) => (\n <ImageListItem key={item.id}>\n <img\n src={`${item.url}?w=${rowHeight * 2}&h=${rowHeight * 2}&fit=crop&auto=format`}\n alt={item.title??\"\"}\n loading=\"lazy\"\n width={rowHeight} height={rowHeight}\n style={{objectFit: 'cover'}}\n />\n </ImageListItem>\n ))}\n </ImageList>\n )\n}\n\nexport default MuiImageList\n","import 'react-image-crop/dist/ReactCrop.css';\nimport CropperLayout from './layout/CropperLayout';\nimport CropperSourceSection from './sections/CropperSourceSection';\nimport CropperControlsSection from './sections/CropperControlsSection';\nimport CropperActionSection from './sections/CropperActionSection';\nimport CropperFileSelector from './sections/CropperFileSelector';\nimport { useCropperState } from './hooks/useCropperState';\nimport type { CropperProps } from './types';\n\nconst Cropper: React.FC<CropperProps> = ({\n blobUrl,\n onSave,\n setImgNull,\n onClear, // optional parent callback when the image is removed\n circularCrop = false,\n defaultRatio,\n resizeCropEnabled = true,\n cropConfig,\n PreviewRenderer,\n footerExtra,\n showFileSelector = false,\n fileSelectorAccept = 'image/*',\n fileSelectorButtonLabel = 'Select Image',\n onFileSelect,\n}) => {\n const {\n imageRef,\n canvasRef,\n activeBlobUrl,\n crop,\n setCrop,\n completedCrop,\n setCompletedCrop,\n scale,\n setScale,\n rotate,\n setRotate,\n onImageLoad,\n handleSave,\n handleClear,\n handleResetTransforms,\n } = useCropperState({\n blobUrl,\n onSave,\n setImgNull,\n circularCrop,\n defaultRatio,\n cropConfig,\n });\n\n return (\n <CropperLayout\n left={(\n <CropperSourceSection\n activeBlobUrl={activeBlobUrl}\n crop={crop}\n setCrop={setCrop}\n setCompletedCrop={setCompletedCrop}\n circularCrop={circularCrop}\n defaultRatio={defaultRatio}\n resizeCropEnabled={resizeCropEnabled}\n rotate={rotate}\n scale={scale}\n imageRef={imageRef}\n onImageLoad={onImageLoad}\n />\n )}\n right={(\n <CropperControlsSection\n PreviewRenderer={PreviewRenderer}\n canvasRef={canvasRef}\n rotate={rotate}\n setRotate={setRotate}\n scale={scale}\n setScale={setScale}\n />\n )}\n leftFooter={(\n <>\n {footerExtra}\n {showFileSelector && (\n <CropperFileSelector\n accept={fileSelectorAccept}\n buttonLabel={fileSelectorButtonLabel}\n onPick={(f) => onFileSelect?.(f)}\n />\n )}\n </>\n )}\n footer={(\n <CropperActionSection\n onSave={handleSave}\n onResetTransforms={handleResetTransforms}\n onClear={() => {\n // clear internal cropper state and also notify parent if it wants to persist the removal\n handleClear();\n onClear?.();\n }}\n saveDisabled={!completedCrop || !activeBlobUrl}\n />\n )}\n />\n );\n};\n\nexport default Cropper;\nexport type { CropperProps };\n","import type { SxProps, Theme } from '@mui/material/styles'\n\n/**\n * Root-level CSS variable aliases for Cropper.\n * Children consume these vars; palette refs are declared only here.\n *\n * Also overrides react-image-crop public CSS vars (--rc-*) via cascade:\n * https://github.com/DominicTobias/react-image-crop#css-variables\n */\nexport const cropperRootSx: SxProps<Theme> = {\n '--image-border-radius': 'var(--mui-shape-borderRadius)',\n '--image-border': '2px solid var(--mui-palette-secondary-main)',\n // react-image-crop selection theming\n '--rc-border-color': 'var(--mui-palette-border-1)',\n '--rc-focus-color': 'var(--mui-palette-primary-main)',\n '--rc-drag-handle-bg-colour': 'var(--mui-palette-focus-1)',\n \"& .ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection)\": {\n '--animated-dash-light-color': 'var(--mui-palette-border-1)',\n '--animated-dash-dark-color': 'var(--mui-palette-grey-300)',\n backgroundImage: `\n linear-gradient(to right,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%),\n linear-gradient(to right,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%),\n linear-gradient(to bottom,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%),\n linear-gradient(to bottom,var(--animated-dash-light-color) 50%,var(--animated-dash-dark-color) 50%)`,\n },\n [`& .ReactCrop__rule-of-thirds-vt:before, \n .ReactCrop__rule-of-thirds-vt:after, \n .ReactCrop__rule-of-thirds-hz:before, \n .ReactCrop__rule-of-thirds-hz:after`]: {\n background:\"#fff6\",\n },\n}\n","import { Box } from '@/ele/Box';\nimport { cropperRootSx } from '../theme';\nimport { mergeSx } from '@/_utils/_func';\n\ninterface CropperLayoutProps {\n left: React.ReactNode;\n right: React.ReactNode;\n leftFooter?: React.ReactNode; // content shown at bottom of the left column (e.g. file selector)\n footer?: React.ReactNode; // bottom action/footer bar\n}\n\nexport default function CropperLayout({\n left,\n right,\n leftFooter,\n footer,\n}: CropperLayoutProps) {\n return (\n <Box sx={mergeSx({ display: 'flex', flexDirection: 'column', gap: 2, height: '100%' }, cropperRootSx)}>\n <Box\n sx={{\n // stack children vertically on small screens, switch to two‑column grid at md\n display: { xs: 'table-row-group', md: 'grid' },\n flexDirection: { xs: 'column', md: undefined },\n gridTemplateColumns: { xs: '1fr', md: '1fr 280px' },\n gap: 2,\n alignItems: 'start',\n minHeight: 0,\n flex: '1 1 auto',\n overflow: 'auto',\n }}\n >\n <Box sx={{ display: 'flex', flexDirection: 'column', justifyContent: 'space-between', minHeight: 0, height: '100%', alignItems: 'center', width: '-webkit-fill-available' }}>\n {left}\n {leftFooter}\n </Box>\n\n <Box sx={{ display: 'flex', flexDirection: 'column', justifyContent: 'space-between', minHeight: 0, height: '100%', }}>\n {right}\n {footer}\n </Box>\n </Box>\n </Box>\n );\n}\n","import React from 'react'\nimport ReactCrop, { type Crop, type PixelCrop } from 'react-image-crop';\nimport { Box } from '@/ele/Box';\n\ninterface CropperSourceSectionProps {\n activeBlobUrl: string;\n crop: Crop;\n setCrop: (crop: Crop) => void;\n setCompletedCrop: (crop: PixelCrop) => void;\n circularCrop: boolean;\n defaultRatio?: number;\n resizeCropEnabled: boolean;\n rotate: number;\n scale: number;\n imageRef: React.RefObject<HTMLImageElement | null>;\n onImageLoad: (e: React.SyntheticEvent<HTMLImageElement>) => void;\n}\n\nexport default function CropperSourceSection({\n activeBlobUrl,\n crop,\n setCrop,\n setCompletedCrop,\n circularCrop,\n defaultRatio,\n resizeCropEnabled,\n rotate,\n scale,\n imageRef,\n onImageLoad,\n}: CropperSourceSectionProps) {\n return (\n <Box\n sx={{\n minHeight: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n \"& .ReactCrop\": {\n borderRadius: 'var(--image-border-radius)',\n border: 'var(--image-border)',\n\n },\n }}\n >\n {!!activeBlobUrl && (\n <ReactCrop\n crop={crop}\n onChange={(nextCrop) => setCrop(nextCrop)}\n onComplete={(nextCrop) => setCompletedCrop(nextCrop)}\n circularCrop={circularCrop}\n aspect={defaultRatio}\n keepSelection\n ruleOfThirds\n disabled={!resizeCropEnabled}\n style={{ maxWidth: '100%', maxHeight: 420, overflow: 'hidden' }}\n >\n <img\n ref={imageRef}\n alt=\"Crop source\"\n src={activeBlobUrl}\n style={{\n display: 'block',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 420,\n objectFit: 'contain',\n transform: `rotate(${rotate}deg) scale(${scale})`,\n transformOrigin: 'center center',\n }}\n onLoad={onImageLoad}\n />\n </ReactCrop>\n )}\n </Box>\n );\n}\n","import React from 'react'\nimport { Box, Stack } from '@/ele/Box';\nimport { Slider } from '@/ele/Slider';\nimport { Typography } from '@/ele/Typography';\n\nconst scaleMarks = [\n { value: 0.5, label: '0.5x' },\n { value: 1, label: '1x' },\n { value: 1.5, label: '1.5x' },\n { value: 2, label: '2x' },\n { value: 2.5, label: '2.5x' },\n { value: 3, label: '3x' },\n];\n\nconst rotationMarks = [\n { value: -180, label: '-180°' },\n { value: -90, label: '-90°' },\n { value: 0, label: '0°' },\n { value: 90, label: '90°' },\n { value: 180, label: '180°' },\n];\n\ninterface CropperControlsSectionProps {\n PreviewRenderer?: React.ForwardRefExoticComponent<React.RefAttributes<HTMLCanvasElement>>;\n canvasRef: React.RefObject<HTMLCanvasElement | null>;\n rotate: number;\n setRotate: (value: number) => void;\n scale: number;\n setScale: (value: number) => void;\n}\n\nexport default function CropperControlsSection({\n PreviewRenderer,\n canvasRef,\n rotate,\n setRotate,\n scale,\n setScale,\n}: CropperControlsSectionProps) {\n return (\n <Stack spacing={2} sx={{ minWidth: 0, px: 2 }}>\n <Box display=\"flex\" justifyContent=\"center\">\n {PreviewRenderer ? (\n <PreviewRenderer ref={canvasRef} />\n ) : (\n <canvas\n ref={canvasRef}\n style={{ width: '100%', maxWidth: 260,\n border: 'var(--image-border)',\n borderRadius: 'var(--image-border-radius)',\n }}\n />\n )}\n </Box>\n\n <Box>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n Rotation ({rotate}°)\n </Typography>\n <Slider\n min={-180}\n max={180}\n step={1}\n marks={rotationMarks}\n value={rotate}\n onChange={(_, value) => setRotate(Array.isArray(value) ? value[0] : value)}\n />\n </Box>\n\n <Box>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n Resize scale ({scale.toFixed(2)}x)\n </Typography>\n <Slider\n min={0.5}\n max={3}\n step={0.05}\n marks={scaleMarks}\n value={scale}\n onChange={(_, value) => setScale(Array.isArray(value) ? value[0] : value)}\n />\n </Box>\n </Stack>\n );\n}\n","import { Box } from '@/ele/Box';\nimport { IconButton } from '@/ele/Button';\nimport { CheckIcon } from '@/icons/MuiIcon';\nimport { ClearIcon } from '@/icons/MuiIcon';\nimport { ReplayIcon } from '@/icons/MuiIcon';\n\ninterface CropperActionSectionProps {\n onSave: () => void;\n onResetTransforms: () => void;\n onClear: () => void;\n saveDisabled?: boolean;\n}\n\nexport default function CropperActionSection({\n onSave,\n onResetTransforms,\n onClear,\n saveDisabled,\n}: CropperActionSectionProps) {\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 1,\n flexWrap: 'wrap',\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap' }}>\n <IconButton onClick={onResetTransforms} title=\"Reset Scale & Rotation\">\n <ReplayIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton onClick={onClear} color=\"error\" title=\"Remove image\">\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton onClick={onSave} color=\"success\" disabled={saveDisabled} title=\"Save\">\n <CheckIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n );\n}\n","import React from 'react'\nimport { Box } from '@/ele/Box'\nimport { ReactDropzone } from '@/compound/FileUploader'\nimport PreviewableFile from '@/_utils/classes/PreviewableFile'\nimport type { DropzoneOptions } from 'react-dropzone'\n\ninterface Props {\n accept?: string | DropzoneOptions['accept'];\n buttonLabel?: string;\n /** `null` means the dropzone was cleared */\n onPick?: (file: File | null) => void;\n}\n\nexport default function CropperFileSelector({ accept = 'image/*', buttonLabel = 'Select Image', onPick }: Props) {\n const [files, setFiles] = React.useState<PreviewableFile[]>([])\n React.useEffect(() => {\n // debug render lifecycle for troubleshooting recursive render\n // console.debug('[CropperFileSelector] render — files.length=', files.length);\n }, [files]);\n\n const lastForwardedRef = React.useRef<string | null>(null);\n\n React.useEffect(() => {\n // when a file is removed from the dropzone, notify parent with null\n if (!files.length) {\n if (lastForwardedRef.current) {\n lastForwardedRef.current = null;\n onPick?.(null);\n }\n return;\n }\n\n const pf = files[0];\n if (!pf.blobUrl) return;\n\n // avoid forwarding the same file repeatedly (prevents recursion/loops)\n if (lastForwardedRef.current === pf.blobUrl) {\n return;\n }\n\n let cancelled = false;\n (async () => {\n try {\n const res = await fetch(pf.blobUrl);\n const blob = await res.blob();\n const file = new File([blob], pf.filename || 'file', { type: pf.mimeType || undefined });\n if (!cancelled) {\n lastForwardedRef.current = pf.blobUrl;\n onPick?.(file);\n }\n } catch {\n // silently ignore fetch/conversion errors — leave dropzone in place\n }\n })();\n\n return () => { cancelled = true };\n }, [files, onPick]);\n\n const acceptProp: DropzoneOptions['accept'] | undefined = typeof accept === 'string' ? { [accept]: [] } : accept\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', pt:0, width: '100%', justifyContent: 'center' }}>\n <ReactDropzone filesProps={[files, setFiles]} accept={acceptProp} maxFiles={1} dropzoneType=\"button\" label={buttonLabel} />\n </Box>\n )\n}\n","import React from 'react';\nimport {\n centerCrop,\n convertToPixelCrop,\n makeAspectCrop,\n type Crop,\n type PixelCrop,\n} from 'react-image-crop';\n\ninterface UseCropperStateParams {\n blobUrl: string;\n onSave: (url: string) => void | Promise<void>;\n setImgNull: () => void;\n circularCrop: boolean;\n defaultRatio?: number;\n cropConfig?: Partial<Crop>;\n}\n\nfunction toRad(degrees: number) {\n return (degrees * Math.PI) / 180;\n}\n\nfunction defaultCrop(): Crop {\n return {\n unit: '%',\n x: 10,\n y: 10,\n width: 80,\n height: 80,\n };\n}\n\nfunction makeCenteredAspectCrop(mediaWidth: number, mediaHeight: number, aspect: number): Crop {\n return centerCrop(\n makeAspectCrop(\n {\n unit: '%',\n width: 90,\n },\n aspect,\n mediaWidth,\n mediaHeight,\n ),\n mediaWidth,\n mediaHeight,\n );\n}\n\nfunction initialCrop(\n mediaWidth: number,\n mediaHeight: number,\n defaultRatio: number | undefined,\n cropConfig: Partial<Crop> | undefined,\n): Crop {\n if (defaultRatio) {\n return makeCenteredAspectCrop(mediaWidth, mediaHeight, defaultRatio);\n }\n return { ...defaultCrop(), ...cropConfig };\n}\n\nfunction drawPreviewToCanvas(\n image: HTMLImageElement,\n canvas: HTMLCanvasElement,\n crop: PixelCrop,\n scale: number,\n rotate: number,\n circularCrop?: boolean,\n) {\n const context = canvas.getContext('2d');\n if (!context) return;\n if (!crop.width || !crop.height) return;\n\n const scaleX = image.naturalWidth / image.width;\n const scaleY = image.naturalHeight / image.height;\n const pixelRatio = window.devicePixelRatio || 1;\n\n canvas.width = Math.floor(crop.width * scaleX * pixelRatio);\n canvas.height = Math.floor(crop.height * scaleY * pixelRatio);\n\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n context.imageSmoothingQuality = 'high';\n context.clearRect(0, 0, canvas.width, canvas.height);\n\n const cropX = crop.x * scaleX;\n const cropY = crop.y * scaleY;\n const rotateRads = toRad(rotate);\n const centerX = image.naturalWidth / 2;\n const centerY = image.naturalHeight / 2;\n\n context.save();\n if (circularCrop) {\n const width = crop.width * scaleX;\n const height = crop.height * scaleY;\n const radius = Math.min(width, height) / 2;\n context.beginPath();\n context.arc(width / 2, height / 2, radius, 0, Math.PI * 2);\n context.closePath();\n context.clip();\n }\n\n context.translate(-cropX, -cropY);\n context.translate(centerX, centerY);\n context.rotate(rotateRads);\n context.scale(scale, scale);\n context.translate(-centerX, -centerY);\n\n context.drawImage(\n image,\n 0,\n 0,\n image.naturalWidth,\n image.naturalHeight,\n 0,\n 0,\n image.naturalWidth,\n image.naturalHeight,\n );\n context.restore();\n}\n\nexport function useCropperState({\n blobUrl,\n onSave,\n setImgNull,\n circularCrop,\n defaultRatio,\n cropConfig,\n}: UseCropperStateParams) {\n const imageRef = React.useRef<HTMLImageElement | null>(null);\n const canvasRef = React.useRef<HTMLCanvasElement | null>(null);\n const cropConfigRef = React.useRef(cropConfig);\n cropConfigRef.current = cropConfig;\n const scaleRef = React.useRef(1);\n const rotateRef = React.useRef(0);\n\n const [activeBlobUrl, setActiveBlobUrl] = React.useState(blobUrl);\n const [crop, setCrop] = React.useState<Crop>({ ...defaultCrop(), ...cropConfig });\n const [completedCrop, setCompletedCrop] = React.useState<PixelCrop>();\n const [scale, setScale] = React.useState(1);\n const [rotate, setRotate] = React.useState(0);\n scaleRef.current = scale;\n rotateRef.current = rotate;\n\n const applyCropFromImage = React.useCallback((image: HTMLImageElement) => {\n const { width, height } = image;\n if (!width || !height) return;\n\n const nextCrop = initialCrop(width, height, defaultRatio, cropConfigRef.current);\n const pixelCrop = convertToPixelCrop(nextCrop, width, height);\n if (!pixelCrop.width || !pixelCrop.height) return;\n\n setCrop(nextCrop);\n setCompletedCrop(pixelCrop);\n\n const canvas = canvasRef.current;\n if (canvas) {\n drawPreviewToCanvas(\n image,\n canvas,\n pixelCrop,\n scaleRef.current,\n rotateRef.current,\n circularCrop,\n );\n }\n }, [circularCrop, defaultRatio]);\n\n React.useEffect(() => {\n setActiveBlobUrl(blobUrl);\n }, [blobUrl]);\n\n React.useLayoutEffect(() => {\n if (!activeBlobUrl) {\n setCrop({ ...defaultCrop(), ...cropConfigRef.current });\n setCompletedCrop(undefined);\n setScale(1);\n setRotate(0);\n return;\n }\n\n setScale(1);\n setRotate(0);\n\n const tryApply = () => {\n const image = imageRef.current;\n if (image?.complete && image.width > 0 && image.height > 0) {\n applyCropFromImage(image);\n return true;\n }\n return false;\n };\n\n if (tryApply()) return;\n\n const frame = requestAnimationFrame(() => {\n tryApply();\n });\n return () => cancelAnimationFrame(frame);\n }, [activeBlobUrl, applyCropFromImage]);\n\n React.useEffect(() => {\n if (!completedCrop || !imageRef.current || !canvasRef.current) return;\n drawPreviewToCanvas(\n imageRef.current,\n canvasRef.current,\n completedCrop,\n scale,\n rotate,\n circularCrop,\n );\n }, [completedCrop, scale, rotate, circularCrop]);\n\n const onImageLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n applyCropFromImage(e.currentTarget);\n };\n\n const handleCompletedCrop = (nextCrop: PixelCrop) => {\n if (!nextCrop.width || !nextCrop.height) return;\n setCompletedCrop(nextCrop);\n };\n\n const handleSave = async () => {\n if (!completedCrop || !imageRef.current) return;\n\n const previewCanvas = document.createElement('canvas');\n drawPreviewToCanvas(\n imageRef.current,\n previewCanvas,\n completedCrop,\n scale,\n rotate,\n circularCrop,\n );\n\n const blob = await new Promise<Blob | null>((resolve) => {\n previewCanvas.toBlob((nextBlob) => resolve(nextBlob), 'image/png');\n });\n\n if (!blob) return;\n const resultUrl = URL.createObjectURL(blob);\n await onSave(resultUrl);\n };\n\n const handleClear = () => {\n setActiveBlobUrl('');\n setImgNull();\n imageRef.current = null;\n const canvas = canvasRef.current;\n if (canvas) {\n const context = canvas.getContext('2d');\n if (context) {\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n }\n setCrop({ ...defaultCrop(), ...cropConfigRef.current });\n setScale(1);\n setRotate(0);\n setCompletedCrop(undefined);\n };\n\n const handleResetTransforms = () => {\n setScale(1);\n setRotate(0);\n };\n\n return {\n imageRef,\n canvasRef,\n activeBlobUrl,\n crop,\n setCrop,\n completedCrop,\n setCompletedCrop: handleCompletedCrop,\n scale,\n setScale,\n rotate,\n setRotate,\n onImageLoad,\n handleSave,\n handleClear,\n handleResetTransforms,\n };\n}\n"],"mappings":"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","names":["jsx","default","jsx","default","jsx","jsxs","default","jsx","jsxs","default","jsx","default","React","jsx","jsxs"]}
@@ -0,0 +1,161 @@
1
+ // src/components/elemental/Box/src/BorderBox/BorderBox.tsx
2
+ import { forwardRef } from "react";
3
+ import Box from "@mui/material/Box";
4
+
5
+ // src/_utils/_func/sx.ts
6
+ function flattenSx(part) {
7
+ if (part == null || typeof part === "boolean") {
8
+ return [];
9
+ }
10
+ if (Array.isArray(part)) {
11
+ return part.flatMap(flattenSx);
12
+ }
13
+ if (typeof part === "function" || typeof part === "object") {
14
+ return [part];
15
+ }
16
+ return [];
17
+ }
18
+ function mergeSx(...parts) {
19
+ const list = parts.flatMap(flattenSx);
20
+ if (list.length === 0) {
21
+ return void 0;
22
+ }
23
+ if (list.length === 1) {
24
+ return list[0];
25
+ }
26
+ return list;
27
+ }
28
+
29
+ // src/components/elemental/Box/src/BorderBox/BorderBox.tsx
30
+ import { jsx, jsxs } from "react/jsx-runtime";
31
+ var spanPx = 5;
32
+ var fieldsetPx = 4;
33
+ var BorderBox = forwardRef(({
34
+ title,
35
+ children,
36
+ pyPx = 8,
37
+ pxPx = 12,
38
+ error = false,
39
+ sx,
40
+ ...rest
41
+ }, ref) => {
42
+ return /* @__PURE__ */ jsx(
43
+ Box,
44
+ {
45
+ component: "div",
46
+ ref,
47
+ style: {
48
+ "--border-radius": "var(--mui-shape-borderRadius)",
49
+ "--py": `${pyPx}px`,
50
+ "--px": `${pxPx}px`,
51
+ "--span-px": `${spanPx}px`,
52
+ "--fieldset-px": `${fieldsetPx}px`,
53
+ "--border-color-local": error ? "var(--mui-palette-error-main)" : "var(--mui-palette-border-1)",
54
+ "--color-content-local": error ? "var(--mui-palette-error-main)" : "var(--mui-palette-text-primary)",
55
+ "--color-local": error ? "var(--mui-palette-error-main)" : "var(--mui-palette-text-grey-1)",
56
+ "--hover-border-color-local": error ? "var(--mui-palette-error-dark)" : "var(--mui-palette-border-hover-1)",
57
+ minWidth: 0
58
+ },
59
+ sx: mergeSx(
60
+ {
61
+ // inputbase-root
62
+ display: "inline-flex",
63
+ flexDirection: "column",
64
+ position: "relative",
65
+ minWidth: 0,
66
+ padding: 0,
67
+ paddingTop: `var(--py)`,
68
+ paddingBottom: `var(--py)`,
69
+ // avoid title overlap
70
+ margin: 0,
71
+ border: 0,
72
+ verticalAlign: "top",
73
+ cursor: "auto",
74
+ "&:hover>div>fieldset": {
75
+ borderColor: "var(--hover-border-color-local)"
76
+ }
77
+ },
78
+ sx
79
+ ),
80
+ ...rest,
81
+ children: /* @__PURE__ */ jsxs(Box, { sx: {
82
+ // input
83
+ letterSpacing: "0.00938em",
84
+ boxSizing: "border-box",
85
+ position: "relative",
86
+ alignItems: "center",
87
+ display: "block",
88
+ borderRadius: "var(--border-radius)",
89
+ width: "100%"
90
+ }, children: [
91
+ /* @__PURE__ */ jsx(Box, { sx: {
92
+ paddingLeft: `var(--px)`,
93
+ paddingRight: `var(--px)`,
94
+ paddingTop: `var(--py)`,
95
+ paddingBottom: `var(--py)`,
96
+ fontWeight: 400,
97
+ fontSize: "1rem",
98
+ lineHeight: "1.4375em",
99
+ width: "-webkit-fill-available",
100
+ minHeight: "1rem",
101
+ color: "var(--color-content-local)"
102
+ }, children }),
103
+ /* @__PURE__ */ jsx(Box, { component: "fieldset", sx: {
104
+ textAlign: "left",
105
+ position: "absolute",
106
+ bottom: 0,
107
+ right: 0,
108
+ top: `calc(var(--py)*-1)`,
109
+ left: 0,
110
+ paddingLeft: "var(--fieldset-px)",
111
+ paddingRight: "var(--fieldset-px)",
112
+ margin: 0,
113
+ pointerEvents: "none",
114
+ borderRadius: "inherit",
115
+ border: "1px solid",
116
+ borderColor: "var(--border-color-local)",
117
+ overflow: "hidden",
118
+ minWidth: "0%"
119
+ }, children: /* @__PURE__ */ jsx(Box, { component: "legend", sx: {
120
+ float: "unset",
121
+ width: "auto",
122
+ overflow: "hidden",
123
+ display: "block",
124
+ padding: 0,
125
+ height: "1em",
126
+ visibility: "hidden",
127
+ maxWidth: "100%",
128
+ whiteSpace: "nowrap"
129
+ }, children: title && /* @__PURE__ */ jsx(Box, { component: "span", sx: {
130
+ paddingLeft: "var(--span-px)",
131
+ paddingRight: "var(--span-px)",
132
+ visibility: "visible",
133
+ fontSize: "0.7em",
134
+ lineHeight: "1.4375em",
135
+ letterSpacing: "0.00938em",
136
+ fontWeight: 400,
137
+ display: "block",
138
+ height: "100%",
139
+ fontFamily: "inherit",
140
+ textOverflow: "ellipsis",
141
+ color: "var(--color-local)"
142
+ }, children: title }) }) })
143
+ ] })
144
+ }
145
+ );
146
+ });
147
+ var BorderBox_default = BorderBox;
148
+
149
+ // src/components/elemental/Box/src/index.ts
150
+ import { default as default2 } from "@mui/material/Box";
151
+ import { default as default3 } from "@mui/material/Stack";
152
+ import { default as default4 } from "@mui/material/Grid";
153
+
154
+ export {
155
+ mergeSx,
156
+ BorderBox_default,
157
+ default2 as default,
158
+ default3 as default2,
159
+ default4 as default3
160
+ };
161
+ //# sourceMappingURL=chunk-S6EZVRZC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/elemental/Box/src/BorderBox/BorderBox.tsx","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts"],"sourcesContent":["import React, { forwardRef, } from 'react'\nimport Box, { type BoxProps} from '@mui/material/Box'\nimport { mergeSx } from '@/_utils/_func'\n\nconst spanPx = 5\nconst fieldsetPx = 4\n\ntype Props = {\n\tchildren: React.ReactNode, \n\ttitle?: string,\n\terror?: boolean,\n\tpyPx?: number,\n\tpxPx?: number,\n} & BoxProps\n/**\n * A Mui TextField like Box with a title and a border.\n * \n * Props options:\n * \n * @property {ReactNode} children - Whatever go inside the box.\n * @property {string} title - The left top title.\n * @property {string} error - change border-color to red.\n * @property {number} pyPx - padding top and bottom.\n * @property {number} pxPx - padding left and right.\n * @property {Record<string, unknown>} ...rest - Box props to the outer box.\n * @example\n * ### Example\n * ```js\n * const B = () => (\n * <BorderBox title=\"title\" error={false} ref={ref}>\n * something inside\n * </BorderBox>)\n * ```\n */\nconst BorderBox = forwardRef<HTMLDivElement,Props>(({ \n\ttitle, children,pyPx=8,pxPx=12, error=false,\n sx,\n\t...rest\n},ref) => {\n\t\n\treturn (\n\t\t<Box // control-root\n\t\tcomponent=\"div\"\n\t\tref={ref}\n\t\tstyle={{\n\t\t\t\"--border-radius\": \"var(--mui-shape-borderRadius)\",\n\t\t\t\"--py\": `${pyPx}px`,\n\t\t\t\"--px\": `${pxPx}px`,\n\t\t\t\"--span-px\": `${spanPx}px`,\n\t\t\t\"--fieldset-px\": `${fieldsetPx}px`, \n\t\t\t\"--border-color-local\": error ? \"var(--mui-palette-error-main)\" : \"var(--mui-palette-border-1)\",\n\t\t\t\"--color-content-local\": error ? \"var(--mui-palette-error-main)\" : \"var(--mui-palette-text-primary)\",\n\t\t\t\"--color-local\": error ? \"var(--mui-palette-error-main)\" : \"var(--mui-palette-text-grey-1)\",\n\t\t\t\"--hover-border-color-local\": error ? \"var(--mui-palette-error-dark)\" : \"var(--mui-palette-border-hover-1)\",\n\t\t\tminWidth: 0,\n\t\t}}\n\t\tsx={mergeSx(\n\t\t\t{ // inputbase-root\n\t\t\tdisplay: 'inline-flex',\n\t\t\tflexDirection: 'column',\n\t\t\tposition: 'relative',\n\t\t\tminWidth: 0,\n\t\t\tpadding: 0, \n\t\t\tpaddingTop:`var(--py)`, paddingBottom:`var(--py)`, // avoid title overlap\n\t\t\tmargin: 0,\n\t\t\tborder: 0,\n\t\t\tverticalAlign: 'top',\n\t\t\tcursor: 'auto',\n\t\t\t\"&:hover>div>fieldset\": {\n\t\t\t\tborderColor:\"var(--hover-border-color-local)\",\n\t\t\t},\n\t\t},\n\t\t\tsx,\n\t\t)}\n\t\t{...rest}\n\t\t>\n\t\t\t<Box sx={{ // input\n\t\t\t\tletterSpacing: '0.00938em',\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tposition: 'relative',\n\t\t\t\talignItems: 'center',\n\t\t\t\tdisplay: 'block',\n\t\t\t\tborderRadius:'var(--border-radius)',\n\t\t\t\twidth:\"100%\",\n\t\t\t}}>\n\t\t\t\t<Box sx={{\n\t\t\t\t\tpaddingLeft:`var(--px)`, paddingRight:`var(--px)`,\n\t\t\t\t\tpaddingTop:`var(--py)`, paddingBottom:`var(--py)`,\n\t\t\t\t\tfontWeight: 400,\n\t\t\t\t\tfontSize: '1rem',\n\t\t\t\t\tlineHeight: '1.4375em',\n\t\t\t\t\twidth:\"-webkit-fill-available\",\n\t\t\t\t\tminHeight:\"1rem\",\n\t\t\t\t\tcolor:\"var(--color-content-local)\",\n\t\t\t\t}} >{children}</Box>\n\t\t\t\t<Box component=\"fieldset\" sx={{\n\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttop: `calc(var(--py)*-1)`,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tpaddingLeft:\"var(--fieldset-px)\", paddingRight:\"var(--fieldset-px)\",\n\t\t\t\t\tmargin:0,\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\tborderRadius: 'inherit',\n\t\t\t\t\tborder:\"1px solid\",\n\t\t\t\t\tborderColor:\"var(--border-color-local)\",\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tminWidth: '0%',\n\t\t\t\t\t\n\t\t\t\t}}>\n\t\t\t\t\t<Box component=\"legend\" sx={{\n\t\t\t\t\t\tfloat: 'unset',\n\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\theight: \"1em\",\n\t\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t\tmaxWidth: '100%',\n\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t}}>\n\t\t\t\t\t\t{title && <Box component=\"span\" sx={{\n\t\t\t\t\t\t\tpaddingLeft:\"var(--span-px)\", paddingRight:\"var(--span-px)\",\n\t\t\t\t\t\t\tvisibility: 'visible',\n\t\t\t\t\t\t\tfontSize: '0.7em',\n\t\t\t\t\t\t\tlineHeight: '1.4375em',\n\t\t\t\t\t\t\tletterSpacing: '0.00938em',\n\t\t\t\t\t\t\tfontWeight: 400,\n\t\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\tfontFamily: 'inherit',\n\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\tcolor:\"var(--color-local)\",\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Box>}\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t</Box>\n\t)\n})\n\nexport default BorderBox\n\n/*\nshift = px-5+8\n*/","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\n","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n"],"mappings":"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","names":["default"]}
@@ -0,0 +1,396 @@
1
+ import {
2
+ OptionRenderer,
3
+ PickerField,
4
+ Provider,
5
+ gitHubPickerRootSx,
6
+ useStateContext
7
+ } from "./chunk-OJV6V7YZ.mjs";
8
+ import {
9
+ Badge
10
+ } from "./chunk-56TI2ZBT.mjs";
11
+ import {
12
+ default as default4
13
+ } from "./chunk-MDAUF7IL.mjs";
14
+ import {
15
+ IconButton_default
16
+ } from "./chunk-JIU5GVM7.mjs";
17
+ import {
18
+ default109 as default6,
19
+ default98 as default5
20
+ } from "./chunk-ZVFYOXDE.mjs";
21
+ import {
22
+ default as default3
23
+ } from "./chunk-4RPFRNXG.mjs";
24
+ import {
25
+ default as default2
26
+ } from "./chunk-S6EZVRZC.mjs";
27
+
28
+ // src/components/elemental/Autocomplete/src/GitHubPicker/GitHubPicker.tsx
29
+ import { useState, useMemo, useId, Suspense, lazy } from "react";
30
+
31
+ // src/_utils/_func/array.ts
32
+ function sortByCondi(array, key, condition, reverse = false) {
33
+ const anchor = reverse ? -1 : 1;
34
+ const sorted = [...array];
35
+ sorted.sort((a, b) => {
36
+ if (condition(a[key], b[key])) {
37
+ return -anchor;
38
+ } else {
39
+ return anchor;
40
+ }
41
+ });
42
+ return sorted;
43
+ }
44
+ function sortByKey(array, key, reverse = false) {
45
+ const condi = (a, b) => {
46
+ return a < b;
47
+ };
48
+ const sorted = sortByCondi(array, key, condi, reverse);
49
+ return sorted;
50
+ }
51
+
52
+ // src/components/elemental/Autocomplete/src/GitHubPicker/GitHubPicker.tsx
53
+ import { jsx, jsxs } from "react/jsx-runtime";
54
+ var PopperMenu = lazy(() => import("./PopperMenu-LJ36RPBW.mjs"));
55
+ var PICKER_ACCENT = {
56
+ primary: "var(--mui-palette-primary-emphasis)",
57
+ secondary: "var(--mui-palette-secondary-main)",
58
+ error: "var(--mui-palette-error-main)",
59
+ info: "var(--mui-palette-info-main)",
60
+ success: "var(--mui-palette-success-main)",
61
+ warning: "var(--mui-palette-warning-main)",
62
+ system: "var(--mui-palette-system-main)",
63
+ insight: "var(--mui-palette-insight-main)"
64
+ };
65
+ function GitHubPicker({
66
+ multiple = true,
67
+ ...p
68
+ }) {
69
+ const _selectedIdProps = p.selectedIdProps[0];
70
+ const [anchorEl, setAnchorEl] = useState(null);
71
+ return /* @__PURE__ */ jsx(Provider, { selectedIds: _selectedIdProps, options: p.options, isMultiple: multiple, open: Boolean(anchorEl), children: /* @__PURE__ */ jsx(Picker, { ...p, multiple, anchorEl, setAnchorEl }) });
72
+ }
73
+ function Picker(p) {
74
+ const {
75
+ selectedIdProps,
76
+ options = [],
77
+ // options for rendering and autocomplete
78
+ additionSort,
79
+ title,
80
+ subtitle,
81
+ titleIcon,
82
+ onChange,
83
+ onDelete,
84
+ error = false,
85
+ multiple,
86
+ // default value set in Parent
87
+ disabled = false,
88
+ useGroup = true,
89
+ isAddOptionEnabled = false,
90
+ addOptionHandler,
91
+ isPopperFreezed,
92
+ variant = "field",
93
+ color = "secondary",
94
+ anchorEl,
95
+ setAnchorEl
96
+ } = p;
97
+ const tone = error ? "error" : color;
98
+ const accent = PICKER_ACCENT[tone];
99
+ const pickerId = useId();
100
+ const menuId = `${pickerId}-menu`;
101
+ const listboxId = `${pickerId}-listbox`;
102
+ const [selectedIds, sIds] = selectedIdProps;
103
+ const allMinimalOptions = useMemo(() => getMinimalOptions(options, additionSort), [options, additionSort]);
104
+ const selectedOpt = allMinimalOptions.filter((itm) => selectedIds.includes(itm.id));
105
+ const { state, select } = useStateContext();
106
+ const open = Boolean(anchorEl);
107
+ const closeHandler = (passedState) => {
108
+ const newValue = passedState === void 0 ? state.minimal : passedState.minimal;
109
+ const nextIds = idsFromSelection(Boolean(multiple), newValue);
110
+ sIds(nextIds);
111
+ onChange(nextIds);
112
+ if (anchorEl) {
113
+ anchorEl.focus();
114
+ }
115
+ setAnchorEl(null);
116
+ };
117
+ const removeItemHandler = (id) => () => {
118
+ onDelete(id);
119
+ sIds((old) => old.filter((itm) => itm !== id));
120
+ if (multiple) {
121
+ const current = Array.isArray(state.minimal) ? state.minimal : [];
122
+ select(current.filter((opt) => opt.id !== id));
123
+ } else if (!Array.isArray(state.minimal) && state.minimal?.id === id) {
124
+ select(null);
125
+ } else if (Array.isArray(state.minimal)) {
126
+ select(state.minimal.filter((opt) => opt.id !== id));
127
+ }
128
+ };
129
+ const togglePicker = (element) => {
130
+ if (disabled) return;
131
+ if (open) {
132
+ if (isPopperFreezed) return;
133
+ closeHandler();
134
+ return;
135
+ }
136
+ setAnchorEl(element);
137
+ };
138
+ return /* @__PURE__ */ jsx(
139
+ default4,
140
+ {
141
+ onClickAway: () => {
142
+ if (!open || isPopperFreezed) return;
143
+ closeHandler();
144
+ },
145
+ children: /* @__PURE__ */ jsxs(default2, { children: [
146
+ variant === "icon" ? /* @__PURE__ */ jsx(
147
+ IconTrigger,
148
+ {
149
+ id: pickerId,
150
+ menuId,
151
+ open,
152
+ color: tone,
153
+ disabled,
154
+ title,
155
+ titleIcon,
156
+ selectedCount: selectedOpt.length,
157
+ selectedLabels: selectedOpt.map((opt) => opt.label),
158
+ onToggle: togglePicker
159
+ }
160
+ ) : /* @__PURE__ */ jsx(
161
+ FieldTrigger,
162
+ {
163
+ id: pickerId,
164
+ menuId,
165
+ open,
166
+ error,
167
+ accent,
168
+ disabled,
169
+ title,
170
+ titleIcon,
171
+ selectedOpt,
172
+ options,
173
+ removeItemHandler,
174
+ multiple: Boolean(multiple),
175
+ onToggle: togglePicker
176
+ }
177
+ ),
178
+ anchorEl ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
179
+ PopperMenu,
180
+ {
181
+ id: menuId,
182
+ listboxId,
183
+ anchorEl,
184
+ allMinimalOptions,
185
+ options,
186
+ closeHandler,
187
+ multiple,
188
+ disabled,
189
+ title: subtitle ?? title,
190
+ useGroup,
191
+ isAddOptionEnabled,
192
+ addOptionHandler,
193
+ isPopperFreezed
194
+ }
195
+ ) }) : null
196
+ ] })
197
+ }
198
+ );
199
+ }
200
+ function idsFromSelection(multiple, newValue) {
201
+ if (multiple) {
202
+ const list = Array.isArray(newValue) ? newValue : [];
203
+ return sortByKey(list, "filterKey").map((item) => item.id);
204
+ }
205
+ const single = Array.isArray(newValue) ? newValue[0] : newValue;
206
+ return single?.id ? [single.id] : [];
207
+ }
208
+ function getMinimalOptions(options, additionSort) {
209
+ const minimal = options.map((itm) => itm.minimal());
210
+ const sortedByFilterKey = sortByKey(minimal, "filterKey");
211
+ const afterAdditionSort = additionSort ? sortedByFilterKey.sort(additionSort) : sortedByFilterKey;
212
+ const sortedByGroup = sortByKey(afterAdditionSort, "group");
213
+ const sortedByDisabled = sortByKey(sortedByGroup, "disabled");
214
+ return sortedByDisabled;
215
+ }
216
+ function FieldTrigger(p) {
217
+ const { id, menuId, open, error, accent, disabled, title, titleIcon, selectedOpt, options, removeItemHandler, multiple, onToggle } = p;
218
+ return /* @__PURE__ */ jsxs(
219
+ PickerField,
220
+ {
221
+ id,
222
+ open,
223
+ error,
224
+ disabled,
225
+ role: "combobox",
226
+ tabIndex: disabled ? -1 : 0,
227
+ "aria-expanded": open,
228
+ "aria-haspopup": "listbox",
229
+ "aria-controls": open ? menuId : void 0,
230
+ "aria-disabled": disabled,
231
+ style: {
232
+ "--picker-border-emphasis": accent,
233
+ "--picker-check": accent,
234
+ "--picker-focus-ring": `color-mix(in lab, ${accent}, transparent 82%)`
235
+ },
236
+ onClick: (event) => onToggle(event.currentTarget),
237
+ onKeyDown: (event) => {
238
+ if (event.key === "Enter" || event.key === " ") {
239
+ event.preventDefault();
240
+ onToggle(event.currentTarget);
241
+ }
242
+ },
243
+ children: [
244
+ /* @__PURE__ */ jsxs(
245
+ default2,
246
+ {
247
+ sx: {
248
+ display: "flex",
249
+ alignItems: "center",
250
+ gap: 1,
251
+ minHeight: 20
252
+ },
253
+ children: [
254
+ titleIcon ? /* @__PURE__ */ jsx(
255
+ default2,
256
+ {
257
+ sx: {
258
+ display: "inline-flex",
259
+ color: "var(--picker-check)",
260
+ "& svg": { fontSize: "1.05rem" }
261
+ },
262
+ children: titleIcon
263
+ }
264
+ ) : null,
265
+ title ? /* @__PURE__ */ jsx(
266
+ default3,
267
+ {
268
+ component: "span",
269
+ sx: {
270
+ flex: 1,
271
+ minWidth: 0,
272
+ fontSize: "0.68rem",
273
+ fontWeight: 700,
274
+ letterSpacing: "0.08em",
275
+ textTransform: "uppercase",
276
+ color: "var(--picker-text-secondary)",
277
+ overflow: "hidden",
278
+ textOverflow: "ellipsis",
279
+ whiteSpace: "nowrap",
280
+ m: 0
281
+ },
282
+ children: title
283
+ }
284
+ ) : /* @__PURE__ */ jsx(default2, { sx: { flex: 1 } }),
285
+ /* @__PURE__ */ jsx(
286
+ default6,
287
+ {
288
+ sx: {
289
+ fontSize: 20,
290
+ color: "var(--picker-text-secondary)",
291
+ flexShrink: 0,
292
+ transform: open ? "rotate(180deg)" : "rotate(0deg)",
293
+ transition: "transform 180ms ease"
294
+ }
295
+ }
296
+ )
297
+ ]
298
+ }
299
+ ),
300
+ /* @__PURE__ */ jsx(
301
+ DisplaySelected,
302
+ {
303
+ selectedOpt,
304
+ options,
305
+ removeItemHandler,
306
+ disabled,
307
+ multiple
308
+ }
309
+ )
310
+ ]
311
+ }
312
+ );
313
+ }
314
+ function IconTrigger(p) {
315
+ const { id, menuId, open, color, disabled, title, titleIcon, selectedCount, selectedLabels, onToggle } = p;
316
+ const tooltip = selectedLabels.length > 0 ? selectedLabels.join(", ") : title ?? "Select";
317
+ return /* @__PURE__ */ jsx(
318
+ Badge,
319
+ {
320
+ badgeContent: selectedCount,
321
+ invisible: selectedCount === 0,
322
+ color,
323
+ style_variant: "filled",
324
+ overlap: "circular",
325
+ sx: gitHubPickerRootSx,
326
+ max: 99,
327
+ children: /* @__PURE__ */ jsx(default2, { sx: { display: "inline-flex" }, children: /* @__PURE__ */ jsx(
328
+ IconButton_default,
329
+ {
330
+ id,
331
+ title: open ? "" : tooltip,
332
+ disabled,
333
+ selected: open,
334
+ color,
335
+ "aria-label": title ?? "Select",
336
+ "aria-expanded": open,
337
+ "aria-haspopup": "listbox",
338
+ "aria-controls": open ? menuId : void 0,
339
+ onClick: (event) => onToggle(event.currentTarget),
340
+ children: titleIcon ?? /* @__PURE__ */ jsx(default5, {})
341
+ }
342
+ ) })
343
+ }
344
+ );
345
+ }
346
+ function DisplaySelected(p) {
347
+ const { selectedOpt, options, removeItemHandler, disabled, multiple } = p;
348
+ const selectedIds = selectedOpt.map((itm) => itm.id);
349
+ const displaySelectedOptions = options.filter((itm) => selectedIds.includes(itm.id));
350
+ if (displaySelectedOptions.length === 0) {
351
+ return /* @__PURE__ */ jsx(
352
+ default3,
353
+ {
354
+ sx: {
355
+ fontSize: "0.9rem",
356
+ fontWeight: 500,
357
+ color: "var(--picker-text-secondary)",
358
+ opacity: 0.78,
359
+ lineHeight: 1.4,
360
+ m: 0
361
+ },
362
+ children: multiple ? "Select options" : "Select an option"
363
+ }
364
+ );
365
+ }
366
+ return /* @__PURE__ */ jsx(default2, { sx: {
367
+ overflow: "hidden",
368
+ display: "flex",
369
+ flexWrap: "wrap",
370
+ gap: "6px"
371
+ }, children: displaySelectedOptions.map((o) => {
372
+ return /* @__PURE__ */ jsx(default2, { sx: {
373
+ overflow: "hidden",
374
+ maxWidth: "100%"
375
+ }, children: /* @__PURE__ */ jsx(
376
+ OptionRenderer,
377
+ {
378
+ option: o,
379
+ selected: true,
380
+ isIconClickable: true,
381
+ removeItemHandler: removeItemHandler(o?.id),
382
+ disabled,
383
+ slotProps: {
384
+ DM: {
385
+ isShowDescription: false
386
+ }
387
+ }
388
+ }
389
+ ) }, o.id);
390
+ }) });
391
+ }
392
+
393
+ export {
394
+ GitHubPicker
395
+ };
396
+ //# sourceMappingURL=chunk-SGCUDWO3.mjs.map