cognova 0.2.11 → 0.2.13

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 (290) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{DwY7rCd_.js → -HePz7lp.js} +2 -2
  3. package/.output/public/_nuxt/{CY-cjAwJ.js → 4ALIM-zZ.js} +1 -1
  4. package/.output/public/_nuxt/{DXdwpJ-I.js → 5sUbkh_6.js} +2 -2
  5. package/.output/public/_nuxt/{_cy8R3nk.js → 6bB8Ev7a.js} +1 -1
  6. package/.output/public/_nuxt/{1zUTf4AP.js → 7rT1DCe2.js} +1 -1
  7. package/.output/public/_nuxt/{vIOxcXKR.js → 9O1MXkck.js} +1 -1
  8. package/.output/public/_nuxt/{7oCGSglN.js → 9kAKMaPC.js} +1 -1
  9. package/.output/public/_nuxt/{CVqlefTY.js → B-DMcEU9.js} +1 -1
  10. package/.output/public/_nuxt/{BS2ZNXI1.js → B0nzD8Sk.js} +1 -1
  11. package/.output/public/_nuxt/B2PqR2Vu.js +1 -0
  12. package/.output/public/_nuxt/{Db4KMnt8.js → B2wI_pYg.js} +1 -1
  13. package/.output/public/_nuxt/{zq-a1TeT.js → B5FuOh7E.js} +1 -1
  14. package/.output/public/_nuxt/B6om4MW2.js +1 -0
  15. package/.output/public/_nuxt/{Dya5oK8u.js → B7ikW4eF.js} +1 -1
  16. package/.output/public/_nuxt/{BYHCP8x7.js → B8DFEjxA.js} +1 -1
  17. package/.output/public/_nuxt/{6boMs_nF.js → B9kWNcU7.js} +1 -1
  18. package/.output/public/_nuxt/BAZ8sewA.js +1 -0
  19. package/.output/public/_nuxt/{BXuWCWsJ.js → BCPwL4ma.js} +1 -1
  20. package/.output/public/_nuxt/{DY3uK7wM.js → BCrlmHh_.js} +1 -1
  21. package/.output/public/_nuxt/{BR8bKz8h.js → BD-AFJWW.js} +1 -1
  22. package/.output/public/_nuxt/{BtHQ1T0f.js → BGcQMReV.js} +1 -1
  23. package/.output/public/_nuxt/{BDyn4ApB.js → BL1mkqgd.js} +3 -3
  24. package/.output/public/_nuxt/BNJJSRKh.js +1 -0
  25. package/.output/public/_nuxt/{D8lwrAYS.js → BNeeERBt.js} +1 -1
  26. package/.output/public/_nuxt/{CVFwOzbl.js → BSJb5amZ.js} +1 -1
  27. package/.output/public/_nuxt/{CEnSeCqn.js → BSsaE9Db.js} +1 -1
  28. package/.output/public/_nuxt/{DzA58_Lm.js → BVO3XpHT.js} +1 -1
  29. package/.output/public/_nuxt/{CuxrHsu-.js → BWuL2CzO.js} +1 -1
  30. package/.output/public/_nuxt/{0yk-pS3R.js → B_9zJTqe.js} +1 -1
  31. package/.output/public/_nuxt/{DcJbYLTp.js → B_Lr1vlV.js} +1 -1
  32. package/.output/public/_nuxt/{CZoEPC_Q.js → Bc8bTnkd.js} +3 -3
  33. package/.output/public/_nuxt/{BKXg-alD.js → BghuwIGa.js} +1 -1
  34. package/.output/public/_nuxt/{PP_4ebzl.js → BjsKx597.js} +1 -1
  35. package/.output/public/_nuxt/{DuvzM-P1.js → Bl0qBhCG.js} +1 -1
  36. package/.output/public/_nuxt/{B_wilgcd.js → Bl43dkDq.js} +1 -1
  37. package/.output/public/_nuxt/{JbHa4oXq.js → BnMTFF5R.js} +1 -1
  38. package/.output/public/_nuxt/{CY-QVcA5.js → BrX-PnSK.js} +2 -2
  39. package/.output/public/_nuxt/{DYbZBZet.js → BtV7oNn3.js} +1 -1
  40. package/.output/public/_nuxt/{apYB9dr5.js → BvFYnRMR.js} +1 -1
  41. package/.output/public/_nuxt/{x6FRJ5ac.js → BvTUBUNN.js} +1 -1
  42. package/.output/public/_nuxt/{wO6z2ugJ.js → ByLsRRoQ.js} +1 -1
  43. package/.output/public/_nuxt/{DC4idAGt.js → C1LcEMwB.js} +1 -1
  44. package/.output/public/_nuxt/{YX8avsvq.js → C2IiXp9N.js} +2 -2
  45. package/.output/public/_nuxt/{fbyIeNkc.js → C6OSRpRd.js} +1 -1
  46. package/.output/public/_nuxt/{3jQMk_5H.js → C796kFT9.js} +1 -1
  47. package/.output/public/_nuxt/{DEd2xVbS.js → C7m9zGMG.js} +1 -1
  48. package/.output/public/_nuxt/C8AtdrMH.js +1 -0
  49. package/.output/public/_nuxt/CAWbHTgy.js +1 -0
  50. package/.output/public/_nuxt/{ixlNW2So.js → CFmvNggn.js} +1 -1
  51. package/.output/public/_nuxt/{gTrVszwd.js → CGplHfmR.js} +1 -1
  52. package/.output/public/_nuxt/CJPrV25_.js +1 -0
  53. package/.output/public/_nuxt/{U1MWjQMi.js → CKKEWapF.js} +1 -1
  54. package/.output/public/_nuxt/{C6qKcgOY.js → CLkkdThv.js} +22 -22
  55. package/.output/public/_nuxt/CNjv28J2.js +1 -0
  56. package/.output/public/_nuxt/{BLnYhy_t.js → CRRw0Thu.js} +1 -1
  57. package/.output/public/_nuxt/{10_wwHSz.js → CT8s4rqa.js} +1 -1
  58. package/.output/public/_nuxt/{C27WoGNZ.js → CZSOrxUy.js} +1 -1
  59. package/.output/public/_nuxt/{DNP5E1bC.js → CaNEL9JC.js} +5 -5
  60. package/.output/public/_nuxt/{DhuOKJda.js → CbTLg9oX.js} +1 -1
  61. package/.output/public/_nuxt/CfCXpVn5.js +1 -0
  62. package/.output/public/_nuxt/{C9WIgRRL.js → ChmNlvWR.js} +1 -1
  63. package/.output/public/_nuxt/{t8aDAkZ5.js → CiNxIhaq.js} +1 -1
  64. package/.output/public/_nuxt/{E3rXPwU8.js → Ck0QYdxe.js} +1 -1
  65. package/.output/public/_nuxt/{DUVzIl3o.js → Ckb0pu4-.js} +1 -1
  66. package/.output/public/_nuxt/{vScW1Zgm.js → CkwPRs1D.js} +1 -1
  67. package/.output/public/_nuxt/CmEJg8C6.js +2 -0
  68. package/.output/public/_nuxt/{CTCcEJU3.js → CmL_vMJD.js} +1 -1
  69. package/.output/public/_nuxt/{Bciqk4dX.js → Cq8zPxkT.js} +1 -1
  70. package/.output/public/_nuxt/{D8M722pn.js → CseYuM6E.js} +1 -1
  71. package/.output/public/_nuxt/{D0ifH682.js → CxRnB4NC.js} +1 -1
  72. package/.output/public/_nuxt/{CVdCqaby.js → D0zMyG8n.js} +1 -1
  73. package/.output/public/_nuxt/{DhI5cA_n.js → D12qPplu.js} +1 -1
  74. package/.output/public/_nuxt/{Beom-INj.js → D1XYB283.js} +1 -1
  75. package/.output/public/_nuxt/{BUghTae1.js → D2NxqyzW.js} +1 -1
  76. package/.output/public/_nuxt/{CZRnNmU8.js → D5xyrvFu.js} +1 -1
  77. package/.output/public/_nuxt/{2dNDtTiv.js → D6tVZcRs.js} +3 -3
  78. package/.output/public/_nuxt/{EgKnQnf-.js → D7N3EZ-I.js} +1 -1
  79. package/.output/public/_nuxt/{C5R5QaCA.js → D8iBB0Py.js} +1 -1
  80. package/.output/public/_nuxt/{XCjS70z4.js → D8oIH8m1.js} +1 -1
  81. package/.output/public/_nuxt/{BA_pRWwX.js → DB2zZev7.js} +1 -1
  82. package/.output/public/_nuxt/{Cl-LOSDV.js → DBrOAqkm.js} +1 -1
  83. package/.output/public/_nuxt/{DO9SFIh1.js → DDXDFweK.js} +1 -1
  84. package/.output/public/_nuxt/{B93pdGAW.js → DFZkCmLQ.js} +1 -1
  85. package/.output/public/_nuxt/{CLfF6dSn.js → DFpmIy6J.js} +1 -1
  86. package/.output/public/_nuxt/{BfcLZ_fC.js → DKZmgHNU.js} +1 -1
  87. package/.output/public/_nuxt/{CPutXj8l.js → DNcOC5zj.js} +1 -1
  88. package/.output/public/_nuxt/{BHtY0l0l.js → DQhm-UPG.js} +1 -1
  89. package/.output/public/_nuxt/{C2FxZbO_.js → DR8tGJhL.js} +1 -1
  90. package/.output/public/_nuxt/{D4UJwDQJ.js → DVAEVTjy.js} +1 -1
  91. package/.output/public/_nuxt/{2nOqGUPr.js → DVqrPkCJ.js} +1 -1
  92. package/.output/public/_nuxt/DWZ9ieYa.js +1 -0
  93. package/.output/public/_nuxt/{nnQqD5pb.js → DWj6VsZv.js} +1 -1
  94. package/.output/public/_nuxt/{C2vq6Te8.js → DXJ9PxCv.js} +1 -1
  95. package/.output/public/_nuxt/{CobqYwkp.js → D_ziPROx.js} +1 -1
  96. package/.output/public/_nuxt/{GtEM7xVU.js → Da2vwoYG.js} +1 -1
  97. package/.output/public/_nuxt/{Cc-2ziaZ.js → Ddz3HcBB.js} +1 -1
  98. package/.output/public/_nuxt/{Di-Nc75e.js → DgYei0bK.js} +1 -1
  99. package/.output/public/_nuxt/{DQh6I9z9.js → Di_3GV_R.js} +1 -1
  100. package/.output/public/_nuxt/{ByYh0uRg.js → Djog1f_e.js} +1 -1
  101. package/.output/public/_nuxt/{C4mwL7SE.js → Dkap2-Pj.js} +2 -2
  102. package/.output/public/_nuxt/{D5q8SnqE.js → DlJe_sHk.js} +1 -1
  103. package/.output/public/_nuxt/DlPOQpH_.js +1 -0
  104. package/.output/public/_nuxt/{DTGenhcA.js → DmYWMtVA.js} +1 -1
  105. package/.output/public/_nuxt/DmxKU7sH.js +1 -0
  106. package/.output/public/_nuxt/{DtjjnHnt.js → DowkFZ2V.js} +1 -1
  107. package/.output/public/_nuxt/{0NJ3PaRM.js → DsodHRrQ.js} +1 -1
  108. package/.output/public/_nuxt/{Bk6JUtIo.js → DuzpliIL.js} +1 -1
  109. package/.output/public/_nuxt/DvHS7_h2.js +1 -0
  110. package/.output/public/_nuxt/DwSY6_2U.js +1 -0
  111. package/.output/public/_nuxt/{Djs0Tlpa.js → DypJaSm-.js} +1 -1
  112. package/.output/public/_nuxt/{C71_a1IX.js → DzKaXH6P.js} +1 -1
  113. package/.output/public/_nuxt/{CBTkrk2M.js → FK-jSuOT.js} +1 -1
  114. package/.output/public/_nuxt/{ILEvizzp.js → Fc2JsQt4.js} +1 -1
  115. package/.output/public/_nuxt/{BIXrSYwR.js → IYCBGuRS.js} +1 -1
  116. package/.output/public/_nuxt/{JX1oqJI9.js → LRO7YHoH.js} +1 -1
  117. package/.output/public/_nuxt/{Kw0zy3FG.js → NrRzUJNY.js} +1 -1
  118. package/.output/public/_nuxt/{DJTCT0bl.js → OeVS0Rsb.js} +1 -1
  119. package/.output/public/_nuxt/{BmOtR1wX.js → OlF0QnKF.js} +1 -1
  120. package/.output/public/_nuxt/{DTAStixR.js → QuAoqY7t.js} +1 -1
  121. package/.output/public/_nuxt/{8q5NepGW.js → RlXHkmOd.js} +2 -2
  122. package/.output/public/_nuxt/{rfGRTJJW.js → TxMdabnL.js} +1 -1
  123. package/.output/public/_nuxt/{CZVzFlpI.js → WZnvL9Dh.js} +1 -1
  124. package/.output/public/_nuxt/ZvG7a1W3.js +1 -0
  125. package/.output/public/_nuxt/{N5XtbYVD.js → aPNZBVrG.js} +1 -1
  126. package/.output/public/_nuxt/builds/latest.json +1 -1
  127. package/.output/public/_nuxt/builds/meta/495aca73-bfa5-456e-b96a-f02e009c72d3.json +1 -0
  128. package/.output/public/_nuxt/entry.C_udkZt9.css +1 -0
  129. package/.output/public/_nuxt/{D_4LPm1U.js → evY81hM3.js} +1 -1
  130. package/.output/public/_nuxt/{DzGy77Vr.js → h_bXa-f2.js} +1 -1
  131. package/.output/public/_nuxt/{D9nmzBAw.js → i6QBzaEi.js} +1 -1
  132. package/.output/public/_nuxt/{BGgwYWjH.js → iTVKJ1kw.js} +1 -1
  133. package/.output/public/_nuxt/{Um1vPiAz.js → j92uR3uR.js} +1 -1
  134. package/.output/public/_nuxt/jdUkeAj_.js +1 -0
  135. package/.output/public/_nuxt/{BmVLxnDU.js → jeRvcMHU.js} +1 -1
  136. package/.output/public/_nuxt/{SrncdpaW.js → kuv0zpKq.js} +1 -1
  137. package/.output/public/_nuxt/{DfF81NlA.js → l3lKQs7b.js} +1 -1
  138. package/.output/public/_nuxt/{4K03TkGA.js → pdYvpiud.js} +3 -3
  139. package/.output/public/_nuxt/{C39dQ88F.js → qIgZ7OXa.js} +1 -1
  140. package/.output/public/_nuxt/{DS2wStH1.js → qcVwZv8e.js} +1 -1
  141. package/.output/public/_nuxt/{g5MjDvm5.js → ru8fqqWs.js} +1 -1
  142. package/.output/public/_nuxt/{CQqCBrXj.js → sBzyvWMJ.js} +1 -1
  143. package/.output/public/_nuxt/{D3AZaldL.js → sgmhgpCS.js} +1 -1
  144. package/.output/public/_nuxt/{ChcO9s3o.js → y2jv0da-.js} +1 -1
  145. package/.output/public/_nuxt/{Dn5a-guE.js → yyS4-kAX.js} +1 -1
  146. package/.output/public/_nuxt/zIoBLBHF.js +1 -0
  147. package/.output/public/_nuxt/zpazwPgx.js +1 -0
  148. package/.output/server/chunks/build/CodeIcon-CWD5HcV7.mjs +1 -1
  149. package/.output/server/chunks/build/DropdownMenu-BBrV9nXz.mjs +1 -1
  150. package/.output/server/chunks/build/EditorToolbar-DIfb5arC.mjs +1 -1
  151. package/.output/server/chunks/build/Img-CWLmvN1t.mjs +1 -1
  152. package/.output/server/chunks/build/MDC-Dx0YPDhe.mjs +1 -1
  153. package/.output/server/chunks/build/Select-BB1oLrCD.mjs +1 -1
  154. package/.output/server/chunks/build/SelectMenu-DPssg6zD.mjs +1 -1
  155. package/.output/server/chunks/build/Table-DCwTlhCj.mjs +1 -1
  156. package/.output/server/chunks/build/Tooltip-TRyl6dje.mjs +1 -1
  157. package/.output/server/chunks/build/Tree-DUhXKd8y.mjs +1 -1
  158. package/.output/server/chunks/build/_uuid_-DfJaumTE.mjs +1 -1
  159. package/.output/server/chunks/build/{chat-CR3JIVEq.mjs → chat-m4-n9vC6.mjs} +516 -14
  160. package/.output/server/chunks/build/chat-m4-n9vC6.mjs.map +1 -0
  161. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  162. package/.output/server/chunks/build/cookie-C_iulBi6.mjs +1 -1
  163. package/.output/server/chunks/build/dashboard-CiVTAZuF.mjs +1 -1
  164. package/.output/server/chunks/build/docs-ChGwOPg5.mjs +1 -1
  165. package/.output/server/chunks/build/fetch-BB7Qzkwe.mjs +1 -1
  166. package/.output/server/chunks/build/index-CxDxc9fm.mjs +1 -1
  167. package/.output/server/chunks/build/server.mjs +2 -2
  168. package/.output/server/chunks/build/settings-B2KXoGcz.mjs +1 -1
  169. package/.output/server/chunks/build/useNotificationBus-BG5JNQf1.mjs +1 -1
  170. package/.output/server/chunks/build/view-n2sYa4Zh.mjs +1 -1
  171. package/.output/server/chunks/nitro/nitro.mjs +882 -866
  172. package/.output/server/chunks/routes/_ws/chat.mjs +40 -6
  173. package/.output/server/chunks/routes/_ws/chat.mjs.map +1 -1
  174. package/.output/server/chunks/routes/api/bridges/_id/contacts.get.mjs +84 -0
  175. package/.output/server/chunks/routes/api/bridges/_id/contacts.get.mjs.map +1 -0
  176. package/.output/server/chunks/routes/api/bridges/_id/send.post.mjs +70 -0
  177. package/.output/server/chunks/routes/api/bridges/_id/send.post.mjs.map +1 -0
  178. package/.output/server/chunks/routes/api/bridges/context.get.mjs +19 -18
  179. package/.output/server/chunks/routes/api/bridges/context.get.mjs.map +1 -1
  180. package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs +1 -1
  181. package/.output/server/chunks/routes/api/conversations/_id_.get.mjs +1 -1
  182. package/.output/server/chunks/routes/api/dashboard/overview.get.mjs +1 -1
  183. package/.output/server/chunks/routes/api/documents/_id/public.get.mjs +1 -1
  184. package/.output/server/chunks/routes/api/documents/_id/restore.post.mjs +1 -1
  185. package/.output/server/chunks/routes/api/documents/by-path.post.mjs +1 -1
  186. package/.output/server/chunks/routes/api/documents/index.delete.mjs +1 -1
  187. package/.output/server/chunks/routes/api/documents/index.put.mjs +1 -1
  188. package/.output/server/chunks/routes/api/fs/delete.post.mjs +1 -1
  189. package/.output/server/chunks/routes/api/fs/list.get.mjs +1 -1
  190. package/.output/server/chunks/routes/api/fs/mkdir.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/fs/move.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/fs/read.post.mjs +1 -1
  193. package/.output/server/chunks/routes/api/fs/rename.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/fs/write.post.mjs +1 -1
  195. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/home.get.mjs +1 -1
  197. package/.output/server/chunks/routes/api/hooks/index.get.mjs +1 -1
  198. package/.output/server/chunks/routes/api/hooks/index.post.mjs +1 -1
  199. package/.output/server/chunks/routes/api/hooks/stats.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/index.get10.mjs +1 -1
  201. package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
  202. package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
  203. package/.output/server/chunks/routes/api/index.get5.mjs +1 -1
  204. package/.output/server/chunks/routes/api/index.get6.mjs +1 -1
  205. package/.output/server/chunks/routes/api/index.get7.mjs +1 -1
  206. package/.output/server/chunks/routes/api/index.get8.mjs +1 -1
  207. package/.output/server/chunks/routes/api/index.get9.mjs +1 -1
  208. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  209. package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
  210. package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
  211. package/.output/server/chunks/routes/api/index.put.mjs +1 -1
  212. package/.output/server/chunks/routes/api/memory/_id_.delete.mjs +1 -1
  213. package/.output/server/chunks/routes/api/memory/context.get.mjs +1 -1
  214. package/.output/server/chunks/routes/api/memory/extract.post.mjs +1 -1
  215. package/.output/server/chunks/routes/api/memory/search.get.mjs +1 -1
  216. package/.output/server/chunks/routes/api/memory/store.post.mjs +1 -1
  217. package/.output/server/chunks/routes/api/projects/index.delete.mjs +1 -1
  218. package/.output/server/chunks/routes/api/projects/index.get.mjs +1 -1
  219. package/.output/server/chunks/routes/api/projects/index.put.mjs +1 -1
  220. package/.output/server/chunks/routes/api/secrets/_key_.delete.mjs +1 -1
  221. package/.output/server/chunks/routes/api/secrets/_key_.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/secrets/_key_.put.mjs +1 -1
  223. package/.output/server/chunks/routes/api/skills/_name/delete.post.mjs +1 -1
  224. package/.output/server/chunks/routes/api/skills/_name/export.get.mjs +1 -1
  225. package/.output/server/chunks/routes/api/skills/_name/files/create.post.mjs +1 -1
  226. package/.output/server/chunks/routes/api/skills/_name/files/delete.post.mjs +1 -1
  227. package/.output/server/chunks/routes/api/skills/_name/files/read.post.mjs +1 -1
  228. package/.output/server/chunks/routes/api/skills/_name/files/write.post.mjs +1 -1
  229. package/.output/server/chunks/routes/api/skills/_name/index.get.mjs +1 -1
  230. package/.output/server/chunks/routes/api/skills/_name/rename.post.mjs +1 -1
  231. package/.output/server/chunks/routes/api/skills/_name/toggle.post.mjs +1 -1
  232. package/.output/server/chunks/routes/api/skills/create.post.mjs +1 -1
  233. package/.output/server/chunks/routes/api/skills/generate.post.mjs +1 -1
  234. package/.output/server/chunks/routes/api/skills/import.post.mjs +1 -1
  235. package/.output/server/chunks/routes/api/skills/index.get.mjs +1 -1
  236. package/.output/server/chunks/routes/api/skills/index.get2.mjs +1 -1
  237. package/.output/server/chunks/routes/api/skills/library/check-updates.get.mjs +1 -1
  238. package/.output/server/chunks/routes/api/skills/library/install.post.mjs +1 -1
  239. package/.output/server/chunks/routes/api/tasks/_id/restore.post.mjs +1 -1
  240. package/.output/server/chunks/routes/api/tasks/index.delete.mjs +1 -1
  241. package/.output/server/chunks/routes/api/tasks/index.put.mjs +1 -1
  242. package/.output/server/chunks/routes/api/tasks/tags.get.mjs +1 -1
  243. package/.output/server/chunks/routes/api/usage/stats.get.mjs +1 -1
  244. package/.output/server/chunks/routes/api/user/email.patch.mjs +1 -1
  245. package/.output/server/chunks/routes/api/webhooks/bluebubbles.post.mjs +1 -1
  246. package/.output/server/chunks/routes/api/webhooks/telegram.post.mjs +1 -1
  247. package/.output/server/chunks/routes/notifications.mjs +1 -1
  248. package/.output/server/chunks/routes/renderer.mjs +1 -1
  249. package/.output/server/chunks/routes/terminal.mjs +1 -1
  250. package/.output/server/index.mjs +1 -1
  251. package/.output/server/package.json +1 -1
  252. package/Claude/skills/_lib/api.py +3 -2
  253. package/Claude/skills/bridge/SKILL.md +25 -1
  254. package/Claude/skills/bridge/bridge.py +64 -0
  255. package/app/components/chat/ChatInput.vue +133 -5
  256. package/app/components/chat/MessageBubble.vue +188 -6
  257. package/app/composables/useAttachments.ts +196 -0
  258. package/app/composables/useChat.ts +14 -2
  259. package/app/pages/chat.vue +4 -2
  260. package/package.json +1 -1
  261. package/server/api/bridges/[id]/contacts.get.ts +57 -0
  262. package/server/api/bridges/[id]/send.post.ts +40 -0
  263. package/server/api/bridges/context.get.ts +19 -18
  264. package/server/bridge/adapters/imessage.ts +9 -2
  265. package/server/bridge/responder.ts +3 -3
  266. package/server/routes/_ws/chat.ts +61 -7
  267. package/server/utils/chat-session-manager.ts +20 -2
  268. package/shared/types/index.ts +27 -1
  269. package/.output/public/_nuxt/BH0QDWEm.js +0 -1
  270. package/.output/public/_nuxt/BK8S2ony.js +0 -1
  271. package/.output/public/_nuxt/BZrSPX0S.js +0 -1
  272. package/.output/public/_nuxt/BaZwjF8o.js +0 -1
  273. package/.output/public/_nuxt/BkfI94R8.js +0 -1
  274. package/.output/public/_nuxt/C3NST0BU.js +0 -1
  275. package/.output/public/_nuxt/CKxSHyww.js +0 -1
  276. package/.output/public/_nuxt/CSKJ-Ahh.js +0 -1
  277. package/.output/public/_nuxt/CWyMCJQH.js +0 -1
  278. package/.output/public/_nuxt/CYPO5o_C.js +0 -1
  279. package/.output/public/_nuxt/CqNwHCpo.js +0 -1
  280. package/.output/public/_nuxt/CwPdIZ9J.js +0 -1
  281. package/.output/public/_nuxt/D5jZq8b3.js +0 -1
  282. package/.output/public/_nuxt/DH4YkDAi.js +0 -1
  283. package/.output/public/_nuxt/DPklr_tJ.js +0 -2
  284. package/.output/public/_nuxt/DQM4eBdt.js +0 -1
  285. package/.output/public/_nuxt/DUAAXJ6Q.js +0 -1
  286. package/.output/public/_nuxt/DmmdPt_5.js +0 -1
  287. package/.output/public/_nuxt/H6JbrRBU.js +0 -1
  288. package/.output/public/_nuxt/builds/meta/515be38f-7222-4e4b-80cb-cef7594b1834.json +0 -1
  289. package/.output/public/_nuxt/entry.NKPfH2kE.css +0 -1
  290. package/.output/server/chunks/build/chat-CR3JIVEq.mjs.map +0 -1
@@ -0,0 +1,57 @@
1
+ import { and, count, desc, eq, isNotNull, max, or, sql } from 'drizzle-orm'
2
+ import { getDb, schema } from '~~/server/db'
3
+ import { requireDb } from '~~/server/utils/db-guard'
4
+
5
+ export default defineEventHandler(async (event) => {
6
+ requireDb(event)
7
+
8
+ const id = getRouterParam(event, 'id')
9
+ if (!id)
10
+ throw createError({ statusCode: 400, message: 'Bridge ID is required' })
11
+
12
+ const db = getDb()
13
+ const bridge = await db.query.bridges.findFirst({
14
+ where: eq(schema.bridges.id, id)
15
+ })
16
+
17
+ if (!bridge)
18
+ throw createError({ statusCode: 404, message: 'Bridge not found' })
19
+
20
+ const query = getQuery(event)
21
+ const q = (query.q as string)?.trim()
22
+ const limit = Math.min(parseInt(query.limit as string) || 50, 200)
23
+
24
+ const conditions = [
25
+ eq(schema.bridgeMessages.bridgeId, id),
26
+ eq(schema.bridgeMessages.direction, 'inbound'),
27
+ isNotNull(schema.bridgeMessages.sender)
28
+ ]
29
+
30
+ if (q) {
31
+ conditions.push(
32
+ or(
33
+ sql`${schema.bridgeMessages.sender} ILIKE ${`%${q}%`}`,
34
+ sql`${schema.bridgeMessages.senderName} ILIKE ${`%${q}%`}`
35
+ )!
36
+ )
37
+ }
38
+
39
+ const contacts = await db.select({
40
+ sender: schema.bridgeMessages.sender,
41
+ senderName: schema.bridgeMessages.senderName,
42
+ platform: schema.bridgeMessages.platform,
43
+ messageCount: count(),
44
+ lastMessageAt: max(schema.bridgeMessages.createdAt)
45
+ })
46
+ .from(schema.bridgeMessages)
47
+ .where(and(...conditions))
48
+ .groupBy(
49
+ schema.bridgeMessages.sender,
50
+ schema.bridgeMessages.senderName,
51
+ schema.bridgeMessages.platform
52
+ )
53
+ .orderBy(desc(max(schema.bridgeMessages.createdAt)))
54
+ .limit(limit)
55
+
56
+ return { data: contacts }
57
+ })
@@ -0,0 +1,40 @@
1
+ import { eq } from 'drizzle-orm'
2
+ import { getDb, schema } from '~~/server/db'
3
+ import { requireDb } from '~~/server/utils/db-guard'
4
+ import { sendOutboundMessage } from '~~/server/bridge/router'
5
+
6
+ export default defineEventHandler(async (event) => {
7
+ requireDb(event)
8
+
9
+ const id = getRouterParam(event, 'id')
10
+ if (!id)
11
+ throw createError({ statusCode: 400, message: 'Bridge ID is required' })
12
+
13
+ const db = getDb()
14
+ const bridge = await db.query.bridges.findFirst({
15
+ where: eq(schema.bridges.id, id)
16
+ })
17
+
18
+ if (!bridge)
19
+ throw createError({ statusCode: 404, message: 'Bridge not found' })
20
+ if (!bridge.enabled)
21
+ throw createError({ statusCode: 400, message: 'Bridge is not enabled' })
22
+
23
+ const body = await readBody<{ recipient?: string, text?: string, replyToMessageId?: string }>(event)
24
+
25
+ if (!body?.recipient || !body?.text)
26
+ throw createError({ statusCode: 400, message: 'recipient and text are required' })
27
+
28
+ const result = await sendOutboundMessage({
29
+ bridgeId: id,
30
+ platform: bridge.platform,
31
+ recipient: body.recipient,
32
+ text: body.text,
33
+ replyToMessageId: body.replyToMessageId
34
+ })
35
+
36
+ if (!result.success)
37
+ throw createError({ statusCode: 502, message: result.error || 'Failed to send message' })
38
+
39
+ return { data: result }
40
+ })
@@ -19,20 +19,22 @@ const platformLabels: Record<BridgePlatform, string> = {
19
19
 
20
20
  const allPlatforms: BridgePlatform[] = ['telegram', 'discord', 'imessage', 'google', 'email']
21
21
 
22
- function formatTelegramContext(config: TelegramBridgeConfig | null): string {
22
+ function formatTelegramContext(config: TelegramBridgeConfig | null, bridgeId: string): string {
23
23
  const lines = [
24
24
  'You can send and receive Telegram messages.',
25
- '- Incoming messages from Telegram users are routed to you as conversations.',
26
- '- To send a message, use the bridge API or /bridge skill.'
25
+ '- Incoming messages are routed to you automatically.',
26
+ `- To send a message: use \`/bridge\` skill → \`contacts ${bridgeId}\` to find the recipient, then \`send ${bridgeId} -r <ID> -t "message"\``,
27
+ `- To list contacts: \`/bridge\` skill → \`contacts ${bridgeId}\``
27
28
  ]
28
29
  if (config?.botUsername)
29
30
  lines.push(`- Bot username: @${config.botUsername}`)
30
31
  return lines.join('\n')
31
32
  }
32
33
 
33
- function formatDiscordContext(config: DiscordBridgeConfig | null): string {
34
+ function formatDiscordContext(config: DiscordBridgeConfig | null, bridgeId: string): string {
34
35
  const lines = [
35
- 'You can send and receive Discord messages.'
36
+ 'You can send and receive Discord messages.',
37
+ `- To send: \`/bridge\` skill → \`contacts ${bridgeId}\` to find recipient, then \`send ${bridgeId} -r <ID> -t "message"\``
36
38
  ]
37
39
  const mode = config?.listenMode || 'mentions'
38
40
  if (mode === 'dm')
@@ -44,17 +46,16 @@ function formatDiscordContext(config: DiscordBridgeConfig | null): string {
44
46
  return lines.join('\n')
45
47
  }
46
48
 
47
- function formatIMessageContext(config: IMessageBridgeConfig | null): string {
49
+ function formatIMessageContext(config: IMessageBridgeConfig | null, bridgeId: string): string {
48
50
  const strategy = config?.strategy || 'imsg'
49
51
  const lines = [
50
52
  `You can send and receive iMessages (via ${strategy === 'imsg' ? 'local imsg CLI' : 'remote BlueBubbles'}).`,
51
- '- Incoming iMessages are routed to you as conversations.'
53
+ '- Incoming iMessages are routed to you automatically.'
52
54
  ]
53
- if (strategy === 'imsg') {
55
+ if (strategy === 'imsg')
54
56
  lines.push('- Send via: `imsg send "<number>" "<message>"`')
55
- } else {
56
- lines.push('- Send via the bridge API (BlueBubbles REST).')
57
- }
57
+ else
58
+ lines.push(`- To send: \`/bridge\` skill \`contacts ${bridgeId}\` to find recipient, then \`send ${bridgeId} -r <ID> -t "message"\``)
58
59
  return lines.join('\n')
59
60
  }
60
61
 
@@ -84,11 +85,11 @@ function formatGoogleContext(config: GoogleBridgeConfig | null): string {
84
85
  return lines.join('\n')
85
86
  }
86
87
 
87
- function formatEmailContext(): string {
88
+ function formatEmailContext(bridgeId: string): string {
88
89
  return [
89
90
  'You can send and receive email via IMAP/SMTP.',
90
- '- Incoming emails are routed to you as conversations.',
91
- '- Send via the bridge API.'
91
+ '- Incoming emails are routed to you automatically.',
92
+ `- To send: \`/bridge\` skill → \`contacts ${bridgeId}\` to find recipient, then \`send ${bridgeId} -r <ID> -t "message"\``
92
93
  ].join('\n')
93
94
  }
94
95
 
@@ -114,19 +115,19 @@ export default defineEventHandler(async (event) => {
114
115
 
115
116
  switch (bridge.platform) {
116
117
  case 'telegram':
117
- details = formatTelegramContext(config)
118
+ details = formatTelegramContext(config, bridge.id)
118
119
  break
119
120
  case 'discord':
120
- details = formatDiscordContext(config)
121
+ details = formatDiscordContext(config, bridge.id)
121
122
  break
122
123
  case 'imessage':
123
- details = formatIMessageContext(config)
124
+ details = formatIMessageContext(config, bridge.id)
124
125
  break
125
126
  case 'google':
126
127
  details = formatGoogleContext(config)
127
128
  break
128
129
  case 'email':
129
- details = formatEmailContext()
130
+ details = formatEmailContext(bridge.id)
130
131
  break
131
132
  }
132
133
 
@@ -263,12 +263,19 @@ export class IMessageAdapter implements BridgeAdapter {
263
263
  }
264
264
 
265
265
  try {
266
+ // Format chatGuid if recipient is a bare phone number or email
267
+ const chatGuid = msg.recipient.includes(';')
268
+ ? msg.recipient
269
+ : `iMessage;-;${msg.recipient.startsWith('+') ? msg.recipient : `+${msg.recipient}`}`
270
+
266
271
  const resp = await fetch(`${this.bbUrl}/api/v1/message/text?password=${encodeURIComponent(this.bbPassword)}`, {
267
272
  method: 'POST',
268
273
  headers: { 'Content-Type': 'application/json' },
269
274
  body: JSON.stringify({
270
- chatGuid: msg.recipient,
271
- message: msg.text
275
+ chatGuid,
276
+ tempGuid: `temp-${randomBytes(16).toString('hex')}`,
277
+ message: msg.text,
278
+ method: 'private-api'
272
279
  })
273
280
  })
274
281
 
@@ -111,12 +111,12 @@ export async function generateBridgeResponse(
111
111
  source: message.platform
112
112
  })
113
113
 
114
- // Build the prompt with memory context + platform context
114
+ // Build the prompt frame as direct conversation, not a notification
115
115
  const memoryContext = await loadMemoryContext()
116
- const senderLabel = message.senderName || message.sender
117
116
  const parts: string[] = []
118
117
  if (memoryContext) parts.push(memoryContext)
119
- parts.push(`[${message.platform} message from ${senderLabel}]: ${message.text}`)
118
+ parts.push(`The user is messaging you via ${message.platform}. Respond directly to them. Keep responses concise (suitable for chat/messaging). Do not ask what to reply — you ARE the one replying.`)
119
+ parts.push(message.text)
120
120
  const prompt = parts.join('\n\n')
121
121
 
122
122
  // Update status
@@ -4,7 +4,8 @@ import { chatSessionManager } from '~~/server/utils/chat-session-manager'
4
4
  import { getDb } from '~~/server/db'
5
5
  import * as schema from '~~/server/db/schema'
6
6
  import { logTokenUsage } from '~~/server/utils/log-token-usage'
7
- import type { ChatClientMessage, ChatContentBlock } from '~~/shared/types'
7
+ import type { ChatClientMessage, ChatContentBlock, ChatImageBlock, ChatDocumentBlock } from '~~/shared/types'
8
+ import type { ContentBlockParam } from '@anthropic-ai/sdk/resources/messages/messages'
8
9
 
9
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
11
  function send(peer: any, data: object) {
@@ -16,6 +17,42 @@ function send(peer: any, data: object) {
16
17
  }
17
18
  }
18
19
 
20
+ function buildSdkContent(
21
+ message: string,
22
+ attachments?: ChatImageBlock[],
23
+ documents?: ChatDocumentBlock[]
24
+ ): string | ContentBlockParam[] {
25
+ if (!attachments?.length && !documents?.length) return message
26
+
27
+ const blocks: ContentBlockParam[] = []
28
+
29
+ if (attachments?.length) {
30
+ for (const img of attachments) {
31
+ blocks.push({
32
+ type: 'image',
33
+ source: {
34
+ type: 'base64',
35
+ media_type: img.source.media_type,
36
+ data: img.source.data
37
+ }
38
+ })
39
+ }
40
+ }
41
+
42
+ if (documents?.length) {
43
+ for (const doc of documents) {
44
+ blocks.push({
45
+ type: 'document',
46
+ source: doc.source,
47
+ title: doc.title
48
+ })
49
+ }
50
+ }
51
+
52
+ if (message) blocks.push({ type: 'text', text: message })
53
+ return blocks
54
+ }
55
+
19
56
  export default defineWebSocketHandler({
20
57
  open(peer) {
21
58
  console.log(`[chat] WebSocket opened: ${peer.id}`)
@@ -28,7 +65,7 @@ export default defineWebSocketHandler({
28
65
 
29
66
  switch (msg.type) {
30
67
  case 'chat:send':
31
- handleSend(peer, msg.message, msg.conversationId)
68
+ handleSend(peer, msg.message, msg.conversationId, msg.attachments, msg.documents)
32
69
  break
33
70
  case 'chat:interrupt':
34
71
  handleInterrupt(peer, msg.conversationId)
@@ -49,8 +86,14 @@ export default defineWebSocketHandler({
49
86
  }
50
87
  })
51
88
 
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- async function handleSend(peer: any, message: string, conversationId?: string) {
89
+ async function handleSend(
90
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
+ peer: any,
92
+ message: string,
93
+ conversationId?: string,
94
+ attachments?: ChatImageBlock[],
95
+ documents?: ChatDocumentBlock[]
96
+ ) {
54
97
  const db = getDb()
55
98
 
56
99
  let convId = conversationId
@@ -61,7 +104,7 @@ async function handleSend(peer: any, message: string, conversationId?: string) {
61
104
  const [conv] = await db.insert(schema.conversations)
62
105
  .values({
63
106
  sessionId: randomUUID(),
64
- title: message.slice(0, 100),
107
+ title: message.slice(0, 100) || 'File attachment',
65
108
  status: 'streaming',
66
109
  messageCount: 0,
67
110
  totalCostUsd: 0
@@ -93,16 +136,27 @@ async function handleSend(peer: any, message: string, conversationId?: string) {
93
136
  .where(eq(schema.conversations.id, convId))
94
137
  }
95
138
 
139
+ // Build content blocks for persistence
140
+ const userContent: ChatContentBlock[] = []
141
+ if (attachments?.length)
142
+ for (const img of attachments) userContent.push(img)
143
+ if (documents?.length)
144
+ for (const doc of documents) userContent.push(doc)
145
+ if (message) userContent.push({ type: 'text', text: message })
146
+
96
147
  // Persist user message
97
148
  await db.insert(schema.conversationMessages).values({
98
149
  conversationId: convId,
99
150
  role: 'user',
100
- content: JSON.stringify([{ type: 'text', text: message }]),
151
+ content: JSON.stringify(userContent),
101
152
  source: 'web'
102
153
  })
103
154
 
155
+ // Build prompt for SDK (string for text-only, ContentBlockParam[] for multimodal)
156
+ const prompt = buildSdkContent(message, attachments, documents)
157
+
104
158
  // Start SDK streaming (fire-and-forget so WS stays responsive for interrupts)
105
- const session = chatSessionManager.startSession(convId, message, resumeSessionId)
159
+ const session = chatSessionManager.startSession(convId, prompt, resumeSessionId)
106
160
  send(peer, { type: 'chat:stream_start', conversationId: convId })
107
161
 
108
162
  streamSDKResponse(peer, session, convId).catch((err) => {
@@ -1,4 +1,8 @@
1
1
  import { query } from '@anthropic-ai/claude-agent-sdk'
2
+ import type { SDKUserMessage } from '@anthropic-ai/claude-agent-sdk'
3
+ import type { ContentBlockParam } from '@anthropic-ai/sdk/resources/messages/messages'
4
+
5
+ export type PromptInput = string | ContentBlockParam[]
2
6
 
3
7
  interface ActiveSession {
4
8
  conversationId: string
@@ -8,15 +12,29 @@ interface ActiveSession {
8
12
  startedAt: Date
9
13
  }
10
14
 
15
+ async function* createMultimodalPrompt(content: ContentBlockParam[]): AsyncGenerator<SDKUserMessage> {
16
+ yield {
17
+ type: 'user',
18
+ message: { role: 'user', content },
19
+ parent_tool_use_id: null,
20
+ session_id: ''
21
+ } as SDKUserMessage
22
+ }
23
+
11
24
  class ChatSessionManager {
12
25
  private sessions = new Map<string, ActiveSession>()
13
26
 
14
- startSession(conversationId: string, prompt: string, resumeSessionId?: string): ActiveSession {
27
+ startSession(conversationId: string, prompt: PromptInput, resumeSessionId?: string): ActiveSession {
15
28
  // Use the project directory as CWD so the SDK picks up .claude/ (skills, rules, CLAUDE.md)
16
29
  // The vault is accessible via VAULT_PATH env var in tools
17
30
  const projectDir = process.env.COGNOVA_PROJECT_DIR || process.cwd()
31
+
32
+ const promptArg = typeof prompt === 'string'
33
+ ? prompt
34
+ : createMultimodalPrompt(prompt)
35
+
18
36
  const conversation = query({
19
- prompt,
37
+ prompt: promptArg,
20
38
  options: {
21
39
  cwd: projectDir,
22
40
  settingSources: ['user', 'project'],
@@ -689,7 +689,31 @@ export interface ChatToolResultBlock {
689
689
  is_error?: boolean
690
690
  }
691
691
 
692
- export type ChatContentBlock = ChatTextBlock | ChatToolUseBlock | ChatToolResultBlock
692
+ export type ChatImageMediaType = 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp'
693
+
694
+ export interface ChatImageBlock {
695
+ type: 'image'
696
+ source: {
697
+ type: 'base64'
698
+ media_type: ChatImageMediaType
699
+ data: string
700
+ }
701
+ }
702
+
703
+ export interface ChatDocumentBlock {
704
+ type: 'document'
705
+ source:
706
+ | { type: 'base64', media_type: 'application/pdf', data: string }
707
+ | { type: 'text', media_type: 'text/plain', data: string }
708
+ title?: string
709
+ }
710
+
711
+ export type ChatContentBlock
712
+ = ChatTextBlock
713
+ | ChatImageBlock
714
+ | ChatDocumentBlock
715
+ | ChatToolUseBlock
716
+ | ChatToolResultBlock
693
717
 
694
718
  export type MessageSource = 'web' | 'telegram' | 'discord' | 'imessage' | 'email' | 'google'
695
719
 
@@ -724,6 +748,8 @@ export interface ChatConversation {
724
748
  export interface ChatSendMessage {
725
749
  type: 'chat:send'
726
750
  message: string
751
+ attachments?: ChatImageBlock[]
752
+ documents?: ChatDocumentBlock[]
727
753
  conversationId?: string
728
754
  }
729
755
 
@@ -1 +0,0 @@
1
- import{_ as J}from"./JbHa4oXq.js";import{_ as X,a as Y}from"./CqNwHCpo.js";import{_ as Z}from"./C3NST0BU.js";import{_ as ee}from"./wO6z2ugJ.js";import{_ as te}from"./XCjS70z4.js";import{_ as oe}from"./BmOtR1wX.js";import{e as u,ah as ae,c as ne,a as re,ag as le,f as S,q as se,G as k,T as l,S as a,C as c,ai as w,R as _,ab as s,Q as U,aj as ce,ak as ie,_ as ue,W as me,ae as y,aV as de,aa as M,a9 as pe,aW as fe}from"./2dNDtTiv.js";import{_ as _e}from"./CuxrHsu-.js";import{_ as ye}from"./DwY7rCd_.js";import{_ as he}from"./D_4LPm1U.js";import{f as ve}from"./CWePHsZr.js";import"./D5jZq8b3.js";import"./DhI5cA_n.js";import"./DEd2xVbS.js";import"./BIXrSYwR.js";import"./DmmdPt_5.js";import"./apYB9dr5.js";import"./H6JbrRBU.js";import"./Db4KMnt8.js";import"./CQqCBrXj.js";import"./DUAAXJ6Q.js";import"./CWyMCJQH.js";import"./DS2wStH1.js";import"./C6Y-ieo6.js";import"./CYPO5o_C.js";import"./D8lwrAYS.js";import"./88opOQSr.js";import"./BS2ZNXI1.js";import"./B93pdGAW.js";import"./BA_pRWwX.js";import"./BZrSPX0S.js";import"./C8ut0f5H.js";function ge(){const m=u([]),d=u(!0),p=u(null),g=ae({query:"",chunkType:"all",limit:50});async function b(i){d.value=!0,p.value=null;const e={...g,...i};try{const o={};e.query&&(o.query=e.query),e.chunkType&&e.chunkType!=="all"&&(o.chunkType=e.chunkType),e.projectPath&&(o.projectPath=e.projectPath),e.limit&&(o.limit=String(e.limit));const f=await $fetch("/api/memory/search",{query:o});return m.value=f.data,f.data}catch(o){throw p.value="Failed to load memories",console.error("Failed to load memories:",o),o}finally{d.value=!1}}async function T(i){try{await $fetch(`/api/memory/${i}`,{method:"DELETE"}),m.value=m.value.filter(e=>e.id!==i)}catch(e){throw console.error("Failed to delete memory:",e),e}}const h=ne(()=>{const i=m.value.reduce((e,o)=>(e[o.chunkType]=(e[o.chunkType]||0)+1,e),{});return{total:m.value.length,byType:i}});return{memories:m,loading:d,error:p,filters:g,stats:h,fetchMemories:b,deleteMemory:T}}const be={class:"contents"},Te={class:"p-4"},xe={key:0,class:"space-y-3"},ke={key:1,class:"flex flex-col items-center justify-center h-64 text-neutral-500"},we=["title"],De={class:"flex items-center gap-2"},$e={class:"w-16 h-1.5 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden"},Ce={class:"text-xs text-muted"},Se={class:"text-sm text-muted"},Ue={class:"text-sm text-muted"},D="__all__",ct=re({__name:"memories",setup(m){const d=le(),{memories:p,loading:g,filters:b,stats:T,fetchMemories:h,deleteMemory:i}=ge(),e=u(!1),o=u(null),f=u(!1),V=[{value:D,label:"All Types"},{value:"decision",label:"Decisions"},{value:"fact",label:"Facts"},{value:"solution",label:"Solutions"},{value:"pattern",label:"Patterns"},{value:"preference",label:"Preferences"},{value:"summary",label:"Summaries"}],x=u(D),v=u("");S(x,n=>{b.chunkType=n===D?"all":n,h()});const F=fe(()=>{b.query=v.value||void 0,h()},300);S(v,F);function q(n){o.value=n,e.value=!0}async function A(){if(o.value){f.value=!0;try{await i(o.value),d.add({title:"Memory deleted",color:"success"}),e.value=!1}catch{d.add({title:"Failed to delete memory",color:"error"})}finally{f.value=!1,o.value=null}}}function N(n){switch(n){case"decision":return"primary";case"fact":return"info";case"solution":return"success";case"pattern":return"warning";case"preference":return"neutral";case"summary":return"neutral";default:return"neutral"}}function B(n){switch(n){case"decision":return"i-lucide-git-branch";case"fact":return"i-lucide-info";case"solution":return"i-lucide-check-circle";case"pattern":return"i-lucide-repeat";case"preference":return"i-lucide-settings";case"summary":return"i-lucide-file-text";default:return"i-lucide-circle"}}function K(n){return ve(new Date(n),{addSuffix:!0})}const L=[{accessorKey:"chunkType",header:"Type"},{accessorKey:"content",header:"Content"},{accessorKey:"relevanceScore",header:"Relevance"},{accessorKey:"accessCount",header:"Accessed"},{accessorKey:"createdAt",header:"Created"},{accessorKey:"actions",header:""}];function P(n){return[[{label:"Delete",icon:"i-lucide-trash-2",color:"error",onSelect:()=>q(n)}]]}return se(()=>{h()}),(n,r)=>{const $=J,j=Y,E=Z,z=ee,I=te,R=oe,C=ue,Q=me,W=_e,G=ye,O=X,H=he;return _(),k("div",be,[l(O,{id:"memories",grow:""},{header:a(()=>[l(j,{title:"Memories"},{leading:a(()=>[c(T).total>0?(_(),U($,{key:0,color:"neutral",variant:"subtle",class:"ml-2"},{default:a(()=>[M(y(c(T).total),1)]),_:1})):pe("",!0)]),_:1}),l(I,null,{left:a(()=>[l(E,{modelValue:c(x),"onUpdate:modelValue":r[0]||(r[0]=t=>w(x)?x.value=t:null),items:V,"value-key":"value",class:"w-40"},null,8,["modelValue"])]),right:a(()=>[l(z,{modelValue:c(v),"onUpdate:modelValue":r[1]||(r[1]=t=>w(v)?v.value=t:null),placeholder:"Search memories...",icon:"i-lucide-search",class:"w-64"},null,8,["modelValue"])]),_:1})]),body:a(()=>[s("div",Te,[c(g)?(_(),k("div",xe,[(_(),k(ce,null,ie(10,t=>l(R,{key:t,class:"h-12 w-full"})),64))])):c(p).length===0?(_(),k("div",ke,[l(C,{name:"i-lucide-brain",class:"w-12 h-12 mb-4"}),r[4]||(r[4]=s("p",{class:"text-lg font-medium"}," No memories yet ",-1)),r[5]||(r[5]=s("p",{class:"text-sm text-center max-w-md mt-2"}," Memories are automatically extracted from your Claude conversations. They will appear here once extraction hooks are triggered. ",-1))])):(_(),U(G,{key:2,data:c(p),columns:L},{"chunkType-cell":a(({row:t})=>[l($,{color:N(t.original.chunkType),variant:"subtle",size:"sm"},{default:a(()=>[l(C,{name:B(t.original.chunkType),class:"w-3 h-3 mr-1"},null,8,["name"]),M(" "+y(t.original.chunkType),1)]),_:2},1032,["color"])]),"content-cell":a(({row:t})=>[s("span",{class:"text-sm line-clamp-2",title:t.original.content},y(t.original.content),9,we)]),"relevanceScore-cell":a(({row:t})=>[s("div",De,[s("div",$e,[s("div",{class:"h-full bg-primary-500 rounded-full",style:de({width:`${t.original.relevanceScore*100}%`})},null,4)]),s("span",Ce,y((t.original.relevanceScore*100).toFixed(0))+"% ",1)])]),"accessCount-cell":a(({row:t})=>[s("span",Se,y(t.original.accessCount)+"x ",1)]),"createdAt-cell":a(({row:t})=>[s("span",Ue,y(K(t.original.createdAt)),1)]),"actions-cell":a(({row:t})=>[l(W,{items:P(t.original.id)},{default:a(()=>[l(Q,{icon:"i-lucide-more-horizontal",color:"neutral",variant:"ghost",size:"xs"})]),_:1},8,["items"])]),_:1},8,["data"]))])]),_:1}),l(H,{open:c(e),"onUpdate:open":r[2]||(r[2]=t=>w(e)?e.value=t:null),title:"Delete Memory",description:"Are you sure you want to delete this memory? This action cannot be undone.","confirm-label":"Delete","confirm-color":"error",icon:"i-lucide-trash-2",loading:c(f),onConfirm:A,onCancel:r[3]||(r[3]=t=>o.value=null)},null,8,["open","loading"])])}}});export{ct as default};
@@ -1 +0,0 @@
1
- import{d as a,n as i}from"./2dNDtTiv.js";import{u}from"./BKXg-alD.js";const r=a(()=>{const{isAuthenticated:e,isPending:t}=u();if(!t.value&&!e.value)return i("/login")});export{r as default};
@@ -1 +0,0 @@
1
- import{a as y,a_ as m,Q as p,R as f,S as d,a4 as v,V as g,C as e,a3 as O,q as P,a0 as B,T as E,bG as $,bH as q,e as F,bf as A,a9 as M}from"./2dNDtTiv.js";import{i as D}from"./BA_pRWwX.js";import{F as k,u as h,a as R}from"./H6JbrRBU.js";import{u as w}from"./CWyMCJQH.js";import{g as K}from"./DUAAXJ6Q.js";var T=y({__name:"DialogClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(i){const l=i;m();const a=D();return(t,s)=>(f(),p(e(O),g(l,{type:t.as==="button"?"button":void 0,onClick:s[0]||(s[0]=c=>e(a).onOpenChange(!1))}),{default:d(()=>[v(t.$slots,"default")]),_:3},16,["type"]))}}),te=T,N=y({__name:"DialogContentImpl",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(i,{emit:l}){const a=i,t=l,s=D(),{forwardRef:c,currentElement:_}=m();return s.titleId||=w(void 0,"reka-dialog-title"),s.descriptionId||=w(void 0,"reka-dialog-description"),P(()=>{s.contentElement=_,B()!==document.body&&(s.triggerElement.value=B())}),(n,r)=>(f(),p(e(k),{"as-child":"",loop:"",trapped:a.trapFocus,onMountAutoFocus:r[5]||(r[5]=o=>t("openAutoFocus",o)),onUnmountAutoFocus:r[6]||(r[6]=o=>t("closeAutoFocus",o))},{default:d(()=>[E(e($),g({id:e(s).contentId,ref:e(c),as:n.as,"as-child":n.asChild,"disable-outside-pointer-events":n.disableOutsidePointerEvents,role:"dialog","aria-describedby":e(s).descriptionId,"aria-labelledby":e(s).titleId,"data-state":e(K)(e(s).open.value)},n.$attrs,{onDismiss:r[0]||(r[0]=o=>e(s).onOpenChange(!1)),onEscapeKeyDown:r[1]||(r[1]=o=>t("escapeKeyDown",o)),onFocusOutside:r[2]||(r[2]=o=>t("focusOutside",o)),onInteractOutside:r[3]||(r[3]=o=>t("interactOutside",o)),onPointerDownOutside:r[4]||(r[4]=o=>t("pointerDownOutside",o))}),{default:d(()=>[v(n.$slots,"default")]),_:3},16,["id","as","as-child","disable-outside-pointer-events","aria-describedby","aria-labelledby","data-state"])]),_:3},8,["trapped"]))}}),I=N,S=y({__name:"DialogContentModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(i,{emit:l}){const a=i,t=l,s=D(),c=q(t),{forwardRef:_,currentElement:n}=m();return h(n),(r,o)=>(f(),p(I,g({...a,...e(c)},{ref:e(_),"trap-focus":e(s).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:o[0]||(o[0]=u=>{u.defaultPrevented||(u.preventDefault(),e(s).triggerElement.value?.focus())}),onPointerDownOutside:o[1]||(o[1]=u=>{const C=u.detail.originalEvent,b=C.button===0&&C.ctrlKey===!0;(C.button===2||b)&&u.preventDefault()}),onFocusOutside:o[2]||(o[2]=u=>{u.preventDefault()})}),{default:d(()=>[v(r.$slots,"default")]),_:3},16,["trap-focus"]))}}),L=S,V=y({__name:"DialogContentNonModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(i,{emit:l}){const a=i,s=q(l);m();const c=D(),_=F(!1),n=F(!1);return(r,o)=>(f(),p(I,g({...a,...e(s)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:o[0]||(o[0]=u=>{u.defaultPrevented||(_.value||e(c).triggerElement.value?.focus(),u.preventDefault()),_.value=!1,n.value=!1}),onInteractOutside:o[1]||(o[1]=u=>{u.defaultPrevented||(_.value=!0,u.detail.originalEvent.type==="pointerdown"&&(n.value=!0));const C=u.target;e(c).triggerElement.value?.contains(C)&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&n.value&&u.preventDefault()})}),{default:d(()=>[v(r.$slots,"default")]),_:3},16))}}),H=V,j=y({__name:"DialogContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(i,{emit:l}){const a=i,t=l,s=D(),c=q(t),{forwardRef:_}=m();return(n,r)=>(f(),p(e(A),{present:n.forceMount||e(s).open.value},{default:d(()=>[e(s).modal.value?(f(),p(L,g({key:0,ref:e(_)},{...a,...e(c),...n.$attrs}),{default:d(()=>[v(n.$slots,"default")]),_:3},16)):(f(),p(H,g({key:1,ref:e(_)},{...a,...e(c),...n.$attrs}),{default:d(()=>[v(n.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),oe=j,G=y({__name:"DialogDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"p"}},setup(i){const l=i;m();const a=D();return(t,s)=>(f(),p(e(O),g(l,{id:e(a).descriptionId}),{default:d(()=>[v(t.$slots,"default")]),_:3},16,["id"]))}}),se=G,Q=y({__name:"DialogOverlayImpl",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const l=D();return R(!0),m(),(a,t)=>(f(),p(e(O),{as:a.as,"as-child":a.asChild,"data-state":e(l).open.value?"open":"closed",style:{"pointer-events":"auto"}},{default:d(()=>[v(a.$slots,"default")]),_:3},8,["as","as-child","data-state"]))}}),U=Q,z=y({__name:"DialogOverlay",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const l=D(),{forwardRef:a}=m();return(t,s)=>e(l)?.modal.value?(f(),p(e(A),{key:0,present:t.forceMount||e(l).open.value},{default:d(()=>[E(U,g(t.$attrs,{ref:e(a),as:t.as,"as-child":t.asChild}),{default:d(()=>[v(t.$slots,"default")]),_:3},16,["as","as-child"])]),_:3},8,["present"])):M("v-if",!0)}}),ae=z,J=y({__name:"DialogTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"h2"}},setup(i){const l=i,a=D();return m(),(t,s)=>(f(),p(e(O),g(l,{id:e(a).titleId}),{default:d(()=>[v(t.$slots,"default")]),_:3},16,["id"]))}}),re=J;export{oe as D,re as a,se as b,te as c,ae as d};
@@ -1 +0,0 @@
1
- import"./2dNDtTiv.js";const s=globalThis.setInterval;export{s};
@@ -1 +0,0 @@
1
- import{a as I,G as i,R as s,ab as n,T as c,W as M,a9 as u,aj as z,ak as q,U as K,Q as h,aa as j,ae as b,al as X,_ as L,bg as Y,an as Z,e as ee,q as te,f as S,c as se,S as g,C as e,k as N}from"./2dNDtTiv.js";import{_ as oe,a as ne}from"./CqNwHCpo.js";import{_ as ae}from"./JbHa4oXq.js";import{u as ie,_ as re,a as le,b as ce}from"./DPklr_tJ.js";import"./D5jZq8b3.js";import"./DhI5cA_n.js";import"./DEd2xVbS.js";import"./YX8avsvq.js";import"./88opOQSr.js";import"./iik6CYzq.js";import"./t8aDAkZ5.js";import"./BHtY0l0l.js";import"./BaZwjF8o.js";const ue={class:"flex flex-col h-full"},de={class:"p-3 border-b border-default"},me={class:"flex-1 overflow-y-auto"},_e={key:0,class:"p-4 text-sm text-dimmed text-center"},fe=["onClick"],pe={class:"flex items-start justify-between gap-2"},ge={class:"flex items-center gap-1.5 truncate text-sm font-medium"},he={class:"flex items-center gap-2 mt-1 text-xs text-dimmed"},ve={key:0},xe={key:1},Ce=I({__name:"ConversationList",props:{conversations:{},activeId:{}},emits:["select","delete","new"],setup(v,{emit:_}){const r=_;function f(p){const l=new Date(p),a=new Date().getTime()-l.getTime();return a<6e4?"just now":a<36e5?`${Math.floor(a/6e4)}m ago`:a<864e5?`${Math.floor(a/36e5)}h ago`:l.toLocaleDateString()}return(p,l)=>{const m=M,a=L;return s(),i("div",ue,[n("div",de,[c(m,{label:"New Chat",icon:"i-lucide-plus",color:"primary",variant:"soft",block:"",onClick:l[0]||(l[0]=t=>r("new"))})]),n("div",me,[v.conversations.length===0?(s(),i("div",_e," No conversations yet ")):u("",!0),(s(!0),i(z,null,q(v.conversations,t=>(s(),i("button",{key:t.id,class:K(["w-full p-3 text-left border-b border-default hover:bg-elevated/50 transition-colors group",{"bg-elevated/50":v.activeId===t.id}]),onClick:x=>r("select",t.id)},[n("div",pe,[n("div",ge,[t.isMain?(s(),h(a,{key:0,name:"i-lucide-pin",class:"size-3.5 text-primary shrink-0"})):u("",!0),j(" "+b(t.title||"Untitled"),1)]),t.isMain?u("",!0):(s(),h(m,{key:0,icon:"i-lucide-trash-2",variant:"ghost",color:"error",size:"xs",class:"opacity-0 group-hover:opacity-100 shrink-0",onClick:X(x=>r("delete",t.id),["stop"])},null,8,["onClick"]))]),n("div",he,[n("span",null,b(f(t.startedAt)),1),t.messageCount?(s(),i("span",ve,b(t.messageCount)+" msgs",1)):u("",!0),t.totalCostUsd>0?(s(),i("span",xe,"$"+b(t.totalCostUsd.toFixed(4)),1)):u("",!0)])],10,fe))),128))])])}}}),be=Object.assign(Ce,{__name:"ChatConversationList"}),ke={class:"flex flex-1 min-w-0"},ye={class:"flex flex-col h-full"},we={key:0,class:"flex flex-col items-center justify-center h-full text-dimmed"},Ve=I({__name:"chat",setup(v){const{connectionStatus:_,sessionStatus:r,activeConversationId:f,messages:p,conversations:l,streamingText:m,streamingToolCalls:a,connect:t,sendMessage:x,interrupt:V,startNewConversation:k,loadConversation:U,loadConversations:R,deleteConversation:F}=ie(),y=Y(),T=Z(),C=ee(null);te(()=>{if(t(),R(),y.query.conversation){const d=y.query.conversation,o=S(_,$=>{$==="connected"&&(o(),U(d),T.replace({query:{}}))},{immediate:!0})}else if(y.query.onboarding){const d=S(_,o=>{o==="connected"&&(d(),k(),x("Hello!"),N(w),T.replace({query:{}}))},{immediate:!0})}});function H(d){x(d),N(w)}function w(){C.value&&(C.value.scrollTop=C.value.scrollHeight)}S(m,()=>N(w));const A=se(()=>f.value?l.value.find(o=>o.id===f.value)?.title||"Chat":"New Chat");return(d,o)=>{const $=be,B=oe,E=ae,G=M,O=ne,P=L,Q=re,W=le,J=ce;return s(),i("div",ke,[c(B,{id:"chat-sidebar","default-size":20,"min-size":15,"max-size":30,collapsible:"",resizable:"",class:"hidden lg:flex"},{default:g(()=>[c($,{conversations:e(l),"active-id":e(f),onSelect:e(U),onDelete:e(F),onNew:e(k)},null,8,["conversations","active-id","onSelect","onDelete","onNew"])]),_:1}),c(B,{id:"chat-main",grow:""},{header:g(()=>[c(O,{title:e(A)},{right:g(()=>[e(r)==="streaming"?(s(),h(E,{key:0,color:"warning",variant:"subtle"},{default:g(()=>[...o[0]||(o[0]=[j(" Streaming ",-1)])]),_:1})):u("",!0),c(G,{icon:"i-lucide-plus",variant:"ghost",color:"neutral",class:"lg:hidden",onClick:e(k)},null,8,["onClick"])]),_:1},8,["title"])]),default:g(()=>[n("div",ye,[n("div",{ref_key:"messagesContainer",ref:C,class:"flex-1 overflow-y-auto p-4 space-y-4"},[e(p).length===0&&e(r)!=="streaming"?(s(),i("div",we,[c(P,{name:"i-lucide-message-square",class:"size-12 mb-4"}),o[1]||(o[1]=n("p",{class:"text-lg font-medium"}," Start a conversation ",-1)),o[2]||(o[2]=n("p",{class:"text-sm mt-1"}," Send a message to start chatting with Claude ",-1))])):u("",!0),(s(!0),i(z,null,q(e(p),D=>(s(),h(Q,{key:D.id,message:D},null,8,["message"]))),128)),e(r)==="streaming"?(s(),h(W,{key:1,text:e(m),"tool-calls":e(a)},null,8,["text","tool-calls"])):u("",!0)],512),c(J,{"session-status":e(r),"connection-status":e(_),onSend:H,onInterrupt:e(V)},null,8,["session-status","connection-status","onInterrupt"])])]),_:1})])}}});export{Ve as default};
@@ -1 +0,0 @@
1
- import{a6 as Ye,a as D,aR as ce,aP as Ve,aQ as Le,e as B,c as j,a8 as Ee,a1 as pe,Q as _,R as o,S as b,a4 as C,a9 as W,C as e,G as R,aj as ae,ak as ve,V as E,f as Be,ab as ye,aM as Qe,O as Me,y as Xe,T as V,al as de,bG as Je,au as Ze,a5 as et,a_ as be,q as le,k as ue,bB as tt,a3 as X,aV as at,aN as _e,aJ as Ke,aO as Pe,bf as lt,bU as it,bo as nt,a0 as rt,a2 as ot,b6 as st,ao as ut,N as dt,aI as ct,aK as pt,aC as re,aT as Oe,aF as ft,av as gt,aw as mt,am as $e,b7 as vt,aG as yt,U as O,_ as me,ax as De,ae as oe,aa as ke,Y as se,bV as ht,bW as Re,aH as bt}from"./2dNDtTiv.js";import{u as _t}from"./BIXrSYwR.js";import{u as St}from"./DmmdPt_5.js";import{a as xt,b as qt,P as Ct,c as It}from"./apYB9dr5.js";import{a as wt,u as Tt,F as kt}from"./H6JbrRBU.js";import{u as zt}from"./Db4KMnt8.js";import{u as We}from"./CQqCBrXj.js";import{f as Fe}from"./DUAAXJ6Q.js";import{u as Ae}from"./CWyMCJQH.js";function Ne(i,s=Number.NEGATIVE_INFINITY,a=Number.POSITIVE_INFINITY){return Math.min(a,Math.max(s,i))}const Bt=[" ","Enter","ArrowUp","ArrowDown"],Pt=[" ","Enter"],U=10;function he(i,s,a){return i===void 0?!1:Array.isArray(i)?i.some(t=>ze(t,s,a)):ze(i,s,a)}function ze(i,s,a){return i===void 0||s===void 0?!1:typeof i=="string"?i===s:typeof a=="function"?a(i,s):typeof a=="string"?i?.[a]===s?.[a]:Ye(i,s)}function At(i){return i==null||i===""||Array.isArray(i)&&i.length===0}const Lt={key:0,value:""},[J,He]=ce("SelectRoot");var Et=D({inheritAttrs:!1,__name:"SelectRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","update:open"],setup(i,{emit:s}){const a=i,t=s,{required:r,disabled:u,multiple:m,dir:S}=Ve(a),v=Le(a,"modelValue",t,{defaultValue:a.defaultValue??(m.value?[]:void 0),passive:a.modelValue===void 0,deep:!0}),y=Le(a,"open",t,{defaultValue:a.defaultOpen,passive:a.open===void 0}),k=B(),w=B(),x=B({x:0,y:0}),I=j(()=>m.value&&Array.isArray(v.value)?v.value?.length===0:Ee(v.value));pe({isProvider:!0});const c=_t(S),$=St(k),A=B(new Set),G=j(()=>Array.from(A.value).map(n=>n.value).join(";"));function M(n){if(m.value){const h=Array.isArray(v.value)?[...v.value]:[],d=h.findIndex(f=>ze(f,n,a.by));d===-1?h.push(n):h.splice(d,1),v.value=[...h]}else v.value=n}function P(n){return Array.from(A.value).find(h=>he(n,h.value,a.by))}return He({triggerElement:k,onTriggerChange:n=>{k.value=n},valueElement:w,onValueElementChange:n=>{w.value=n},contentId:"",modelValue:v,onValueChange:M,by:a.by,open:y,multiple:m,required:r,onOpenChange:n=>{y.value=n},dir:c,triggerPointerDownPosRef:x,disabled:u,isEmptyModelValue:I,optionsSet:A,onOptionAdd:n=>{const h=P(n.value);h&&A.value.delete(h),A.value.add(n)},onOptionRemove:n=>{const h=P(n.value);h&&A.value.delete(h)}}),(n,h)=>(o(),_(e(xt),null,{default:b(()=>[C(n.$slots,"default",{modelValue:e(v),open:e(y)}),e($)?(o(),_(Dt,{key:G.value,"aria-hidden":"true",tabindex:"-1",multiple:e(m),required:e(r),name:n.name,autocomplete:n.autocomplete,disabled:e(u),value:e(v)},{default:b(()=>[e(Ee)(e(v))?(o(),R("option",Lt)):W("v-if",!0),(o(!0),R(ae,null,ve(Array.from(A.value),d=>(o(),R("option",E({key:d.value??""},{ref_for:!0},d),null,16))),128))]),_:1},8,["multiple","required","name","autocomplete","disabled","value"])):W("v-if",!0)]),_:3}))}}),Ot=Et,$t=D({__name:"BubbleSelect",props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(i){const s=i,a=B(),t=J();Be(()=>s.value,(u,m)=>{const S=window.HTMLSelectElement.prototype,y=Object.getOwnPropertyDescriptor(S,"value").set;if(u!==m&&y&&a.value){const k=new Event("change",{bubbles:!0});y.call(a.value,u),a.value.dispatchEvent(k)}});function r(u){t.onValueChange(u.target.value)}return(u,m)=>(o(),_(e(Qe),{"as-child":""},{default:b(()=>[ye("select",E({ref_key:"selectElement",ref:a},s,{onInput:r}),[C(u.$slots,"default")],16)]),_:3}))}}),Dt=$t,Rt=D({__name:"SelectPopperPosition",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:U},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const a=Me(i);return(t,r)=>(o(),_(e(qt),E(e(a),{style:{boxSizing:"border-box","--reka-select-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-select-content-available-width":"var(--reka-popper-available-width)","--reka-select-content-available-height":"var(--reka-popper-available-height)","--reka-select-trigger-width":"var(--reka-popper-anchor-width)","--reka-select-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:b(()=>[C(t.$slots,"default")]),_:3},16))}}),Ft=Rt;const je={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Se,Ge]=ce("SelectContent");var Nt=D({__name:"SelectContentImpl",props:{position:{type:String,required:!1,default:"item-aligned"},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:"start"},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(i,{emit:s}){const a=i,t=s,r=J();zt(),wt(a.bodyLock);const{CollectionSlot:u,getItems:m}=pe(),S=B();Tt(S);const{search:v,handleTypeaheadSearch:y}=We(),k=B(),w=B(),x=B(),I=B(!1),c=B(!1),$=B(!1);function A(){w.value&&S.value&&Fe([w.value,S.value])}Be(I,()=>{A()});const{onOpenChange:G,triggerPointerDownPosRef:M}=r;Xe(d=>{if(!S.value)return;let f={x:0,y:0};const q=z=>{f={x:Math.abs(Math.round(z.pageX)-(M.value?.x??0)),y:Math.abs(Math.round(z.pageY)-(M.value?.y??0))}},T=z=>{z.pointerType!=="touch"&&(f.x<=10&&f.y<=10?z.preventDefault():S.value?.contains(z.target)||G(!1),document.removeEventListener("pointermove",q),M.value=null)};M.value!==null&&(document.addEventListener("pointermove",q),document.addEventListener("pointerup",T,{capture:!0,once:!0})),d(()=>{document.removeEventListener("pointermove",q),document.removeEventListener("pointerup",T,{capture:!0})})});function P(d){const f=d.ctrlKey||d.altKey||d.metaKey;if(d.key==="Tab"&&d.preventDefault(),!f&&d.key.length===1&&y(d.key,m()),["ArrowUp","ArrowDown","Home","End"].includes(d.key)){let T=[...m().map(z=>z.ref)];if(["ArrowUp","End"].includes(d.key)&&(T=T.slice().reverse()),["ArrowUp","ArrowDown"].includes(d.key)){const z=d.target,Q=T.indexOf(z);T=T.slice(Q+1)}setTimeout(()=>Fe(T)),d.preventDefault()}}const n=j(()=>a.position==="popper"?a:{}),h=Me(n.value);return Ge({content:S,viewport:k,onViewportChange:d=>{k.value=d},itemRefCallback:(d,f,q)=>{const T=!c.value&&!q,z=he(r.modelValue.value,f,r.by);if(r.multiple.value){if($.value)return;(z||T)&&(w.value=d,z&&($.value=!0))}else(z||T)&&(w.value=d);T&&(c.value=!0)},selectedItem:w,selectedItemText:x,onItemLeave:()=>{S.value?.focus()},itemTextRefCallback:(d,f,q)=>{const T=!c.value&&!q;(he(r.modelValue.value,f,r.by)||T)&&(x.value=d)},focusSelectedItem:A,position:a.position,isPositioned:I,searchRef:v}),(d,f)=>(o(),_(e(u),null,{default:b(()=>[V(e(kt),{"as-child":"",onMountAutoFocus:f[6]||(f[6]=de(()=>{},["prevent"])),onUnmountAutoFocus:f[7]||(f[7]=q=>{t("closeAutoFocus",q),!q.defaultPrevented&&(e(r).triggerElement.value?.focus({preventScroll:!0}),q.preventDefault())})},{default:b(()=>[V(e(Je),{"as-child":"","disable-outside-pointer-events":"",onFocusOutside:f[2]||(f[2]=de(()=>{},["prevent"])),onDismiss:f[3]||(f[3]=q=>e(r).onOpenChange(!1)),onEscapeKeyDown:f[4]||(f[4]=q=>t("escapeKeyDown",q)),onPointerDownOutside:f[5]||(f[5]=q=>t("pointerDownOutside",q))},{default:b(()=>[(o(),_(Ze(d.position==="popper"?Ft:Wt),E({...d.$attrs,...e(h)},{id:e(r).contentId,ref:q=>{const T=e(et)(q);T?.hasAttribute("data-reka-popper-content-wrapper")?S.value=T.firstElementChild:S.value=T},role:"listbox","data-state":e(r).open.value?"open":"closed",dir:e(r).dir.value,style:{display:"flex",flexDirection:"column",outline:"none"},onContextmenu:f[0]||(f[0]=de(()=>{},["prevent"])),onPlaced:f[1]||(f[1]=q=>I.value=!0),onKeydown:P}),{default:b(()=>[C(d.$slots,"default")]),_:3},16,["id","data-state","dir","onKeydown"]))]),_:3})]),_:3})]),_:3}))}}),Vt=Nt;const[Ta,Mt]=ce("SelectItemAlignedPosition");var Kt=D({inheritAttrs:!1,__name:"SelectItemAlignedPosition",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["placed"],setup(i,{emit:s}){const a=i,t=s,{getItems:r}=pe(),u=J(),m=Se(),S=B(!1),v=B(!0),y=B(),{forwardRef:k,currentElement:w}=be(),{viewport:x,selectedItem:I,selectedItemText:c,focusSelectedItem:$}=m;function A(){if(u.triggerElement.value&&u.valueElement.value&&y.value&&w.value&&x?.value&&I?.value&&c?.value){const P=u.triggerElement.value.getBoundingClientRect(),n=w.value.getBoundingClientRect(),h=u.valueElement.value.getBoundingClientRect(),d=c.value.getBoundingClientRect();if(u.dir.value!=="rtl"){const K=d.left-n.left,l=h.left-K,N=P.left-l,Y=P.width+N,Ie=Math.max(Y,n.width),we=window.innerWidth-U,Te=Ne(l,U,Math.max(U,we-Ie));y.value.style.minWidth=`${Y}px`,y.value.style.left=`${Te}px`}else{const K=n.right-d.right,l=window.innerWidth-h.right-K,N=window.innerWidth-P.right-l,Y=P.width+N,Ie=Math.max(Y,n.width),we=window.innerWidth-U,Te=Ne(l,U,Math.max(U,we-Ie));y.value.style.minWidth=`${Y}px`,y.value.style.right=`${Te}px`}const f=r().map(K=>K.ref),q=window.innerHeight-U*2,T=x.value.scrollHeight,z=window.getComputedStyle(w.value),Q=Number.parseInt(z.borderTopWidth,10),fe=Number.parseInt(z.paddingTop,10),p=Number.parseInt(z.borderBottomWidth,10),ge=Number.parseInt(z.paddingBottom,10),ie=Q+fe+T+ge+p,xe=Math.min(I.value.offsetHeight*5,ie),ee=window.getComputedStyle(x.value),qe=Number.parseInt(ee.paddingTop,10),Ce=Number.parseInt(ee.paddingBottom,10),te=P.top+P.height/2-U,L=q-te,g=I.value.offsetHeight/2,H=I.value.offsetTop+g,F=Q+fe+H,ne=ie-F;if(F<=te){const K=I.value===f[f.length-1];y.value.style.bottom="0px";const l=w.value.clientHeight-x.value.offsetTop-x.value.offsetHeight,N=Math.max(L,g+(K?Ce:0)+l+p),Y=F+N;y.value.style.height=`${Y}px`}else{const K=I.value===f[0];y.value.style.top="0px";const N=Math.max(te,Q+x.value.offsetTop+(K?qe:0)+g)+ne;y.value.style.height=`${N}px`,x.value.scrollTop=F-te+x.value.offsetTop}y.value.style.margin=`${U}px 0`,y.value.style.minHeight=`${xe}px`,y.value.style.maxHeight=`${q}px`,t("placed"),requestAnimationFrame(()=>S.value=!0)}}const G=B("");le(async()=>{await ue(),A(),w.value&&(G.value=window.getComputedStyle(w.value).zIndex)});function M(P){P&&v.value===!0&&(A(),$?.(),v.value=!1)}return tt(u.triggerElement,()=>{A()}),Mt({contentWrapper:y,shouldExpandOnScrollRef:S,onScrollButtonChange:M}),(P,n)=>(o(),R("div",{ref_key:"contentWrapperElement",ref:y,style:at({display:"flex",flexDirection:"column",position:"fixed",zIndex:G.value})},[V(e(X),E({ref:e(k),style:{boxSizing:"border-box",maxHeight:"100%"}},{...P.$attrs,...a}),{default:b(()=>[C(P.$slots,"default")]),_:3},16)],4))}}),Wt=Kt,Ht=D({__name:"SelectArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(i){const s=i,a=J(),t=Se(je);return(r,u)=>e(a).open.value&&e(t).position==="popper"?(o(),_(e(Ct),_e(E({key:0},s)),{default:b(()=>[C(r.$slots,"default")]),_:3},16)):W("v-if",!0)}}),jt=Ht,Gt=D({inheritAttrs:!1,__name:"SelectProvider",props:{context:{type:Object,required:!0}},setup(i){return He(i.context),Ge(je),(a,t)=>C(a.$slots,"default")}}),Ut=Gt;const Yt={key:1};var Qt=D({inheritAttrs:!1,__name:"SelectContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["closeAutoFocus","escapeKeyDown","pointerDownOutside"],setup(i,{emit:s}){const a=i,r=Ke(a,s),u=J(),m=B();le(()=>{m.value=new DocumentFragment});const S=B(),v=j(()=>a.forceMount||u.open.value),y=B(v.value);return Be(v,()=>{setTimeout(()=>y.value=v.value)}),(k,w)=>v.value||y.value||S.value?.present?(o(),_(e(lt),{key:0,ref_key:"presenceRef",ref:S,present:v.value},{default:b(()=>[V(Vt,_e(Pe({...e(r),...k.$attrs})),{default:b(()=>[C(k.$slots,"default")]),_:3},16)]),_:3},8,["present"])):m.value?(o(),R("div",Yt,[(o(),_(it,{to:m.value},[V(Ut,{context:e(u)},{default:b(()=>[C(k.$slots,"default")]),_:3},8,["context"])],8,["to"]))])):W("v-if",!0)}}),Xt=Qt;const[Jt,Zt]=ce("SelectGroup");var ea=D({__name:"SelectGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const s=i,a=Ae(void 0,"reka-select-group");return Zt({id:a}),(t,r)=>(o(),_(e(X),E({role:"group"},s,{"aria-labelledby":e(a)}),{default:b(()=>[C(t.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),ta=ea;const[Ue,aa]=ce("SelectItem");var la=D({__name:"SelectItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(i,{emit:s}){const a=i,t=s,{disabled:r}=Ve(a),u=J(),m=Se(),{forwardRef:S,currentElement:v}=be(),{CollectionItem:y}=pe(),k=j(()=>he(u.modelValue?.value,a.value,u.by)),w=B(!1),x=B(a.textValue??""),I=Ae(void 0,"reka-select-item-text"),c="select.select";async function $(n){if(n.defaultPrevented)return;const h={originalEvent:n,value:a.value};nt(c,A,h)}async function A(n){await ue(),t("select",n),!n.defaultPrevented&&(r.value||(u.onValueChange(a.value),u.multiple.value||u.onOpenChange(!1)))}async function G(n){await ue(),!n.defaultPrevented&&(r.value?m.onItemLeave?.():n.currentTarget?.focus({preventScroll:!0}))}async function M(n){await ue(),!n.defaultPrevented&&n.currentTarget===rt()&&m.onItemLeave?.()}async function P(n){await ue(),!(n.defaultPrevented||m.searchRef?.value!==""&&n.key===" ")&&(Pt.includes(n.key)&&$(n),n.key===" "&&n.preventDefault())}if(a.value==="")throw new Error("A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return le(()=>{v.value&&m.itemRefCallback(v.value,a.value,a.disabled)}),aa({value:a.value,disabled:r,textId:I,isSelected:k,onItemTextChange:n=>{x.value=((x.value||n?.textContent)??"").trim()}}),(n,h)=>(o(),_(e(y),{value:{textValue:x.value}},{default:b(()=>[V(e(X),{ref:e(S),role:"option","aria-labelledby":e(I),"data-highlighted":w.value?"":void 0,"aria-selected":k.value,"data-state":k.value?"checked":"unchecked","aria-disabled":e(r)||void 0,"data-disabled":e(r)?"":void 0,tabindex:e(r)?void 0:-1,as:n.as,"as-child":n.asChild,onFocus:h[0]||(h[0]=d=>w.value=!0),onBlur:h[1]||(h[1]=d=>w.value=!1),onPointerup:$,onPointerdown:h[2]||(h[2]=d=>{d.currentTarget.focus({preventScroll:!0})}),onTouchend:h[3]||(h[3]=de(()=>{},["prevent","stop"])),onPointermove:G,onPointerleave:M,onKeydown:P},{default:b(()=>[C(n.$slots,"default")]),_:3},8,["aria-labelledby","data-highlighted","aria-selected","data-state","aria-disabled","data-disabled","tabindex","as","as-child"])]),_:3},8,["value"]))}}),ia=la,na=D({__name:"SelectItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(i){const s=i,a=Ue();return(t,r)=>e(a).isSelected.value?(o(),_(e(X),E({key:0,"aria-hidden":"true"},s),{default:b(()=>[C(t.$slots,"default")]),_:3},16)):W("v-if",!0)}}),ra=na,oa=D({inheritAttrs:!1,__name:"SelectItemText",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(i){const s=i,a=J(),t=Se(),r=Ue(),{forwardRef:u,currentElement:m}=be(),S=j(()=>({value:r.value,disabled:r.disabled.value,textContent:m.value?.textContent??r.value?.toString()??""}));return le(()=>{m.value&&(r.onItemTextChange(m.value),t.itemTextRefCallback(m.value,r.value,r.disabled.value),a.onOptionAdd(S.value))}),ot(()=>{a.onOptionRemove(S.value)}),(v,y)=>(o(),_(e(X),E({id:e(r).textId,ref:e(u)},{...s,...v.$attrs}),{default:b(()=>[C(v.$slots,"default")]),_:3},16,["id"]))}}),sa=oa,ua=D({__name:"SelectLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(i){const s=i,a=Jt({id:""});return(t,r)=>(o(),_(e(X),E(s,{id:e(a).id}),{default:b(()=>[C(t.$slots,"default")]),_:3},16,["id"]))}}),da=ua,ca=D({__name:"SelectPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(i){const s=i;return(a,t)=>(o(),_(e(st),_e(Pe(s)),{default:b(()=>[C(a.$slots,"default")]),_:3},16))}}),pa=ca,fa=D({__name:"SelectSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const s=i;return(a,t)=>(o(),_(e(X),E({"aria-hidden":"true"},s),{default:b(()=>[C(a.$slots,"default")]),_:3},16))}}),ga=fa,ma=D({__name:"SelectTrigger",props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(i){const s=i,a=J(),{forwardRef:t,currentElement:r}=be(),u=j(()=>a.disabled?.value||s.disabled);a.contentId||=Ae(void 0,"reka-select-content"),le(()=>{a.onTriggerChange(r.value)});const{getItems:m}=pe(),{search:S,handleTypeaheadSearch:v,resetTypeahead:y}=We();function k(){u.value||(a.onOpenChange(!0),y())}function w(x){k(),a.triggerPointerDownPosRef.value={x:Math.round(x.pageX),y:Math.round(x.pageY)}}return(x,I)=>(o(),_(e(It),{"as-child":"",reference:x.reference},{default:b(()=>[V(e(X),{ref:e(t),role:"combobox",type:x.as==="button"?"button":void 0,"aria-controls":e(a).contentId,"aria-expanded":e(a).open.value||!1,"aria-required":e(a).required?.value,"aria-autocomplete":"none",disabled:u.value,dir:e(a)?.dir.value,"data-state":e(a)?.open.value?"open":"closed","data-disabled":u.value?"":void 0,"data-placeholder":e(At)(e(a).modelValue?.value)?"":void 0,"as-child":x.asChild,as:x.as,onClick:I[0]||(I[0]=c=>{c?.currentTarget?.focus()}),onPointerdown:I[1]||(I[1]=c=>{if(c.pointerType==="touch")return c.preventDefault();const $=c.target;$.hasPointerCapture(c.pointerId)&&$.releasePointerCapture(c.pointerId),c.button===0&&c.ctrlKey===!1&&(w(c),c.preventDefault())}),onPointerup:I[2]||(I[2]=de(c=>{c.pointerType==="touch"&&w(c)},["prevent"])),onKeydown:I[3]||(I[3]=c=>{const $=e(S)!=="";!(c.ctrlKey||c.altKey||c.metaKey)&&c.key.length===1&&$&&c.key===" "||(e(v)(c.key,e(m)()),e(Bt).includes(c.key)&&(k(),c.preventDefault()))})},{default:b(()=>[C(x.$slots,"default")]),_:3},8,["type","aria-controls","aria-expanded","aria-required","disabled","dir","data-state","data-disabled","data-placeholder","as-child","as"])]),_:3},8,["reference"]))}}),va=ma;const ya={slots:{base:["relative group rounded-md inline-flex items-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",value:"truncate pointer-events-none",placeholder:"truncate text-dimmed",arrow:"fill-default",content:"max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col",viewport:"relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",group:"p-1 isolate",empty:"text-center text-muted",label:"font-semibold text-highlighted",separator:"-mx-1 my-1 h-px bg-border",item:["group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50","transition-colors before:transition-colors"],itemLeadingIcon:["shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default","transition-colors"],itemLeadingAvatar:"shrink-0",itemLeadingAvatarSize:"",itemLeadingChip:"shrink-0",itemLeadingChipSize:"",itemTrailing:"ms-auto inline-flex gap-1.5 items-center",itemTrailingIcon:"shrink-0",itemWrapper:"flex-1 flex flex-col min-w-0",itemLabel:"truncate",itemDescription:"truncate text-muted"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-xs gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1 text-[10px]/3 gap-1",item:"p-1 text-xs gap-1",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-1 text-xs"},sm:{base:"px-2.5 py-1.5 text-xs gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1.5 text-[10px]/3 gap-1.5",item:"p-1.5 text-xs gap-1.5",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-1.5 text-xs"},md:{base:"px-2.5 py-1.5 text-sm gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-1.5 text-xs gap-1.5",item:"p-1.5 text-sm gap-1.5",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-1.5 text-sm"},lg:{base:"px-3 py-2 text-sm gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-2 text-xs gap-2",item:"p-2 text-sm gap-2",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-2 text-sm"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",label:"p-2 text-sm gap-2",item:"p-2 text-base gap-2",itemLeadingIcon:"size-6",itemLeadingAvatarSize:"xs",itemLeadingChip:"size-6",itemLeadingChipSize:"lg",itemTrailingIcon:"size-6",empty:"p-2 text-base"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-success"},{color:"info",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-info"},{color:"warning",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-warning"},{color:"error",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-error"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"focus:ring-2 focus:ring-inset focus:ring-inverted"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},ka=Object.assign({inheritAttrs:!1},{__name:"USelect",props:{id:{type:String,required:!1},placeholder:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},valueKey:{type:null,required:!1,default:"value"},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:Object,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:null,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["update:open","change","blur","focus","update:modelValue"],setup(i,{expose:s,emit:a}){const t=i,r=a,u=ut(),m=dt(),S=Ke(ct(t,"open","defaultOpen","disabled","autocomplete","required","multiple"),r),v=pt(re(()=>t.portal)),y=re(()=>Oe(t.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),k=re(()=>t.arrow),{emitFormChange:w,emitFormInput:x,emitFormBlur:I,emitFormFocus:c,size:$,color:A,id:G,name:M,highlight:P,disabled:n,ariaAttrs:h}=ft(t),{orientation:d,size:f}=gt(t),{isLeading:q,isTrailing:T,leadingIconName:z,trailingIconName:Q}=mt(re(()=>Oe(t,{trailingIcon:m.ui.icons.chevronDown}))),fe=j(()=>f.value||$.value),p=j(()=>$e({extend:$e(ya),...m.ui?.select||{}})({color:A.value,variant:t.variant,size:fe?.value,loading:t.loading,highlight:P.value,leading:q.value||!!t.avatar||!!u.leading,trailing:T.value||!!u.trailing,fieldGroup:d.value})),ge=j(()=>t.items?.length?vt(t.items)?t.items:[t.items]:[]),ie=j(()=>ge.value.flatMap(g=>g));function xe(g){if(t.multiple&&Array.isArray(g)){const H=g.map(F=>Re(ie.value,F,{labelKey:t.labelKey,valueKey:t.valueKey})).filter(F=>F!=null&&F!=="");return H.length>0?H.join(", "):void 0}return Re(ie.value,g,{labelKey:t.labelKey,valueKey:t.valueKey})}const ee=yt("triggerRef");function qe(){t.autofocus&&ee.value?.$el?.focus({focusVisible:!0})}le(()=>{setTimeout(()=>{qe()},t.autofocusDelay)});function Ce(g){t.modelModifiers?.trim&&(g=g?.trim()??null),t.modelModifiers?.number&&(g=bt(g)),t.modelModifiers?.nullable&&(g??=null),t.modelModifiers?.optional&&(g??=void 0);const H=new Event("change",{target:{value:g}});r("change",H),w(),x()}function te(g){if(g){const H=new FocusEvent("focus");r("focus",H),c()}else{const H=new FocusEvent("blur");r("blur",H),I()}}function L(g){return typeof g=="object"&&g!==null}return s({triggerRef:re(()=>ee.value?.$el)}),(g,H)=>(o(),_(e(Ot),E({name:e(M)},e(S),{autocomplete:i.autocomplete,disabled:e(n),"default-value":i.defaultValue,"model-value":i.modelValue,"onUpdate:modelValue":Ce,"onUpdate:open":te}),{default:b(({modelValue:F,open:ne})=>[V(e(va),E({id:e(G),ref_key:"triggerRef",ref:ee,"data-slot":"base",class:p.value.base({class:[t.ui?.base,t.class]})},{...g.$attrs,...e(h)}),{default:b(()=>[e(q)||i.avatar||u.leading?(o(),R("span",{key:0,"data-slot":"leading",class:O(p.value.leading({class:t.ui?.leading}))},[C(g.$slots,"leading",{modelValue:F,open:ne,ui:p.value},()=>[e(q)&&e(z)?(o(),_(me,{key:0,name:e(z),"data-slot":"leadingIcon",class:O(p.value.leadingIcon({class:t.ui?.leadingIcon}))},null,8,["name","class"])):i.avatar?(o(),_(De,E({key:1,size:t.ui?.itemLeadingAvatarSize||p.value.itemLeadingAvatarSize()},i.avatar,{"data-slot":"itemLeadingAvatar",class:p.value.itemLeadingAvatar({class:t.ui?.itemLeadingAvatar})}),null,16,["size","class"])):W("",!0)])],2)):W("",!0),C(g.$slots,"default",{modelValue:F,open:ne,ui:p.value},()=>[(o(!0),R(ae,null,ve([xe(F)],Z=>(o(),R(ae,{key:Z},[Z!=null?(o(),R("span",{key:0,"data-slot":"value",class:O(p.value.value({class:t.ui?.value}))},oe(Z),3)):(o(),R("span",{key:1,"data-slot":"placeholder",class:O(p.value.placeholder({class:t.ui?.placeholder}))},oe(i.placeholder??" "),3))],64))),128))]),e(T)||u.trailing?(o(),R("span",{key:1,"data-slot":"trailing",class:O(p.value.trailing({class:t.ui?.trailing}))},[C(g.$slots,"trailing",{modelValue:F,open:ne,ui:p.value},()=>[e(Q)?(o(),_(me,{key:0,name:e(Q),"data-slot":"trailingIcon",class:O(p.value.trailingIcon({class:t.ui?.trailingIcon}))},null,8,["name","class"])):W("",!0)])],2)):W("",!0)]),_:2},1040,["id","class"]),V(e(pa),_e(Pe(e(v))),{default:b(()=>[V(e(Xt),E({"data-slot":"content",class:p.value.content({class:t.ui?.content})},y.value),{default:b(()=>[C(g.$slots,"content-top"),ye("div",{role:"presentation","data-slot":"viewport",class:O(p.value.viewport({class:t.ui?.viewport}))},[(o(!0),R(ae,null,ve(ge.value,(Z,K)=>(o(),_(e(ta),{key:`group-${K}`,"data-slot":"group",class:O(p.value.group({class:t.ui?.group}))},{default:b(()=>[(o(!0),R(ae,null,ve(Z,(l,N)=>(o(),R(ae,{key:`group-${K}-${N}`},[L(l)&&l.type==="label"?(o(),_(e(da),{key:0,"data-slot":"label",class:O(p.value.label({class:[t.ui?.label,l.ui?.label,l.class]}))},{default:b(()=>[ke(oe(e(se)(l,t.labelKey)),1)]),_:2},1032,["class"])):L(l)&&l.type==="separator"?(o(),_(e(ga),{key:1,"data-slot":"separator",class:O(p.value.separator({class:[t.ui?.separator,l.ui?.separator,l.class]}))},null,8,["class"])):(o(),_(e(ia),{key:2,"data-slot":"item",class:O(p.value.item({class:[t.ui?.item,L(l)&&l.ui?.item,L(l)&&l.class]})),disabled:L(l)&&l.disabled,value:L(l)?e(se)(l,t.valueKey):l,onSelect:Y=>L(l)&&l.onSelect?.(Y)},{default:b(()=>[C(g.$slots,"item",{item:l,index:N,ui:p.value},()=>[C(g.$slots,"item-leading",{item:l,index:N,ui:p.value},()=>[L(l)&&l.icon?(o(),_(me,{key:0,name:l.icon,"data-slot":"itemLeadingIcon",class:O(p.value.itemLeadingIcon({class:[t.ui?.itemLeadingIcon,l.ui?.itemLeadingIcon]}))},null,8,["name","class"])):L(l)&&l.avatar?(o(),_(De,E({key:1,size:l.ui?.itemLeadingAvatarSize||t.ui?.itemLeadingAvatarSize||p.value.itemLeadingAvatarSize()},{ref_for:!0},l.avatar,{"data-slot":"itemLeadingAvatar",class:p.value.itemLeadingAvatar({class:[t.ui?.itemLeadingAvatar,l.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):L(l)&&l.chip?(o(),_(ht,E({key:2,size:l.ui?.itemLeadingChipSize||t.ui?.itemLeadingChipSize||p.value.itemLeadingChipSize(),inset:"",standalone:""},{ref_for:!0},l.chip,{"data-slot":"itemLeadingChip",class:p.value.itemLeadingChip({class:[t.ui?.itemLeadingChip,l.ui?.itemLeadingChip]})}),null,16,["size","class"])):W("",!0)]),ye("span",{"data-slot":"itemWrapper",class:O(p.value.itemWrapper({class:[t.ui?.itemWrapper,L(l)&&l.ui?.itemWrapper]}))},[V(e(sa),{"data-slot":"itemLabel",class:O(p.value.itemLabel({class:[t.ui?.itemLabel,L(l)&&l.ui?.itemLabel]}))},{default:b(()=>[C(g.$slots,"item-label",{item:l,index:N},()=>[ke(oe(L(l)?e(se)(l,t.labelKey):l),1)])]),_:2},1032,["class"]),L(l)&&(e(se)(l,t.descriptionKey)||u["item-description"])?(o(),R("span",{key:0,"data-slot":"itemDescription",class:O(p.value.itemDescription({class:[t.ui?.itemDescription,L(l)&&l.ui?.itemDescription]}))},[C(g.$slots,"item-description",{item:l,index:N},()=>[ke(oe(e(se)(l,t.descriptionKey)),1)])],2)):W("",!0)],2),ye("span",{"data-slot":"itemTrailing",class:O(p.value.itemTrailing({class:[t.ui?.itemTrailing,L(l)&&l.ui?.itemTrailing]}))},[C(g.$slots,"item-trailing",{item:l,index:N,ui:p.value}),V(e(ra),{"as-child":""},{default:b(()=>[V(me,{name:i.selectedIcon||e(m).ui.icons.check,"data-slot":"itemTrailingIcon",class:O(p.value.itemTrailingIcon({class:[t.ui?.itemTrailingIcon,L(l)&&l.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))],64))),128))]),_:2},1032,["class"]))),128))],2),C(g.$slots,"content-bottom"),i.arrow?(o(),_(e(jt),E({key:0},k.value,{"data-slot":"arrow",class:p.value.arrow({class:t.ui?.arrow})}),null,16,["class"])):W("",!0)]),_:3},16,["class"])]),_:3},16)]),_:3},16,["name","autocomplete","disabled","default-value","model-value"]))}});export{ka as _};
@@ -1 +0,0 @@
1
- import{e as V,a as H,aP as X,aQ as L,c as _,aR as Z,bn as ee,Q,R as j,S as P,T as z,C as g,a3 as U,bm as B,al as R,a4 as Y,k as te,a0 as M,a1 as le,V as ae,bo as $}from"./2dNDtTiv.js";import{R as ne}from"./DH4YkDAi.js";import{u as re}from"./BIXrSYwR.js";import{f as O}from"./DtjjnHnt.js";import{u as ue}from"./CQqCBrXj.js";import{R as ie,M as se}from"./CYPO5o_C.js";function de(r,f){const e=V(),o=(t,S)=>{if(f.multiple&&Array.isArray(r.value))if(f.selectionBehavior==="replace")r.value=[t],e.value=t;else{const h=r.value.findIndex(i=>S(i));h!==-1?r.value=r.value.filter((i,p)=>p!==h):r.value=[...r.value,t]}else f.selectionBehavior==="replace"?r.value={...t}:!Array.isArray(r.value)&&S(r.value)?r.value=void 0:r.value={...t};return r.value};function x(t,S,h,i){if(!e?.value||!f.multiple||!Array.isArray(r.value))return;const A=h().filter(C=>C.ref.dataset.disabled!=="").find(C=>C.ref===S)?.value;if(!A)return;let K=null;switch(t){case"prev":case"next":{K=O(i,e.value,A);break}case"first":{K=O(i,e.value,i?.[0]);break}case"last":{K=O(i,e.value,i?.[i.length-1]);break}}r.value=K}return{firstValue:e,onSelectItem:o,handleMultipleReplace:x}}function F(r){return r.reduce((f,e)=>(f.push(e),e.children&&f.push(...F(e.children)),f),[])}const[oe,ce]=Z("TreeRoot");var ve=H({__name:"TreeRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},items:{type:Array,required:!1},expanded:{type:Array,required:!1},defaultExpanded:{type:Array,required:!1},getKey:{type:Function,required:!0},getChildren:{type:Function,required:!1,default:r=>r.children},selectionBehavior:{type:String,required:!1,default:"toggle"},multiple:{type:Boolean,required:!1,skipCheck:!0},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},propagateSelect:{type:Boolean,required:!1},bubbleSelect:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"ul"}},emits:["update:modelValue","update:expanded"],setup(r,{emit:f}){const e=r,o=f,{items:x,multiple:t,disabled:S,propagateSelect:h,dir:i,bubbleSelect:p}=X(e),{handleTypeaheadSearch:A}=ue(),K=re(i),C=V(),k=V(!1),q=ee(),u=L(e,"modelValue",o,{defaultValue:e.defaultValue??(t.value?[]:void 0),passive:!0,deep:!0}),v=L(e,"expanded",o,{defaultValue:e.defaultExpanded??[],passive:e.expanded===void 0,deep:!0}),{onSelectItem:l,handleMultipleReplace:n}=de(u,e),s=_(()=>t.value&&Array.isArray(u.value)?u.value.map(a=>e.getKey(a)):[e.getKey(u.value??{})]);function I(a,d=1,y){return a.reduce((c,m,w)=>{const G=e.getKey(m),N=e.getChildren(m),J=v.value.includes(G),W={_id:G,value:m,index:w,level:d,parentItem:y,hasChildren:!!N,bind:{value:m,level:d,"aria-setsize":a.length,"aria-posinset":w+1}};return c.push(W),N&&J&&c.push(...I(N,d+1,m)),c},[])}const T=_(()=>{const a=e.items;return v.value.map(d=>d),I(a??[])});function E(a){if(k.value)q.trigger(a);else{const d=C.value?.getItems()??[];A(a.key,d)}}function b(a){if(k.value)return;const d=se[a.key];te(()=>{n(d,M(),C.value?.getItems,T.value.map(y=>y.value))})}function D(a){if(a.parentItem!=null&&Array.isArray(u.value)&&e.multiple){const d=T.value.find(y=>a.parentItem!=null&&e.getKey(y.value)===e.getKey(a.parentItem));d!=null&&(e.getChildren(d.value)?.every(c=>u.value.find(m=>e.getKey(m)===e.getKey(c)))?u.value=[...u.value,d.value]:u.value=u.value.filter(c=>e.getKey(c)!==e.getKey(d.value)),D(d))}}return ce({modelValue:u,selectedKeys:s,onSelect:a=>{const d=c=>e.getKey(c??{})===e.getKey(a),y=e.multiple&&Array.isArray(u.value)?u.value?.findIndex(d)!==-1:void 0;if(l(a,d),e.bubbleSelect&&e.multiple&&Array.isArray(u.value)){const c=T.value.find(m=>e.getKey(m.value)===e.getKey(a));c!=null&&D(c)}if(e.propagateSelect&&e.multiple&&Array.isArray(u.value)){const c=F(e.getChildren(a)??[]);y?u.value=[...u.value].filter(m=>!c.some(w=>e.getKey(m??{})===e.getKey(w))):u.value=[...u.value,...c]}},expanded:v,onToggle(a){if(!(a?e.getChildren(a):void 0))return;const y=e.getKey(a)??a;v.value.includes(y)?v.value=v.value.filter(c=>c!==y):v.value=[...v.value,y]},getKey:e.getKey,getChildren:e.getChildren,items:x,expandedItems:T,disabled:S,multiple:t,dir:K,propagateSelect:h,bubbleSelect:p,isVirtual:k,virtualKeydownHook:q,handleMultipleReplace:n}),(a,d)=>(j(),Q(g(ie),{ref_key:"rovingFocusGroupRef",ref:C,"as-child":"",orientation:"vertical",dir:g(K)},{default:P(()=>[z(g(U),{role:"tree",as:a.as,"as-child":a.asChild,"aria-multiselectable":g(t)?!0:void 0,onKeydown:[E,B(R(b,["shift"]),["up","down"])]},{default:P(()=>[Y(a.$slots,"default",{flattenItems:T.value,modelValue:g(u),expanded:g(v)})]),_:3},8,["as","as-child","aria-multiselectable","onKeydown"])]),_:3},8,["dir"]))}}),be=ve;const fe="tree.select",pe="tree.toggle";var ye=H({inheritAttrs:!1,__name:"TreeItem",props:{value:{type:null,required:!0},level:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"li"}},emits:["select","toggle"],setup(r,{expose:f,emit:e}){const o=r,x=e,t=oe(),{getItems:S}=le(),h=_(()=>!!t.getChildren(o.value)),i=_(()=>{const l=t.getKey(o.value);return t.expanded.value.includes(l)}),p=_(()=>{const l=t.getKey(o.value);return t.selectedKeys.value.includes(l)}),A=_(()=>{if(t.bubbleSelect.value&&h.value&&Array.isArray(t.modelValue.value)){const l=F(t.getChildren(o.value)||[]);return l.some(n=>t.modelValue.value.find(s=>t.getKey(s)===t.getKey(n)))&&!l.every(n=>t.modelValue.value.find(s=>t.getKey(s)===t.getKey(n)))}else return t.propagateSelect.value&&p.value&&h.value&&Array.isArray(t.modelValue.value)?!F(t.getChildren(o.value)||[]).every(n=>t.modelValue.value.find(s=>t.getKey(s)===t.getKey(n))):void 0});function K(l){if(h.value)if(i.value){const n=S().map(b=>b.ref),s=M(),I=n.indexOf(s),E=[...n].slice(I).find(b=>Number(b.getAttribute("data-indent"))===o.level+1);E&&E.focus()}else v(l)}function C(l){if(i.value)v(l);else{const n=S().map(b=>b.ref),s=M(),I=n.indexOf(s),E=[...n].slice(0,I).reverse().find(b=>Number(b.getAttribute("data-indent"))===o.level-1);E&&E.focus()}}async function k(l){x("select",l),!l?.defaultPrevented&&t.onSelect(o.value)}async function q(l){x("toggle",l),!l?.defaultPrevented&&t.onToggle(o.value)}async function u(l){if(!l)return;const n={originalEvent:l,value:o.value,isExpanded:i.value,isSelected:p.value};$(fe,k,n)}async function v(l){if(!l)return;const n={originalEvent:l,value:o.value,isExpanded:i.value,isSelected:p.value};$(pe,q,n)}return f({isExpanded:i,isSelected:p,isIndeterminate:A,handleToggle:()=>t.onToggle(o.value),handleSelect:()=>t.onSelect(o.value)}),(l,n)=>(j(),Q(g(ne),{"as-child":"",value:l.value,"allow-shift-key":""},{default:P(()=>[z(g(U),ae(l.$attrs,{role:"treeitem",as:l.as,"as-child":l.asChild,"aria-selected":p.value,"aria-expanded":h.value?i.value:void 0,"aria-level":l.level,"data-indent":l.level,"data-selected":p.value?"":void 0,"data-expanded":i.value?"":void 0,onKeydown:[B(R(u,["self","prevent"]),["enter","space"]),n[0]||(n[0]=B(R(s=>g(t).dir.value==="ltr"?K(s):C(s),["prevent"]),["right"])),n[1]||(n[1]=B(R(s=>g(t).dir.value==="ltr"?C(s):K(s),["prevent"]),["left"]))],onClick:n[2]||(n[2]=R(s=>{u(s),v(s)},["stop"]))}),{default:P(()=>[Y(l.$slots,"default",{isExpanded:i.value,isSelected:p.value,isIndeterminate:A.value,handleSelect:()=>g(t).onSelect(l.value),handleToggle:()=>g(t).onToggle(l.value)})]),_:3},16,["as","as-child","aria-selected","aria-expanded","aria-level","data-indent","data-selected","data-expanded","onKeydown"])]),_:3},8,["value"]))}}),Ae=ye;export{be as T,Ae as a,oe as i};