agim-cli 1.2.129 → 1.2.131

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 (186) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/dist/core/llm/agent-loop.d.ts.map +1 -1
  3. package/dist/core/llm/agent-loop.js +9 -1
  4. package/dist/core/llm/agent-loop.js.map +1 -1
  5. package/dist/core/llm/plan-exit-dispatcher.d.ts +27 -0
  6. package/dist/core/llm/plan-exit-dispatcher.d.ts.map +1 -0
  7. package/dist/core/llm/plan-exit-dispatcher.js +210 -0
  8. package/dist/core/llm/plan-exit-dispatcher.js.map +1 -0
  9. package/dist/core/plan-history.d.ts +34 -0
  10. package/dist/core/plan-history.d.ts.map +1 -0
  11. package/dist/core/plan-history.js +89 -0
  12. package/dist/core/plan-history.js.map +1 -0
  13. package/dist/plugins/agents/native/index.d.ts.map +1 -1
  14. package/dist/plugins/agents/native/index.js +29 -2
  15. package/dist/plugins/agents/native/index.js.map +1 -1
  16. package/dist/web/public/assets/{a2a-Bp_OpTfW.js → a2a-Rq5d7Xk5.js} +2 -2
  17. package/dist/web/public/assets/{a2a-Bp_OpTfW.js.map → a2a-Rq5d7Xk5.js.map} +1 -1
  18. package/dist/web/public/assets/{activity-B5erGuWa.js → activity-FCJjBNRM.js} +2 -2
  19. package/dist/web/public/assets/{activity-B5erGuWa.js.map → activity-FCJjBNRM.js.map} +1 -1
  20. package/dist/web/public/assets/{admins-D3j7wkvL.js → admins-9fFdLRCv.js} +2 -2
  21. package/dist/web/public/assets/{admins-D3j7wkvL.js.map → admins-9fFdLRCv.js.map} +1 -1
  22. package/dist/web/public/assets/{agents-Cb3Vb2-8.js → agents-CiWiDAvY.js} +2 -2
  23. package/dist/web/public/assets/{agents-Cb3Vb2-8.js.map → agents-CiWiDAvY.js.map} +1 -1
  24. package/dist/web/public/assets/{approvals-BZULwrl5.js → approvals-4gNB4E5r.js} +2 -2
  25. package/dist/web/public/assets/{approvals-BZULwrl5.js.map → approvals-4gNB4E5r.js.map} +1 -1
  26. package/dist/web/public/assets/{arrow-down-OdSfpgG4.js → arrow-down-CL6JRd2c.js} +2 -2
  27. package/dist/web/public/assets/{arrow-down-OdSfpgG4.js.map → arrow-down-CL6JRd2c.js.map} +1 -1
  28. package/dist/web/public/assets/{arrow-up-DtrvOH7Z.js → arrow-up-B47-Pj-X.js} +2 -2
  29. package/dist/web/public/assets/{arrow-up-DtrvOH7Z.js.map → arrow-up-B47-Pj-X.js.map} +1 -1
  30. package/dist/web/public/assets/{asks-BaVT-eFe.js → asks-DPTxh_Os.js} +2 -2
  31. package/dist/web/public/assets/{asks-BaVT-eFe.js.map → asks-DPTxh_Os.js.map} +1 -1
  32. package/dist/web/public/assets/{audit-CSk2rv6z.js → audit-Dw3mL-g7.js} +2 -2
  33. package/dist/web/public/assets/{audit-CSk2rv6z.js.map → audit-Dw3mL-g7.js.map} +1 -1
  34. package/dist/web/public/assets/{bell-DifbuUaI.js → bell-ojwGPpS7.js} +2 -2
  35. package/dist/web/public/assets/{bell-DifbuUaI.js.map → bell-ojwGPpS7.js.map} +1 -1
  36. package/dist/web/public/assets/{bgjobs-D3wsuZBR.js → bgjobs-DDTjejCS.js} +2 -2
  37. package/dist/web/public/assets/{bgjobs-D3wsuZBR.js.map → bgjobs-DDTjejCS.js.map} +1 -1
  38. package/dist/web/public/assets/{brain-BH9ObIfA.js → brain-wzaKeCbt.js} +2 -2
  39. package/dist/web/public/assets/{brain-BH9ObIfA.js.map → brain-wzaKeCbt.js.map} +1 -1
  40. package/dist/web/public/assets/{briefcase-CZqK5oy3.js → briefcase-CCAq-ik6.js} +2 -2
  41. package/dist/web/public/assets/{briefcase-CZqK5oy3.js.map → briefcase-CCAq-ik6.js.map} +1 -1
  42. package/dist/web/public/assets/{chat-gOU1pe0E.js → chat-CbSvPFpG.js} +2 -2
  43. package/dist/web/public/assets/{chat-gOU1pe0E.js.map → chat-CbSvPFpG.js.map} +1 -1
  44. package/dist/web/public/assets/{chevron-left-BtuaBNRZ.js → chevron-left-bpKHh9Bu.js} +2 -2
  45. package/dist/web/public/assets/{chevron-left-BtuaBNRZ.js.map → chevron-left-bpKHh9Bu.js.map} +1 -1
  46. package/dist/web/public/assets/{chevron-right-uDVVnuGu.js → chevron-right-CUlLpETY.js} +2 -2
  47. package/dist/web/public/assets/{chevron-right-uDVVnuGu.js.map → chevron-right-CUlLpETY.js.map} +1 -1
  48. package/dist/web/public/assets/{circle-check-VgYKnBhy.js → circle-check-D98QQwz0.js} +2 -2
  49. package/dist/web/public/assets/{circle-check-VgYKnBhy.js.map → circle-check-D98QQwz0.js.map} +1 -1
  50. package/dist/web/public/assets/{circle-check-big-7idAFtyL.js → circle-check-big-BP-0K1le.js} +2 -2
  51. package/dist/web/public/assets/{circle-check-big-7idAFtyL.js.map → circle-check-big-BP-0K1le.js.map} +1 -1
  52. package/dist/web/public/assets/{circle-x-8dhkvHlT.js → circle-x-Et3rwVPd.js} +2 -2
  53. package/dist/web/public/assets/{circle-x-8dhkvHlT.js.map → circle-x-Et3rwVPd.js.map} +1 -1
  54. package/dist/web/public/assets/{confirm-dialog-_BtUs6oW.js → confirm-dialog-6dKowsEt.js} +2 -2
  55. package/dist/web/public/assets/{confirm-dialog-_BtUs6oW.js.map → confirm-dialog-6dKowsEt.js.map} +1 -1
  56. package/dist/web/public/assets/{copy-Ba1min4z.js → copy-kCWCP9Wu.js} +2 -2
  57. package/dist/web/public/assets/{copy-Ba1min4z.js.map → copy-kCWCP9Wu.js.map} +1 -1
  58. package/dist/web/public/assets/{data-table-BVcXWtPw.js → data-table-BbNkr6tW.js} +2 -2
  59. package/dist/web/public/assets/{data-table-BVcXWtPw.js.map → data-table-BbNkr6tW.js.map} +1 -1
  60. package/dist/web/public/assets/{dialog-BVYFRXlI.js → dialog-Cv87qelJ.js} +2 -2
  61. package/dist/web/public/assets/{dialog-BVYFRXlI.js.map → dialog-Cv87qelJ.js.map} +1 -1
  62. package/dist/web/public/assets/{download-DYc5g_1W.js → download-Cv8u9PxC.js} +2 -2
  63. package/dist/web/public/assets/{download-DYc5g_1W.js.map → download-Cv8u9PxC.js.map} +1 -1
  64. package/dist/web/public/assets/{email-6vlGBJXY.js → email-BS3f2y7i.js} +2 -2
  65. package/dist/web/public/assets/{email-6vlGBJXY.js.map → email-BS3f2y7i.js.map} +1 -1
  66. package/dist/web/public/assets/{empty-state-WHzNYVaT.js → empty-state-CRnid5FY.js} +2 -2
  67. package/dist/web/public/assets/{empty-state-WHzNYVaT.js.map → empty-state-CRnid5FY.js.map} +1 -1
  68. package/dist/web/public/assets/{external-link-CfQZDer8.js → external-link-CzQc-c_P.js} +2 -2
  69. package/dist/web/public/assets/{external-link-CfQZDer8.js.map → external-link-CzQc-c_P.js.map} +1 -1
  70. package/dist/web/public/assets/{eye-PzqPB6N6.js → eye-DEBkfJiC.js} +2 -2
  71. package/dist/web/public/assets/{eye-PzqPB6N6.js.map → eye-DEBkfJiC.js.map} +1 -1
  72. package/dist/web/public/assets/{facts-NmBeyMpC.js → facts-O3FFqdD1.js} +2 -2
  73. package/dist/web/public/assets/{facts-NmBeyMpC.js.map → facts-O3FFqdD1.js.map} +1 -1
  74. package/dist/web/public/assets/{goals-BfMwQtYm.js → goals-pr5ky9rG.js} +2 -2
  75. package/dist/web/public/assets/{goals-BfMwQtYm.js.map → goals-pr5ky9rG.js.map} +1 -1
  76. package/dist/web/public/assets/{health-D46iQ6Hj.js → health-D_rfBsgq.js} +2 -2
  77. package/dist/web/public/assets/{health-D46iQ6Hj.js.map → health-D_rfBsgq.js.map} +1 -1
  78. package/dist/web/public/assets/{heart-pulse-BHz53Ggd.js → heart-pulse-203oH09r.js} +2 -2
  79. package/dist/web/public/assets/{heart-pulse-BHz53Ggd.js.map → heart-pulse-203oH09r.js.map} +1 -1
  80. package/dist/web/public/assets/{heartbeat-DBpc9rKL.js → heartbeat-B5yJoH-X.js} +2 -2
  81. package/dist/web/public/assets/{heartbeat-DBpc9rKL.js.map → heartbeat-B5yJoH-X.js.map} +1 -1
  82. package/dist/web/public/assets/{hot-D_-tARKX.js → hot-CXGeh4Oo.js} +2 -2
  83. package/dist/web/public/assets/{hot-D_-tARKX.js.map → hot-CXGeh4Oo.js.map} +1 -1
  84. package/dist/web/public/assets/{index-DXI13nSQ.js → index-CuNnG-5O.js} +16 -16
  85. package/dist/web/public/assets/index-CuNnG-5O.js.map +1 -0
  86. package/dist/web/public/assets/{installed-BtOgT0Ea.js → installed-CQKXZNEU.js} +2 -2
  87. package/dist/web/public/assets/{installed-BtOgT0Ea.js.map → installed-CQKXZNEU.js.map} +1 -1
  88. package/dist/web/public/assets/{jobs-DUoPbupO.js → jobs-DPxN8Ko0.js} +2 -2
  89. package/dist/web/public/assets/{jobs-DUoPbupO.js.map → jobs-DPxN8Ko0.js.map} +1 -1
  90. package/dist/web/public/assets/{layout-BpS7td-S.js → layout-4C_GhacH.js} +2 -2
  91. package/dist/web/public/assets/{layout-BpS7td-S.js.map → layout-4C_GhacH.js.map} +1 -1
  92. package/dist/web/public/assets/{layout-wuoOyazR.js → layout-CQXWA5Ak.js} +2 -2
  93. package/dist/web/public/assets/{layout-wuoOyazR.js.map → layout-CQXWA5Ak.js.map} +1 -1
  94. package/dist/web/public/assets/{layout-C3e8vPrG.js → layout-CxQy-DtV.js} +2 -2
  95. package/dist/web/public/assets/{layout-C3e8vPrG.js.map → layout-CxQy-DtV.js.map} +1 -1
  96. package/dist/web/public/assets/{layout-C1EVvCs8.js → layout-VOwsqNph.js} +2 -2
  97. package/dist/web/public/assets/{layout-C1EVvCs8.js.map → layout-VOwsqNph.js.map} +1 -1
  98. package/dist/web/public/assets/{layout-DkoRqhBs.js → layout-tAyuz3-F.js} +2 -2
  99. package/dist/web/public/assets/{layout-DkoRqhBs.js.map → layout-tAyuz3-F.js.map} +1 -1
  100. package/dist/web/public/assets/{llm-iuvigJxr.js → llm-i15cVS6k.js} +2 -2
  101. package/dist/web/public/assets/{llm-iuvigJxr.js.map → llm-i15cVS6k.js.map} +1 -1
  102. package/dist/web/public/assets/{loader-circle-BS5FFFg-.js → loader-circle-CVEo3Hwx.js} +2 -2
  103. package/dist/web/public/assets/{loader-circle-BS5FFFg-.js.map → loader-circle-CVEo3Hwx.js.map} +1 -1
  104. package/dist/web/public/assets/{map-pin-CRS6YW4i.js → map-pin-BlmDrPGJ.js} +2 -2
  105. package/dist/web/public/assets/{map-pin-CRS6YW4i.js.map → map-pin-BlmDrPGJ.js.map} +1 -1
  106. package/dist/web/public/assets/{mcp-PWEuZOJ_.js → mcp-9MlUdHAS.js} +2 -2
  107. package/dist/web/public/assets/{mcp-PWEuZOJ_.js.map → mcp-9MlUdHAS.js.map} +1 -1
  108. package/dist/web/public/assets/{memos-C6i1hbv9.js → memos-MDYe436b.js} +2 -2
  109. package/dist/web/public/assets/{memos-C6i1hbv9.js.map → memos-MDYe436b.js.map} +1 -1
  110. package/dist/web/public/assets/{messengers-CZ3eL15d.js → messengers-D0F-cgJ0.js} +2 -2
  111. package/dist/web/public/assets/{messengers-CZ3eL15d.js.map → messengers-D0F-cgJ0.js.map} +1 -1
  112. package/dist/web/public/assets/{mobile-_rEEG_kX.js → mobile-Bezz5MnW.js} +2 -2
  113. package/dist/web/public/assets/{mobile-_rEEG_kX.js.map → mobile-Bezz5MnW.js.map} +1 -1
  114. package/dist/web/public/assets/{native-agent-B-Id8sOl.js → native-agent-bRS7DRfj.js} +2 -2
  115. package/dist/web/public/assets/{native-agent-B-Id8sOl.js.map → native-agent-bRS7DRfj.js.map} +1 -1
  116. package/dist/web/public/assets/{network-MVE8s4TA.js → network-3O1O1jsk.js} +2 -2
  117. package/dist/web/public/assets/{network-MVE8s4TA.js.map → network-3O1O1jsk.js.map} +1 -1
  118. package/dist/web/public/assets/{outbox-BRpgAP1d.js → outbox-D2iX9mcs.js} +2 -2
  119. package/dist/web/public/assets/{outbox-BRpgAP1d.js.map → outbox-D2iX9mcs.js.map} +1 -1
  120. package/dist/web/public/assets/{pagination-dm3r6K_2.js → pagination-79ms7QFI.js} +2 -2
  121. package/dist/web/public/assets/{pagination-dm3r6K_2.js.map → pagination-79ms7QFI.js.map} +1 -1
  122. package/dist/web/public/assets/{persona-Oq3C-gEw.js → persona-D37NzRbz.js} +2 -2
  123. package/dist/web/public/assets/{persona-Oq3C-gEw.js.map → persona-D37NzRbz.js.map} +1 -1
  124. package/dist/web/public/assets/{play-COQw7BqX.js → play-BedplEoY.js} +2 -2
  125. package/dist/web/public/assets/{play-COQw7BqX.js.map → play-BedplEoY.js.map} +1 -1
  126. package/dist/web/public/assets/{plus-CdOyGoU1.js → plus-4GdEpvTV.js} +2 -2
  127. package/dist/web/public/assets/{plus-CdOyGoU1.js.map → plus-4GdEpvTV.js.map} +1 -1
  128. package/dist/web/public/assets/{policy-docXezae.js → policy-Gmd4rmzp.js} +2 -2
  129. package/dist/web/public/assets/{policy-docXezae.js.map → policy-Gmd4rmzp.js.map} +1 -1
  130. package/dist/web/public/assets/{qr-code-8putJTrW.js → qr-code-DVgHWDky.js} +2 -2
  131. package/dist/web/public/assets/{qr-code-8putJTrW.js.map → qr-code-DVgHWDky.js.map} +1 -1
  132. package/dist/web/public/assets/{refresh-ccw-BPKXoMZa.js → refresh-ccw-DZHRYuFA.js} +2 -2
  133. package/dist/web/public/assets/{refresh-ccw-BPKXoMZa.js.map → refresh-ccw-DZHRYuFA.js.map} +1 -1
  134. package/dist/web/public/assets/{reminders-CP2qtNSr.js → reminders-C00V-Fs9.js} +2 -2
  135. package/dist/web/public/assets/{reminders-CP2qtNSr.js.map → reminders-C00V-Fs9.js.map} +1 -1
  136. package/dist/web/public/assets/{save-BXCmgeEj.js → save-DQlBAXAl.js} +2 -2
  137. package/dist/web/public/assets/{save-BXCmgeEj.js.map → save-DQlBAXAl.js.map} +1 -1
  138. package/dist/web/public/assets/{schedules-DVaY38v1.js → schedules-BtuWAAd7.js} +2 -2
  139. package/dist/web/public/assets/{schedules-DVaY38v1.js.map → schedules-BtuWAAd7.js.map} +1 -1
  140. package/dist/web/public/assets/{search-DzexDAbr.js → search-DJXxphzz.js} +2 -2
  141. package/dist/web/public/assets/{search-DzexDAbr.js.map → search-DJXxphzz.js.map} +1 -1
  142. package/dist/web/public/assets/{search-B-wDhzjs.js → search-dBGBHpnH.js} +2 -2
  143. package/dist/web/public/assets/{search-B-wDhzjs.js.map → search-dBGBHpnH.js.map} +1 -1
  144. package/dist/web/public/assets/{security-FHN-b43T.js → security-CP0MP_Gx.js} +2 -2
  145. package/dist/web/public/assets/{security-FHN-b43T.js.map → security-CP0MP_Gx.js.map} +1 -1
  146. package/dist/web/public/assets/{service-DXGUZTCp.js → service-BJFnNe7Y.js} +2 -2
  147. package/dist/web/public/assets/{service-DXGUZTCp.js.map → service-BJFnNe7Y.js.map} +1 -1
  148. package/dist/web/public/assets/{shield-alert-BM0-khVy.js → shield-alert-DRh8fC8Z.js} +2 -2
  149. package/dist/web/public/assets/{shield-alert-BM0-khVy.js.map → shield-alert-DRh8fC8Z.js.map} +1 -1
  150. package/dist/web/public/assets/{status-badge-DeESb2dc.js → status-badge-CTRG6Pb2.js} +2 -2
  151. package/dist/web/public/assets/{status-badge-DeESb2dc.js.map → status-badge-CTRG6Pb2.js.map} +1 -1
  152. package/dist/web/public/assets/{subtasks-DOwo6FnZ.js → subtasks-BiZ2mCPs.js} +2 -2
  153. package/dist/web/public/assets/{subtasks-DOwo6FnZ.js.map → subtasks-BiZ2mCPs.js.map} +1 -1
  154. package/dist/web/public/assets/{table-oUi0mGOn.js → table-Dbriy3Jz.js} +2 -2
  155. package/dist/web/public/assets/{table-oUi0mGOn.js.map → table-Dbriy3Jz.js.map} +1 -1
  156. package/dist/web/public/assets/{topn-D1LQXoLo.js → topn-BEi7Uvlg.js} +2 -2
  157. package/dist/web/public/assets/{topn-D1LQXoLo.js.map → topn-BEi7Uvlg.js.map} +1 -1
  158. package/dist/web/public/assets/{trash-2-CTkSvnZX.js → trash-2-BgltvQpz.js} +2 -2
  159. package/dist/web/public/assets/{trash-2-CTkSvnZX.js.map → trash-2-BgltvQpz.js.map} +1 -1
  160. package/dist/web/public/assets/{use-background-tasks-BkUIDOxX.js → use-background-tasks-DHo3Hnu9.js} +2 -2
  161. package/dist/web/public/assets/{use-background-tasks-BkUIDOxX.js.map → use-background-tasks-DHo3Hnu9.js.map} +1 -1
  162. package/dist/web/public/assets/{use-llm-admin-BrJMMEz5.js → use-llm-admin-EU1V1WQ5.js} +2 -2
  163. package/dist/web/public/assets/{use-llm-admin-BrJMMEz5.js.map → use-llm-admin-EU1V1WQ5.js.map} +1 -1
  164. package/dist/web/public/assets/{use-memory-CbTYEBTc.js → use-memory-D0FD5n0A.js} +2 -2
  165. package/dist/web/public/assets/{use-memory-CbTYEBTc.js.map → use-memory-D0FD5n0A.js.map} +1 -1
  166. package/dist/web/public/assets/{use-observability-Bum0mmDO.js → use-observability-CZg_sS2t.js} +2 -2
  167. package/dist/web/public/assets/{use-observability-Bum0mmDO.js.map → use-observability-CZg_sS2t.js.map} +1 -1
  168. package/dist/web/public/assets/{use-settings-DJlVLnjo.js → use-settings-D3vI1Dwg.js} +2 -2
  169. package/dist/web/public/assets/{use-settings-DJlVLnjo.js.map → use-settings-D3vI1Dwg.js.map} +1 -1
  170. package/dist/web/public/assets/{use-workspace-BJZUfkqw.js → use-workspace-DWm4dRVD.js} +2 -2
  171. package/dist/web/public/assets/{use-workspace-BJZUfkqw.js.map → use-workspace-DWm4dRVD.js.map} +1 -1
  172. package/dist/web/public/assets/{useQuery-CEwGD94N.js → useQuery-DIlm0vJ-.js} +2 -2
  173. package/dist/web/public/assets/{useQuery-CEwGD94N.js.map → useQuery-DIlm0vJ-.js.map} +1 -1
  174. package/dist/web/public/assets/{vector-BqffHZmp.js → vector-CaijGbpn.js} +2 -2
  175. package/dist/web/public/assets/{vector-BqffHZmp.js.map → vector-CaijGbpn.js.map} +1 -1
  176. package/dist/web/public/assets/{viewer-CKTTV-Wt.js → viewer-nU6uZJWq.js} +2 -2
  177. package/dist/web/public/assets/{viewer-CKTTV-Wt.js.map → viewer-nU6uZJWq.js.map} +1 -1
  178. package/dist/web/public/assets/{workspace-DQphgYwy.js → workspace-BluXJmIg.js} +2 -2
  179. package/dist/web/public/assets/{workspace-DQphgYwy.js.map → workspace-BluXJmIg.js.map} +1 -1
  180. package/dist/web/public/assets/{workspaces-BOA3TuDS.js → workspaces-B2nSpx9t.js} +2 -2
  181. package/dist/web/public/assets/{workspaces-BOA3TuDS.js.map → workspaces-B2nSpx9t.js.map} +1 -1
  182. package/dist/web/public/assets/{x-OHUicFfn.js → x-D_eFtxsK.js} +2 -2
  183. package/dist/web/public/assets/{x-OHUicFfn.js.map → x-D_eFtxsK.js.map} +1 -1
  184. package/dist/web/public/index.html +1 -1
  185. package/package.json +1 -1
  186. package/dist/web/public/assets/index-DXI13nSQ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"memos-C6i1hbv9.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle.js","../../node_modules/lucide-react/dist/esm/icons/notebook-text.js","../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/@radix-ui/react-menu/dist/index.mjs","../../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../../src/components/ui/dropdown-menu.tsx","../../src/hooks/use-memos.ts","../../src/routes/memos.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Circle = createLucideIcon(\"Circle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst NotebookText = createLucideIcon(\"NotebookText\", [\n [\"path\", { d: \"M2 6h4\", key: \"aawbzj\" }],\n [\"path\", { d: \"M2 10h4\", key: \"l0bgd4\" }],\n [\"path\", { d: \"M2 14h4\", key: \"1gsvsf\" }],\n [\"path\", { d: \"M2 18h4\", key: \"1bu2t1\" }],\n [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", key: \"1nb95v\" }],\n [\"path\", { d: \"M9.5 8h5\", key: \"11mslq\" }],\n [\"path\", { d: \"M9.5 12H16\", key: \"ktog6x\" }],\n [\"path\", { d: \"M9.5 16H14\", key: \"p1seyn\" }]\n]);\n\nexport { NotebookText as default };\n//# sourceMappingURL=notebook-text.js.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DROPDOWN_MENU_NAME\n });\n return /* @__PURE__ */ jsx(\n DropdownMenuProvider,\n {\n scope: __scopeDropdownMenu,\n triggerId: useId(),\n triggerRef,\n contentId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n }\n );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: composeRefs(forwardedRef, context.triggerRef),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n })\n }\n ) });\n }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: \"DropdownMenuSub\"\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n DropdownMenu,\n DropdownMenuArrow,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuItemIndicator,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * DropdownMenu — Radix-backed menu for row actions, agent picker, etc.\n * The check / radio item variants ship below; we don't import every\n * Radix sub-primitive eagerly to keep the bundle small if a page\n * doesn't need them.\n */\n\nimport * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-default select-none items-center gap-2 rounded px-2 py-1.5 text-sm outline-none',\n 'focus:bg-surface-hover data-[state=open]:bg-surface-hover',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface p-1 shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface p-1 shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center gap-2 rounded px-2 py-1.5 text-sm outline-none',\n 'focus:bg-surface-hover focus:text-text',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-surface-hover',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-surface-hover',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-xs font-semibold uppercase tracking-wide text-text-muted',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>): JSX.Element => (\n <span\n className={cn('ml-auto text-xs tracking-widest text-text-muted', className)}\n {...props}\n />\n)\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","/**\n * useMemos — react-query wrappers for memos search + delete.\n *\n * useMemos(query) — search/list\n * useDeleteMemo() — DELETE /api/memos/:id\n *\n * No SSE channel for memos (they're operator-created from chat, not\n * from autonomous agent activity), and no background poll: the page\n * shows search results which are inherently user-triggered.\n * Mutation onSuccess invalidates so a delete removes the row\n * immediately without a manual refresh.\n */\n\nimport { useQueryClient, useQuery, useMutation } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n DeleteMemoResponse,\n ListMemosQuery,\n ListMemosResponse,\n} from '@/types/api'\n\nexport const memosKeys = {\n all: ['memos'] as const,\n list: (q: ListMemosQuery) => ['memos', 'list', q] as const,\n}\n\nexport function useMemos(query: ListMemosQuery) {\n return useQuery<ListMemosResponse>({\n queryKey: memosKeys.list(query),\n queryFn: () => api.listMemos(query),\n })\n}\n\nexport function useInvalidateMemos() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: memosKeys.all })\n}\n\nexport function useDeleteMemo() {\n const qc = useQueryClient()\n return useMutation<DeleteMemoResponse, Error, number>({\n mutationFn: (id) => api.deleteMemo(id),\n onSuccess: () => qc.invalidateQueries({ queryKey: memosKeys.all }),\n })\n}\n","/**\n * /memos — searchable memo list. Free-form text + who/what filters +\n * has-location toggle. Delete is the one mutation.\n *\n * Memos with location surface a small \"Open map\" dropdown that\n * routes to the provider URLs the backend prepared in `mapUrls`\n * (Baidu / Apple / Google / OSM).\n *\n * Searches are user-triggered (input + debounce) rather than poll-\n * driven — the query is read straight from URL params so deep-link\n * sharing works (\"memos about taxes between Jan and April\").\n *\n * Debounce: 300ms between the last keystroke and URL/query commit\n * — keeps the backend's FTS5 from running on every keypress.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useSearchParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { MapPin, NotebookText, RefreshCcw, Search, Trash2 } from 'lucide-react'\n\nimport { Topbar } from '@/components/shell/topbar'\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport { useMemos, useDeleteMemo } from '@/hooks/use-memos'\nimport { describeError } from '@/lib/api/errors'\nimport type { Memo, ListMemosQuery } from '@/types/api'\n\nconst SEARCH_DEBOUNCE_MS = 300\n\nexport default function MemosRoute(): JSX.Element {\n const { t } = useTranslation(['memos', 'common'])\n const [params, setParams] = useSearchParams()\n\n // URL-driven filter state (read once per render).\n const q = params.get('q') ?? ''\n const who = params.get('who') ?? ''\n const what = params.get('what') ?? ''\n const hasLoc = params.get('has_location') === '1'\n const incExpired = params.get('include_expired') === '1'\n\n // Local-only echo of the text input. Effects below sync the URL\n // after the debounce so each keypress doesn't kick a fetch.\n const [qDraft, setQDraft] = useState(q)\n\n useEffect(() => {\n if (qDraft === q) return\n const timer = window.setTimeout(() => {\n patchParams({ q: qDraft || null })\n }, SEARCH_DEBOUNCE_MS)\n return () => window.clearTimeout(timer)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [qDraft])\n\n const query: ListMemosQuery = useMemo(\n () => ({\n ...(q ? { query: q } : {}),\n ...(who ? { who } : {}),\n ...(what ? { what } : {}),\n ...(hasLoc ? { has_location: true } : {}),\n ...(incExpired ? { include_expired: true } : {}),\n limit: 200,\n }),\n [q, who, what, hasLoc, incExpired],\n )\n\n const { data, isLoading, isFetching, refetch } = useMemos(query)\n const memos = data?.memos ?? []\n\n const del = useDeleteMemo()\n const [confirmDeleteId, setConfirmDeleteId] = useState<number | null>(null)\n\n function patchParams(patch: Record<string, string | null>): void {\n const next = new URLSearchParams(params)\n for (const [k, v] of Object.entries(patch)) {\n if (v == null || v === '') next.delete(k)\n else next.set(k, v)\n }\n setParams(next, { replace: true })\n }\n\n async function onConfirmDelete(): Promise<void> {\n if (confirmDeleteId == null) return\n try {\n await del.mutateAsync(confirmDeleteId)\n toast.success(t('toast.deleted'))\n } catch (err) {\n const { message } = describeError(err, t)\n toast.error(message)\n throw err\n }\n }\n\n const columns: DataTableColumn<Memo>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'what',\n header: t('col.what'),\n cell: (r) => (\n <span className=\"line-clamp-2\">\n {r.memo ? <span className=\"text-text\">{r.memo}</span> : <span className=\"font-medium text-text\">{r.what}</span>}\n </span>\n ),\n asCardTitle: true,\n },\n {\n id: 'who',\n header: t('col.who'),\n cell: (r) =>\n r.who ? (\n <Badge variant=\"secondary\">{r.who}</Badge>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-32',\n },\n {\n id: 'when',\n header: t('col.when'),\n cell: (r) => (\n <span className=\"text-text-dim\">\n {r.whenText || (r.whenAt ? formatTime(r.whenAt) : '—')}\n </span>\n ),\n headClassName: 'w-36',\n },\n {\n id: 'where',\n header: t('col.where'),\n cell: (r) =>\n r.where_label || (r.where_lat != null && r.where_lng != null) ? (\n <MapCell memo={r} />\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-44',\n },\n {\n id: 'platform',\n header: t('col.platform'),\n cell: (r) => <span className=\"text-text-dim\">{r.platform}</span>,\n headClassName: 'w-24',\n hideOnMobile: true,\n },\n {\n id: 'createdAt',\n header: t('col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.createdAt)}</span>,\n headClassName: 'w-36',\n hideOnMobile: true,\n },\n {\n id: 'actions',\n header: '',\n cell: (r) => (\n <div className=\"flex justify-end\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation()\n setConfirmDeleteId(r.id)\n }}\n disabled={del.isPending}\n aria-label={t('action.delete')}\n >\n <Trash2 className=\"h-3 w-3\" />\n <span className=\"sr-only sm:not-sr-only sm:ml-1\">{t('action.delete')}</span>\n </Button>\n </div>\n ),\n headClassName: 'w-24',\n },\n ],\n [t, del.isPending],\n )\n\n return (\n <div className=\"flex min-h-dvh flex-col bg-bg\">\n <Topbar />\n\n <main className=\"mx-auto flex w-full max-w-7xl flex-1 flex-col gap-4 px-3 py-4 sm:px-4 pb-safe\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('pageTitle')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n <RefreshCcw className={`h-4 w-4 ${isFetching ? 'animate-spin' : ''}`} />\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('subtitle')}</p>\n </header>\n\n {/* Search bar */}\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-end\">\n <div className=\"relative flex-1 max-w-md\">\n <Search className=\"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\n <Input\n value={qDraft}\n onChange={(e) => setQDraft(e.target.value)}\n placeholder={t('search.placeholder')}\n className=\"pl-7\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-2 sm:flex sm:items-end\">\n <div className=\"flex flex-col gap-1\">\n <Label htmlFor=\"who-filter\" className=\"text-xs text-text-dim\">\n {t('search.who')}\n </Label>\n <Input\n id=\"who-filter\"\n value={who}\n onChange={(e) => patchParams({ who: e.target.value || null })}\n className=\"w-36\"\n />\n </div>\n <div className=\"flex flex-col gap-1\">\n <Label htmlFor=\"what-filter\" className=\"text-xs text-text-dim\">\n {t('search.what')}\n </Label>\n <Input\n id=\"what-filter\"\n value={what}\n onChange={(e) => patchParams({ what: e.target.value || null })}\n className=\"w-36\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n <label className=\"inline-flex items-center gap-1 text-sm text-text-dim\">\n <input\n type=\"checkbox\"\n checked={hasLoc}\n onChange={(e) => patchParams({ has_location: e.target.checked ? '1' : null })}\n className=\"h-4 w-4 accent-accent\"\n />\n {t('search.hasLocation')}\n </label>\n <label className=\"inline-flex items-center gap-1 text-sm text-text-dim\">\n <input\n type=\"checkbox\"\n checked={incExpired}\n onChange={(e) => patchParams({ include_expired: e.target.checked ? '1' : null })}\n className=\"h-4 w-4 accent-accent\"\n />\n {t('search.includeExpired')}\n </label>\n </div>\n </div>\n\n <DataTable\n columns={columns}\n rows={memos}\n getRowId={(r) => String(r.id)}\n loading={isLoading}\n emptyState={\n <EmptyState\n icon={<NotebookText />}\n title={t('empty.title')}\n description={t('empty.description')}\n />\n }\n />\n\n <ConfirmDialog\n open={confirmDeleteId != null}\n onOpenChange={(open) => {\n if (!open) setConfirmDeleteId(null)\n }}\n title={t('action.confirmDelete')}\n description={t('action.confirmDeleteDesc')}\n intent=\"danger\"\n confirmLabel={t('action.delete')}\n onConfirm={onConfirmDelete}\n />\n </main>\n </div>\n )\n}\n\ninterface MapCellProps {\n memo: Memo\n}\n\nconst PROVIDER_LABEL_KEY: Record<string, string> = {\n baidu: 'openMap.baidu',\n apple: 'openMap.apple',\n google: 'openMap.google',\n osm: 'openMap.osm',\n}\n\nfunction MapCell({ memo }: MapCellProps): JSX.Element {\n const { t } = useTranslation('memos')\n const label = memo.where_label || `${memo.where_lat}, ${memo.where_lng}`\n const entries = Object.entries(memo.mapUrls ?? {})\n if (entries.length === 0) {\n return <span className=\"text-text-dim\">{label}</span>\n }\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-sm text-text-dim hover:text-accent\"\n onClick={(e) => e.stopPropagation()}\n >\n <MapPin className=\"h-3 w-3\" />\n <span className=\"line-clamp-1 underline-offset-2 hover:underline\">{label}</span>\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {entries.map(([provider, url]) => (\n <DropdownMenuItem key={provider} asChild>\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t(PROVIDER_LABEL_KEY[provider] ?? 'openMap.label', { defaultValue: provider })}\n </a>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["Circle","createLucideIcon","NotebookText","ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React.forwardRef","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","React.useRef","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","React.useState","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","React.useEffect","node","React.useCallback","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","children","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","createSlot","ownerName","SlotClone","createSlotClone","Slot2","slotProps","childrenArray","React.Children","slottable","isSlottable","newElement","newChildren","child","React.isValidElement","React.cloneElement","childrenRef","getElementRef","props2","mergeProps","React.Fragment","composeRefs","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","mayWarn","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","createMenuContext","createMenuScope","createPopperScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","Menu","__scopeMenu","open","onOpenChange","modal","popperScope","content","setContent","isUsingKeyboardRef","handleOpenChange","handleKeyDown","handlePointer","PopperPrimitive.Root","ANCHOR_NAME","MenuAnchor","anchorProps","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","MenuPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","contentProps","rootContext","MenuRootContentModal","MenuRootContentNonModal","hideOthers","MenuContentImpl","Slot","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","disableOutsideScroll","rovingFocusGroupScope","currentItemId","setCurrentItemId","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","RemoveScroll","scrollLockWrapperProps","handleTypeaheadSearch","search","currentMatch","values","nextMatch","getNextMatch","newItem","updateSearch","value","useFocusGuards","isPointerMovingToSubmenu","isPointerInGraceArea","intent","FocusScope","DismissableLayer","RovingFocusGroup.Root","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","whenMouse","target","pointerXHasChanged","newDir","MenuGroup","LABEL_NAME","MenuLabel","labelProps","ITEM_SELECT","MenuItem","disabled","onSelect","contentContext","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","dispatchDiscreteCustomEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","onValueChange","handleValueChange","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","ARROW_NAME","MenuArrow","arrowProps","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","scope","clearOpenTimer","pointerGraceTimer","contentRect","side","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","normalizedSearch","char","currentMatchIndex","wrappedValues","v","isPointInPolygon","point","polygon","x","y","inside","i","j","ii","jj","xi","yi","xj","yj","area","cursorPos","handler","Root3","Anchor2","Portal","Content2","Group","Label","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow2","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","openProp","defaultOpen","menuScope","triggerRef","setOpen","prevOpen","MenuPrimitive.Root","TRIGGER_NAME","DropdownMenuTrigger","triggerProps","MenuPrimitive.Anchor","DropdownMenuPortal","portalProps","MenuPrimitive.Portal","DropdownMenuContent","hasInteractedOutsideRef","MenuPrimitive.Content","originalEvent","ctrlLeftClick","isRightClick","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","INDICATOR_NAME","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Root2","Trigger","Portal2","Label2","CheckboxItem2","RadioItem2","ItemIndicator2","Separator2","SubTrigger2","SubContent2","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Trigger","className","inset","jsxs","DropdownMenuPrimitive.SubTrigger","cn","ChevronRight","DropdownMenuPrimitive.SubContent","sideOffset","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Content","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.ItemIndicator","Check","DropdownMenuPrimitive.RadioItem","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","memosKeys","q","useMemos","query","useQuery","api","useDeleteMemo","qc","useQueryClient","useMutation","SEARCH_DEBOUNCE_MS","MemosRoute","t","useTranslation","params","setParams","useSearchParams","who","what","hasLoc","incExpired","qDraft","setQDraft","useState","useEffect","timer","patchParams","useMemo","data","isLoading","isFetching","refetch","memos","del","confirmDeleteId","setConfirmDeleteId","patch","next","k","onConfirmDelete","toast","err","message","describeError","columns","r","Badge","formatTime","MapCell","Button","e","Trash2","Topbar","RefreshCcw","Search","Input","DataTable","EmptyState","ConfirmDialog","PROVIDER_LABEL_KEY","memo","label","entries","MapPin","provider","url","iso","d"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"memos-MDYe436b.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle.js","../../node_modules/lucide-react/dist/esm/icons/notebook-text.js","../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/@radix-ui/react-menu/dist/index.mjs","../../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../../src/components/ui/dropdown-menu.tsx","../../src/hooks/use-memos.ts","../../src/routes/memos.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Circle = createLucideIcon(\"Circle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst NotebookText = createLucideIcon(\"NotebookText\", [\n [\"path\", { d: \"M2 6h4\", key: \"aawbzj\" }],\n [\"path\", { d: \"M2 10h4\", key: \"l0bgd4\" }],\n [\"path\", { d: \"M2 14h4\", key: \"1gsvsf\" }],\n [\"path\", { d: \"M2 18h4\", key: \"1bu2t1\" }],\n [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", key: \"1nb95v\" }],\n [\"path\", { d: \"M9.5 8h5\", key: \"11mslq\" }],\n [\"path\", { d: \"M9.5 12H16\", key: \"ktog6x\" }],\n [\"path\", { d: \"M9.5 16H14\", key: \"p1seyn\" }]\n]);\n\nexport { NotebookText as default };\n//# sourceMappingURL=notebook-text.js.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DROPDOWN_MENU_NAME\n });\n return /* @__PURE__ */ jsx(\n DropdownMenuProvider,\n {\n scope: __scopeDropdownMenu,\n triggerId: useId(),\n triggerRef,\n contentId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n }\n );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: composeRefs(forwardedRef, context.triggerRef),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n })\n }\n ) });\n }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: \"DropdownMenuSub\"\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n DropdownMenu,\n DropdownMenuArrow,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuItemIndicator,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * DropdownMenu — Radix-backed menu for row actions, agent picker, etc.\n * The check / radio item variants ship below; we don't import every\n * Radix sub-primitive eagerly to keep the bundle small if a page\n * doesn't need them.\n */\n\nimport * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-default select-none items-center gap-2 rounded px-2 py-1.5 text-sm outline-none',\n 'focus:bg-surface-hover data-[state=open]:bg-surface-hover',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface p-1 shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface p-1 shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center gap-2 rounded px-2 py-1.5 text-sm outline-none',\n 'focus:bg-surface-hover focus:text-text',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-surface-hover',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-surface-hover',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-xs font-semibold uppercase tracking-wide text-text-muted',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>): JSX.Element => (\n <span\n className={cn('ml-auto text-xs tracking-widest text-text-muted', className)}\n {...props}\n />\n)\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","/**\n * useMemos — react-query wrappers for memos search + delete.\n *\n * useMemos(query) — search/list\n * useDeleteMemo() — DELETE /api/memos/:id\n *\n * No SSE channel for memos (they're operator-created from chat, not\n * from autonomous agent activity), and no background poll: the page\n * shows search results which are inherently user-triggered.\n * Mutation onSuccess invalidates so a delete removes the row\n * immediately without a manual refresh.\n */\n\nimport { useQueryClient, useQuery, useMutation } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n DeleteMemoResponse,\n ListMemosQuery,\n ListMemosResponse,\n} from '@/types/api'\n\nexport const memosKeys = {\n all: ['memos'] as const,\n list: (q: ListMemosQuery) => ['memos', 'list', q] as const,\n}\n\nexport function useMemos(query: ListMemosQuery) {\n return useQuery<ListMemosResponse>({\n queryKey: memosKeys.list(query),\n queryFn: () => api.listMemos(query),\n })\n}\n\nexport function useInvalidateMemos() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: memosKeys.all })\n}\n\nexport function useDeleteMemo() {\n const qc = useQueryClient()\n return useMutation<DeleteMemoResponse, Error, number>({\n mutationFn: (id) => api.deleteMemo(id),\n onSuccess: () => qc.invalidateQueries({ queryKey: memosKeys.all }),\n })\n}\n","/**\n * /memos — searchable memo list. Free-form text + who/what filters +\n * has-location toggle. Delete is the one mutation.\n *\n * Memos with location surface a small \"Open map\" dropdown that\n * routes to the provider URLs the backend prepared in `mapUrls`\n * (Baidu / Apple / Google / OSM).\n *\n * Searches are user-triggered (input + debounce) rather than poll-\n * driven — the query is read straight from URL params so deep-link\n * sharing works (\"memos about taxes between Jan and April\").\n *\n * Debounce: 300ms between the last keystroke and URL/query commit\n * — keeps the backend's FTS5 from running on every keypress.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useSearchParams } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { MapPin, NotebookText, RefreshCcw, Search, Trash2 } from 'lucide-react'\n\nimport { Topbar } from '@/components/shell/topbar'\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport { useMemos, useDeleteMemo } from '@/hooks/use-memos'\nimport { describeError } from '@/lib/api/errors'\nimport type { Memo, ListMemosQuery } from '@/types/api'\n\nconst SEARCH_DEBOUNCE_MS = 300\n\nexport default function MemosRoute(): JSX.Element {\n const { t } = useTranslation(['memos', 'common'])\n const [params, setParams] = useSearchParams()\n\n // URL-driven filter state (read once per render).\n const q = params.get('q') ?? ''\n const who = params.get('who') ?? ''\n const what = params.get('what') ?? ''\n const hasLoc = params.get('has_location') === '1'\n const incExpired = params.get('include_expired') === '1'\n\n // Local-only echo of the text input. Effects below sync the URL\n // after the debounce so each keypress doesn't kick a fetch.\n const [qDraft, setQDraft] = useState(q)\n\n useEffect(() => {\n if (qDraft === q) return\n const timer = window.setTimeout(() => {\n patchParams({ q: qDraft || null })\n }, SEARCH_DEBOUNCE_MS)\n return () => window.clearTimeout(timer)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [qDraft])\n\n const query: ListMemosQuery = useMemo(\n () => ({\n ...(q ? { query: q } : {}),\n ...(who ? { who } : {}),\n ...(what ? { what } : {}),\n ...(hasLoc ? { has_location: true } : {}),\n ...(incExpired ? { include_expired: true } : {}),\n limit: 200,\n }),\n [q, who, what, hasLoc, incExpired],\n )\n\n const { data, isLoading, isFetching, refetch } = useMemos(query)\n const memos = data?.memos ?? []\n\n const del = useDeleteMemo()\n const [confirmDeleteId, setConfirmDeleteId] = useState<number | null>(null)\n\n function patchParams(patch: Record<string, string | null>): void {\n const next = new URLSearchParams(params)\n for (const [k, v] of Object.entries(patch)) {\n if (v == null || v === '') next.delete(k)\n else next.set(k, v)\n }\n setParams(next, { replace: true })\n }\n\n async function onConfirmDelete(): Promise<void> {\n if (confirmDeleteId == null) return\n try {\n await del.mutateAsync(confirmDeleteId)\n toast.success(t('toast.deleted'))\n } catch (err) {\n const { message } = describeError(err, t)\n toast.error(message)\n throw err\n }\n }\n\n const columns: DataTableColumn<Memo>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'what',\n header: t('col.what'),\n cell: (r) => (\n <span className=\"line-clamp-2\">\n {r.memo ? <span className=\"text-text\">{r.memo}</span> : <span className=\"font-medium text-text\">{r.what}</span>}\n </span>\n ),\n asCardTitle: true,\n },\n {\n id: 'who',\n header: t('col.who'),\n cell: (r) =>\n r.who ? (\n <Badge variant=\"secondary\">{r.who}</Badge>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-32',\n },\n {\n id: 'when',\n header: t('col.when'),\n cell: (r) => (\n <span className=\"text-text-dim\">\n {r.whenText || (r.whenAt ? formatTime(r.whenAt) : '—')}\n </span>\n ),\n headClassName: 'w-36',\n },\n {\n id: 'where',\n header: t('col.where'),\n cell: (r) =>\n r.where_label || (r.where_lat != null && r.where_lng != null) ? (\n <MapCell memo={r} />\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-44',\n },\n {\n id: 'platform',\n header: t('col.platform'),\n cell: (r) => <span className=\"text-text-dim\">{r.platform}</span>,\n headClassName: 'w-24',\n hideOnMobile: true,\n },\n {\n id: 'createdAt',\n header: t('col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.createdAt)}</span>,\n headClassName: 'w-36',\n hideOnMobile: true,\n },\n {\n id: 'actions',\n header: '',\n cell: (r) => (\n <div className=\"flex justify-end\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation()\n setConfirmDeleteId(r.id)\n }}\n disabled={del.isPending}\n aria-label={t('action.delete')}\n >\n <Trash2 className=\"h-3 w-3\" />\n <span className=\"sr-only sm:not-sr-only sm:ml-1\">{t('action.delete')}</span>\n </Button>\n </div>\n ),\n headClassName: 'w-24',\n },\n ],\n [t, del.isPending],\n )\n\n return (\n <div className=\"flex min-h-dvh flex-col bg-bg\">\n <Topbar />\n\n <main className=\"mx-auto flex w-full max-w-7xl flex-1 flex-col gap-4 px-3 py-4 sm:px-4 pb-safe\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('pageTitle')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n <RefreshCcw className={`h-4 w-4 ${isFetching ? 'animate-spin' : ''}`} />\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('subtitle')}</p>\n </header>\n\n {/* Search bar */}\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-end\">\n <div className=\"relative flex-1 max-w-md\">\n <Search className=\"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\n <Input\n value={qDraft}\n onChange={(e) => setQDraft(e.target.value)}\n placeholder={t('search.placeholder')}\n className=\"pl-7\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-2 sm:flex sm:items-end\">\n <div className=\"flex flex-col gap-1\">\n <Label htmlFor=\"who-filter\" className=\"text-xs text-text-dim\">\n {t('search.who')}\n </Label>\n <Input\n id=\"who-filter\"\n value={who}\n onChange={(e) => patchParams({ who: e.target.value || null })}\n className=\"w-36\"\n />\n </div>\n <div className=\"flex flex-col gap-1\">\n <Label htmlFor=\"what-filter\" className=\"text-xs text-text-dim\">\n {t('search.what')}\n </Label>\n <Input\n id=\"what-filter\"\n value={what}\n onChange={(e) => patchParams({ what: e.target.value || null })}\n className=\"w-36\"\n />\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n <label className=\"inline-flex items-center gap-1 text-sm text-text-dim\">\n <input\n type=\"checkbox\"\n checked={hasLoc}\n onChange={(e) => patchParams({ has_location: e.target.checked ? '1' : null })}\n className=\"h-4 w-4 accent-accent\"\n />\n {t('search.hasLocation')}\n </label>\n <label className=\"inline-flex items-center gap-1 text-sm text-text-dim\">\n <input\n type=\"checkbox\"\n checked={incExpired}\n onChange={(e) => patchParams({ include_expired: e.target.checked ? '1' : null })}\n className=\"h-4 w-4 accent-accent\"\n />\n {t('search.includeExpired')}\n </label>\n </div>\n </div>\n\n <DataTable\n columns={columns}\n rows={memos}\n getRowId={(r) => String(r.id)}\n loading={isLoading}\n emptyState={\n <EmptyState\n icon={<NotebookText />}\n title={t('empty.title')}\n description={t('empty.description')}\n />\n }\n />\n\n <ConfirmDialog\n open={confirmDeleteId != null}\n onOpenChange={(open) => {\n if (!open) setConfirmDeleteId(null)\n }}\n title={t('action.confirmDelete')}\n description={t('action.confirmDeleteDesc')}\n intent=\"danger\"\n confirmLabel={t('action.delete')}\n onConfirm={onConfirmDelete}\n />\n </main>\n </div>\n )\n}\n\ninterface MapCellProps {\n memo: Memo\n}\n\nconst PROVIDER_LABEL_KEY: Record<string, string> = {\n baidu: 'openMap.baidu',\n apple: 'openMap.apple',\n google: 'openMap.google',\n osm: 'openMap.osm',\n}\n\nfunction MapCell({ memo }: MapCellProps): JSX.Element {\n const { t } = useTranslation('memos')\n const label = memo.where_label || `${memo.where_lat}, ${memo.where_lng}`\n const entries = Object.entries(memo.mapUrls ?? {})\n if (entries.length === 0) {\n return <span className=\"text-text-dim\">{label}</span>\n }\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-sm text-text-dim hover:text-accent\"\n onClick={(e) => e.stopPropagation()}\n >\n <MapPin className=\"h-3 w-3\" />\n <span className=\"line-clamp-1 underline-offset-2 hover:underline\">{label}</span>\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {entries.map(([provider, url]) => (\n <DropdownMenuItem key={provider} asChild>\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t(PROVIDER_LABEL_KEY[provider] ?? 'openMap.label', { defaultValue: provider })}\n </a>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["Circle","createLucideIcon","NotebookText","ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React.forwardRef","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","React.useRef","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","React.useState","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","React.useEffect","node","React.useCallback","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","children","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","createSlot","ownerName","SlotClone","createSlotClone","Slot2","slotProps","childrenArray","React.Children","slottable","isSlottable","newElement","newChildren","child","React.isValidElement","React.cloneElement","childrenRef","getElementRef","props2","mergeProps","React.Fragment","composeRefs","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","mayWarn","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","createMenuContext","createMenuScope","createPopperScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","Menu","__scopeMenu","open","onOpenChange","modal","popperScope","content","setContent","isUsingKeyboardRef","handleOpenChange","handleKeyDown","handlePointer","PopperPrimitive.Root","ANCHOR_NAME","MenuAnchor","anchorProps","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","MenuPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","contentProps","rootContext","MenuRootContentModal","MenuRootContentNonModal","hideOthers","MenuContentImpl","Slot","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","disableOutsideScroll","rovingFocusGroupScope","currentItemId","setCurrentItemId","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","RemoveScroll","scrollLockWrapperProps","handleTypeaheadSearch","search","currentMatch","values","nextMatch","getNextMatch","newItem","updateSearch","value","useFocusGuards","isPointerMovingToSubmenu","isPointerInGraceArea","intent","FocusScope","DismissableLayer","RovingFocusGroup.Root","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","whenMouse","target","pointerXHasChanged","newDir","MenuGroup","LABEL_NAME","MenuLabel","labelProps","ITEM_SELECT","MenuItem","disabled","onSelect","contentContext","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","dispatchDiscreteCustomEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","onValueChange","handleValueChange","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","ARROW_NAME","MenuArrow","arrowProps","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","scope","clearOpenTimer","pointerGraceTimer","contentRect","side","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","normalizedSearch","char","currentMatchIndex","wrappedValues","v","isPointInPolygon","point","polygon","x","y","inside","i","j","ii","jj","xi","yi","xj","yj","area","cursorPos","handler","Root3","Anchor2","Portal","Content2","Group","Label","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow2","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","openProp","defaultOpen","menuScope","triggerRef","setOpen","prevOpen","MenuPrimitive.Root","TRIGGER_NAME","DropdownMenuTrigger","triggerProps","MenuPrimitive.Anchor","DropdownMenuPortal","portalProps","MenuPrimitive.Portal","DropdownMenuContent","hasInteractedOutsideRef","MenuPrimitive.Content","originalEvent","ctrlLeftClick","isRightClick","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","INDICATOR_NAME","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Root2","Trigger","Portal2","Label2","CheckboxItem2","RadioItem2","ItemIndicator2","Separator2","SubTrigger2","SubContent2","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Trigger","className","inset","jsxs","DropdownMenuPrimitive.SubTrigger","cn","ChevronRight","DropdownMenuPrimitive.SubContent","sideOffset","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Content","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.ItemIndicator","Check","DropdownMenuPrimitive.RadioItem","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","memosKeys","q","useMemos","query","useQuery","api","useDeleteMemo","qc","useQueryClient","useMutation","SEARCH_DEBOUNCE_MS","MemosRoute","t","useTranslation","params","setParams","useSearchParams","who","what","hasLoc","incExpired","qDraft","setQDraft","useState","useEffect","timer","patchParams","useMemo","data","isLoading","isFetching","refetch","memos","del","confirmDeleteId","setConfirmDeleteId","patch","next","k","onConfirmDelete","toast","err","message","describeError","columns","r","Badge","formatTime","MapCell","Button","e","Trash2","Topbar","RefreshCcw","Search","Input","DataTable","EmptyState","ConfirmDialog","PROVIDER_LABEL_KEY","memo","label","entries","MapPin","provider","url","iso","d"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}