wherdr 1.3.4 → 2.0.0

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 (242) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/BDNMzG2s.js +1 -0
  3. package/.output/public/_nuxt/BETID3_E.js +1 -0
  4. package/.output/public/_nuxt/BHenDMeH.js +1 -0
  5. package/.output/public/_nuxt/{CJKsMzIp.js → BYZVrreW.js} +1 -1
  6. package/.output/public/_nuxt/BhgehRdJ.js +1 -0
  7. package/.output/public/_nuxt/BtH82ZuZ.js +9 -0
  8. package/.output/public/_nuxt/C3Bkn4ac.js +62 -0
  9. package/.output/public/_nuxt/CuUQ4mEf.js +1 -0
  10. package/.output/public/_nuxt/DFGEl0v2.js +23 -0
  11. package/.output/public/_nuxt/{DMLmW6JM.js → DFmgQVme.js} +41 -42
  12. package/.output/public/_nuxt/DZGKxROq.js +6 -0
  13. package/.output/public/_nuxt/DmkWvmnE.js +2 -0
  14. package/.output/public/_nuxt/DrKKeFFE.js +31 -0
  15. package/.output/public/_nuxt/DyfFwwGq.js +1 -0
  16. package/.output/public/_nuxt/FaNto0ga.js +105 -0
  17. package/.output/public/_nuxt/NIF0VwHk.js +25 -0
  18. package/.output/public/_nuxt/{w7Rm7unj.js → R0Y4VoeX.js} +1 -1
  19. package/.output/public/_nuxt/board.CEEcFc6M.css +1 -0
  20. package/.output/public/_nuxt/builds/latest.json +1 -1
  21. package/.output/public/_nuxt/builds/meta/0b28b3e9-664e-4347-a35b-afb0a711d5c5.json +1 -0
  22. package/.output/public/_nuxt/entry.CKoXcwRa.css +2 -0
  23. package/.output/public/_nuxt/settings.Cdb21nNw.css +1 -0
  24. package/.output/public/sw.js +1 -1
  25. package/.output/server/chunks/_/branding.mjs +1 -1
  26. package/.output/server/chunks/_/changes.mjs +4 -4
  27. package/.output/server/chunks/_/fileDownload.mjs +278 -0
  28. package/.output/server/chunks/_/files.mjs +44 -17
  29. package/.output/server/chunks/_/machineOrder.mjs +1 -1
  30. package/.output/server/chunks/_/onboarding.mjs +1 -1
  31. package/.output/server/chunks/_/package.mjs +9 -3
  32. package/.output/server/chunks/_/plugins.mjs +92 -125
  33. package/.output/server/chunks/_/restart.mjs +1 -1
  34. package/.output/server/chunks/_/selfupdate.mjs +1 -1
  35. package/.output/server/chunks/_/updates.mjs +1 -1
  36. package/.output/server/chunks/_/worktrees.mjs +1 -1
  37. package/.output/server/chunks/_/ws.mjs +43 -6
  38. package/.output/server/chunks/nitro/nitro.mjs +14033 -10618
  39. package/.output/server/chunks/raw/check-doc-links.mjs +5 -0
  40. package/.output/server/chunks/raw/check-leaks.mjs +1 -1
  41. package/.output/server/chunks/raw/check-release-notes.mjs +5 -0
  42. package/.output/server/chunks/raw/herdr-plugin.mjs +1 -1
  43. package/.output/server/chunks/raw/install-claude-statusline.mjs +1 -1
  44. package/.output/server/chunks/raw/prerelease-summary.mjs +5 -0
  45. package/.output/server/chunks/raw/prerelease.mjs +7 -0
  46. package/.output/server/chunks/raw/reveal.mjs +1 -1
  47. package/.output/server/chunks/raw/test-affected.mjs +5 -0
  48. package/.output/server/chunks/routes/api/_..._.mjs +6 -5
  49. package/.output/server/chunks/routes/api/agents.post.mjs +6 -5
  50. package/.output/server/chunks/routes/api/ask-tab.post.mjs +6 -5
  51. package/.output/server/chunks/routes/api/attach.post.mjs +6 -5
  52. package/.output/server/chunks/routes/api/auth/disable.post.mjs +6 -5
  53. package/.output/server/chunks/routes/api/auth/lock-all.post.mjs +6 -5
  54. package/.output/server/chunks/routes/api/auth/lock.post.mjs +6 -5
  55. package/.output/server/chunks/routes/api/auth/login/options.post.mjs +6 -5
  56. package/.output/server/chunks/routes/api/auth/login/verify.post.mjs +6 -5
  57. package/.output/server/chunks/routes/api/auth/max-session.post.mjs +6 -5
  58. package/.output/server/chunks/routes/api/auth/register/options.post.mjs +6 -5
  59. package/.output/server/chunks/routes/api/auth/register/verify.post.mjs +6 -5
  60. package/.output/server/chunks/routes/api/auth/status.get.mjs +6 -5
  61. package/.output/server/chunks/routes/api/changes.get.mjs +7 -6
  62. package/.output/server/chunks/routes/api/chat/image.get.mjs +7 -6
  63. package/.output/server/chunks/routes/api/chat.get.mjs +20 -7
  64. package/.output/server/chunks/routes/api/choose.post.mjs +31 -17
  65. package/.output/server/chunks/routes/api/claude-setup.post.mjs +42 -0
  66. package/.output/server/chunks/routes/api/claude-statusline.post.mjs +7 -6
  67. package/.output/server/chunks/routes/api/clear-queued-input.post.mjs +42 -0
  68. package/.output/server/chunks/routes/api/close/status.get.mjs +7 -6
  69. package/.output/server/chunks/routes/api/close.post.mjs +6 -5
  70. package/.output/server/chunks/routes/api/codex-update.post.mjs +7 -6
  71. package/.output/server/chunks/routes/api/commands.get.mjs +7 -6
  72. package/.output/server/chunks/routes/api/config.get.mjs +10 -13
  73. package/.output/server/chunks/routes/api/dirs.get.mjs +7 -6
  74. package/.output/server/chunks/routes/api/dismiss-stopped.post.mjs +7 -6
  75. package/.output/server/chunks/routes/api/dismiss.post.mjs +7 -6
  76. package/.output/server/chunks/routes/api/effort.post.mjs +7 -6
  77. package/.output/server/chunks/routes/api/efforts.get.mjs +7 -6
  78. package/.output/server/chunks/routes/api/file.post.mjs +7 -6
  79. package/.output/server/chunks/routes/api/files/download.get.mjs +12 -31
  80. package/.output/server/chunks/routes/api/files/download.head.mjs +41 -0
  81. package/.output/server/chunks/routes/api/files/read.get.mjs +8 -7
  82. package/.output/server/chunks/routes/api/files.get.mjs +7 -6
  83. package/.output/server/chunks/routes/api/health.get.mjs +6 -5
  84. package/.output/server/chunks/routes/api/input.post.mjs +7 -6
  85. package/.output/server/chunks/routes/api/interrupt.post.mjs +24 -21
  86. package/.output/server/chunks/routes/api/isgit.get.mjs +8 -8
  87. package/.output/server/chunks/routes/api/machine/awake.get.mjs +7 -6
  88. package/.output/server/chunks/routes/api/machine/awake.post.mjs +7 -6
  89. package/.output/server/chunks/routes/api/machine/order.get.mjs +6 -5
  90. package/.output/server/chunks/routes/api/machine/order.post.mjs +6 -5
  91. package/.output/server/chunks/routes/api/machine/reconnect.post.mjs +40 -0
  92. package/.output/server/chunks/routes/api/machine/rename.post.mjs +7 -6
  93. package/.output/server/chunks/routes/api/machine/status.post.mjs +39 -0
  94. package/.output/server/chunks/routes/api/menu-left.post.mjs +40 -0
  95. package/.output/server/chunks/routes/api/menu.post.mjs +7 -6
  96. package/.output/server/chunks/routes/api/model.post.mjs +7 -6
  97. package/.output/server/chunks/routes/api/models.get.mjs +7 -6
  98. package/.output/server/chunks/routes/api/nav.post.mjs +7 -6
  99. package/.output/server/chunks/routes/api/onboarding.get.mjs +6 -5
  100. package/.output/server/chunks/routes/api/onboarding.post.mjs +6 -5
  101. package/.output/server/chunks/routes/api/phone.get.mjs +8 -10
  102. package/.output/server/chunks/routes/api/phone.post.mjs +8 -10
  103. package/.output/server/chunks/routes/api/plugins/actions.get.mjs +6 -10
  104. package/.output/server/chunks/routes/api/plugins/invoke.post.mjs +6 -10
  105. package/.output/server/chunks/routes/api/plugins/projects.get.mjs +10 -9
  106. package/.output/server/chunks/routes/api/plugins/projects.post.mjs +11 -8
  107. package/.output/server/chunks/routes/api/prompt.post.mjs +22 -13
  108. package/.output/server/chunks/routes/api/push/quiet.post.mjs +7 -6
  109. package/.output/server/chunks/routes/api/push/subscribe.post.mjs +7 -7
  110. package/.output/server/chunks/routes/api/push/test.post.mjs +7 -6
  111. package/.output/server/chunks/routes/api/push/unsubscribe.post.mjs +7 -6
  112. package/.output/server/chunks/routes/api/quotas.get.mjs +7 -6
  113. package/.output/server/chunks/routes/api/rename.post.mjs +6 -5
  114. package/.output/server/chunks/routes/api/requeue.post.mjs +7 -6
  115. package/.output/server/chunks/routes/api/restart.get.mjs +6 -5
  116. package/.output/server/chunks/routes/api/restart.post.mjs +6 -5
  117. package/.output/server/chunks/routes/api/reveal.post.mjs +91 -8
  118. package/.output/server/chunks/routes/api/screen-key.post.mjs +7 -6
  119. package/.output/server/chunks/routes/api/screen.get.mjs +7 -6
  120. package/.output/server/chunks/routes/api/search.get.mjs +7 -6
  121. package/.output/server/chunks/routes/api/seen.post.mjs +7 -6
  122. package/.output/server/chunks/routes/api/sessions.get.mjs +7 -6
  123. package/.output/server/chunks/routes/api/sessions.post.mjs +7 -6
  124. package/.output/server/chunks/routes/api/settings-tab.post.mjs +7 -6
  125. package/.output/server/chunks/routes/api/{plugins/thread-limits.get.mjs → settings.get.mjs} +10 -9
  126. package/.output/server/chunks/routes/api/settings.post.mjs +40 -0
  127. package/.output/server/chunks/routes/api/space.post.mjs +34 -18
  128. package/.output/server/chunks/routes/api/state.get.mjs +7 -6
  129. package/.output/server/chunks/routes/api/tasks/action.post.mjs +39 -0
  130. package/.output/server/chunks/routes/api/{plugins/profiles.get.mjs → tasks/add.post.mjs} +12 -16
  131. package/.output/server/chunks/routes/api/tasks/after.post.mjs +39 -0
  132. package/.output/server/chunks/routes/api/tasks/approve.post.mjs +39 -0
  133. package/.output/server/chunks/routes/api/{project/report.get.mjs → tasks/archived.get.mjs} +12 -14
  134. package/.output/server/chunks/routes/api/{index.get.mjs → tasks/autopilot.get.mjs} +13 -14
  135. package/.output/server/chunks/routes/api/tasks/autopilot.post.mjs +39 -0
  136. package/.output/server/chunks/routes/api/{gitroot.get.mjs → tasks/board-settings.get.mjs} +12 -14
  137. package/.output/server/chunks/routes/api/tasks/board-settings.post.mjs +39 -0
  138. package/.output/server/chunks/routes/api/tasks/coordinator.get.mjs +40 -0
  139. package/.output/server/chunks/routes/api/tasks/coordinator.post.mjs +39 -0
  140. package/.output/server/chunks/routes/api/tasks/details.get.mjs +40 -0
  141. package/.output/server/chunks/routes/api/tasks/limit.post.mjs +39 -0
  142. package/.output/server/chunks/routes/api/tasks/links.get.mjs +39 -0
  143. package/.output/server/chunks/routes/api/tasks/models.get.mjs +40 -0
  144. package/.output/server/chunks/routes/api/tasks/pick.post.mjs +39 -0
  145. package/.output/server/chunks/routes/api/tasks/question.post.mjs +39 -0
  146. package/.output/server/chunks/routes/api/tasks/scheduled.get.mjs +40 -0
  147. package/.output/server/chunks/routes/api/{project → tasks}/settings.get.mjs +10 -12
  148. package/.output/server/chunks/routes/api/tasks/start.get.mjs +40 -0
  149. package/.output/server/chunks/routes/api/tasks/tell.post.mjs +39 -0
  150. package/.output/server/chunks/routes/api/tasks.get.mjs +39 -0
  151. package/.output/server/chunks/routes/api/unqueue.post.mjs +7 -6
  152. package/.output/server/chunks/routes/api/update/status.get.mjs +6 -5
  153. package/.output/server/chunks/routes/api/update.get.mjs +8 -10
  154. package/.output/server/chunks/routes/api/update.post.mjs +8 -10
  155. package/.output/server/chunks/routes/api/upload.post.mjs +7 -6
  156. package/.output/server/chunks/routes/api/worktrees/remove.post.mjs +6 -5
  157. package/.output/server/chunks/routes/api/worktrees.get.mjs +6 -5
  158. package/.output/server/chunks/routes/favicon.ico.get.mjs +6 -5
  159. package/.output/server/chunks/routes/icons/_name_.get.mjs +7 -6
  160. package/.output/server/chunks/routes/renderer.mjs +8 -7
  161. package/.output/server/chunks/routes/uploads/_...name_.get.mjs +7 -6
  162. package/.output/server/chunks/routes/ws/_..._.mjs +7 -6
  163. package/.output/server/chunks/routes/ws/events.mjs +9 -7
  164. package/.output/server/chunks/routes/ws/term.mjs +7 -6
  165. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  166. package/.output/server/index.mjs +7 -6
  167. package/.output/server/package.json +1 -1
  168. package/README.md +44 -1445
  169. package/bin/lib/commands.mjs +44 -9
  170. package/bin/lib/panel.mjs +3 -11
  171. package/bin/lib/service.mjs +41 -2
  172. package/bin/lib/skill.mjs +1 -1
  173. package/bin/lib/tailnet.d.mts +6 -3
  174. package/bin/lib/tailnet.mjs +70 -32
  175. package/bin/lib/userpath.d.mts +14 -0
  176. package/bin/lib/userpath.mjs +142 -0
  177. package/docs/README.md +58 -0
  178. package/docs/RELEASING.md +174 -0
  179. package/docs/board.md +164 -0
  180. package/docs/command.md +58 -0
  181. package/docs/configuration.md +39 -0
  182. package/docs/conversation.md +132 -0
  183. package/docs/development.md +38 -0
  184. package/docs/devices.md +58 -0
  185. package/docs/files.md +29 -0
  186. package/docs/herdr-projects-1x.md +278 -0
  187. package/docs/home.md +52 -0
  188. package/docs/installation.md +174 -0
  189. package/docs/machines.md +69 -0
  190. package/docs/migrate-from-1.x-docker.md +160 -0
  191. package/docs/networks.md +154 -0
  192. package/docs/notifications.md +83 -0
  193. package/docs/overview.md +71 -0
  194. package/docs/phone.md +26 -0
  195. package/docs/plugins.md +109 -0
  196. package/docs/quick-start.md +89 -0
  197. package/docs/quotas.md +65 -0
  198. package/docs/release-notes-2.0.0.md +84 -0
  199. package/docs/security.md +117 -0
  200. package/docs/terminal.md +15 -0
  201. package/docs/troubleshooting.md +45 -0
  202. package/package.json +9 -3
  203. package/skills/wherdr/SKILL.md +24 -173
  204. package/.output/public/_nuxt/BEJHMUrj.js +0 -1
  205. package/.output/public/_nuxt/BOtcEDnA.js +0 -1
  206. package/.output/public/_nuxt/BUaYhQ2r.js +0 -6
  207. package/.output/public/_nuxt/CJNhn9sA.js +0 -36
  208. package/.output/public/_nuxt/COCvtdHN.js +0 -89
  209. package/.output/public/_nuxt/Cl45J6_Q.js +0 -1
  210. package/.output/public/_nuxt/CndPDbMI.js +0 -2
  211. package/.output/public/_nuxt/Ctbx58Um.js +0 -23
  212. package/.output/public/_nuxt/Dl1PHLOB.js +0 -1
  213. package/.output/public/_nuxt/Nhex3_iH.js +0 -1
  214. package/.output/public/_nuxt/OpWX45i7.js +0 -89
  215. package/.output/public/_nuxt/builds/meta/4994f3a4-4126-4f57-a9e5-c7ebb25850bc.json +0 -1
  216. package/.output/public/_nuxt/dTj21DMs.js +0 -1
  217. package/.output/public/_nuxt/entry.BohTWE-n.css +0 -2
  218. package/.output/public/_nuxt/kwSoIiM7.js +0 -1
  219. package/.output/public/_nuxt/mkEwYka4.js +0 -1
  220. package/.output/server/chunks/_/pluginPolicy.mjs +0 -93
  221. package/.output/server/chunks/_/projectBoard.mjs +0 -363
  222. package/.output/server/chunks/_/projectDocs.mjs +0 -106
  223. package/.output/server/chunks/_/projectInbox.mjs +0 -135
  224. package/.output/server/chunks/_/projectThreads.mjs +0 -46
  225. package/.output/server/chunks/_/projectThreads2.mjs +0 -61
  226. package/.output/server/chunks/_/projectsActions.mjs +0 -143
  227. package/.output/server/chunks/_/projectsPlugin.mjs +0 -30
  228. package/.output/server/chunks/_/projectsPlugin2.mjs +0 -57
  229. package/.output/server/chunks/_/reveal.mjs +0 -115
  230. package/.output/server/chunks/raw/dev.wherdr.open.mjs +0 -7
  231. package/.output/server/chunks/raw/docker-entrypoint.mjs +0 -7
  232. package/.output/server/chunks/raw/install-host-open.mjs +0 -7
  233. package/.output/server/chunks/raw/wherdr-open.mjs +0 -7
  234. package/.output/server/chunks/routes/api/board.get.mjs +0 -148
  235. package/.output/server/chunks/routes/api/plugins/thread-limits.post.mjs +0 -45
  236. package/.output/server/chunks/routes/api/project/inbox.get.mjs +0 -44
  237. package/.output/server/chunks/routes/api/project/inbox.post.mjs +0 -44
  238. package/.output/server/chunks/routes/api/project/memory.get.mjs +0 -43
  239. package/.output/server/chunks/routes/api/project/routines.get.mjs +0 -44
  240. package/.output/server/chunks/routes/api/project/thread.get.mjs +0 -45
  241. package/.output/server/chunks/routes/api/project/thread.post.mjs +0 -47
  242. package/bin/install-docker-skill.sh +0 -20
@@ -1,186 +1,37 @@
1
1
  ---
2
2
  name: wherdr
3
- description: Conventions for coordinating a herdr-projects project whose TASKS.md is shown and driven by wherdr's Project panel and Board. Use when you coordinate a herdr-projects project (you edit TASKS.md, launch and merge threads), and whenever a message starts with "✓ Tested:", "✓ Testé :", "↳ Problem:", "↳ Problème :", "↳ Question:", "↳ Question :", "✗ Problem:", "✗ Problème :", "? Question:", "? Question :", "↳ Decision:", "↳ Décision :", "↳ Launch", "↳ Lancer", "↳ Move up", "↳ Monter", "↳ Move down", "↳ Descendre", "↳ Queue:", "↳ Mettre en file", "↳ Remove from queue", "↳ Retirer de la file", "↳ Back to backlog", "↳ Remettre au backlog", "↳ Mark blocked", "↳ Marquer bloqué", "↳ Move to To do", "↳ Passer en À faire", "↳ Mark done", "↳ Marquer fait", "↳ Unblock", "↳ Débloquer", "↳ Detail on", "↳ Précision sur", "✓ Reviewed:", "✓ Relu :", "↳ Feedback on", "↳ Retour sur", "↳ Info for", "↳ Info pour" or "↳ Quote".
3
+ description: Handle messages from wherdr 2.0's Board for herdr-projects 1.x. Use as the Coordinator or a task's agent when a message may come from the Board.
4
4
  ---
5
5
 
6
- # wherdr Project panel conventions
6
+ # wherdr and herdr-projects
7
7
 
8
- wherdr shows the project's `TASKS.md` as a board on the user's phone and computer, with
9
- buttons on each task. Each button sends a short message to you, the coordinator. You own
10
- `TASKS.md`: the panel never edits it, it only reads it and asks you to. wherdr's **Board**
11
- (every project, thread and agent in Blocked / To do / Ongoing / Finished columns) sends the
12
- same messages when the user moves a task card to another column, plus the three moves of
13
- its own listed below.
8
+ wherdr shows the user's Herdr agents on their phone and computer. Its **Board** shows the
9
+ herdr-projects work board (1.2.1 or later) of every machine, in the board's own five groups:
10
+ needs you, ready to approve, working, to do, done (Done is hidden until the user shows it, so
11
+ the user may not see a finished task there). wherdr reads the board through the
12
+ herdr-projects command line (`list --json`, `details <id> --json`); it never edits the
13
+ board's files.
14
14
 
15
- Follow the project's own instructions (`PROJECT.md`) first; this skill fills in what the
16
- panel expects. Write task lines and badges in the user's language.
15
+ ## What reaches you from the Board
17
16
 
18
- wherdr reads herdr-projects **0.2** (projects, `TASKS.md`, threads), installed from
19
- `herdr plugin install afloury/herdr-projects --ref v0.2.36 --yes` (prebuilt binary). herdr-projects 1.x is a different product that wherdr does not
20
- support yet, and its first run moves `~/.herdr-projects`: never install it, and never run
21
- `herdr-projects update` on a 0.2 installed from `eliasstravik/herdr-projects` (it would
22
- install 1.x). Ask the user first.
17
+ wherdr adds no message format of its own. What the user does on the Board goes through the
18
+ ordinary herdr-projects commands, as if typed on the machine:
23
19
 
24
- ## TASKS.md format
25
-
26
- ```markdown
27
- ## To test
28
- - [ ] Swipe between panes on the phone [b:green(ready to test)] [b:gray(t-0042)](t-0042)
29
-
30
- ## In progress
31
- - [ ] Fix the quota shown for Codex [b:red(bug)] (agent → t-0043)
32
-
33
- ## In queue
34
- - [ ] Dark mode for the settings
35
-
36
- ## Backlog
37
- - [ ] Export a conversation as Markdown
38
- ```
39
-
40
- - Each `## Title` is a list; each `- [ ] text` (or `- text`) line under it is a task.
41
- `- [x]` marks it done. `#` headings, `###` subheadings, indented lines (task details) and
42
- fenced code blocks are ignored.
43
- - The last `(…)` of a line is the owner (`me`, `agent`, a name, `agent → t-NNNN`): read,
44
- never shown.
45
- - Lists are shown in a fixed order (the order below), whatever their order in the file.
46
- Unknown titles are shown after Backlog, without buttons. Only lists present in the file
47
- are shown (plus In progress when threads are open, and Done). Add or remove a list only
48
- when the user asks.
49
-
50
- ## Lists the panel recognizes
51
-
52
- Titles are matched case- and accent-insensitively; any of these names works.
53
-
54
- | List | Accepted titles | Meaning | Buttons |
55
- |---|---|---|---|
56
- | To test | À tester, To test, Testing, To verify, À vérifier, Test | Deployed, ready for the user to check. | Confirm, Problem, Question |
57
- | To decide | À décider, To decide, Decision(s), Decide, Question(s) | Questions only the user can settle. | Question, Answer |
58
- | To review | À relire, Relire, Relecture, To review, Review(s), Code review, PR(s), Pull request(s), À valider, To validate | Pull requests for the user to review; put the PR link in a badge or in the text. | Reviewed, Comment |
59
- | In progress | En cours, In progress, Doing, Ongoing, WIP, Active | Only what a thread is really doing now. Open threads are shown here live. | Add info (on a thread) |
60
- | In queue | En file, En file d'attente, File d'attente, File, In queue, Queue, Queued, Up next | Decided work: launch the first task as soon as a thread slot frees, in list order. | Up, Down, Launch now, Clarify, Remove from queue |
61
- | Blocked | Bloqué(e)(s), Blocked, On hold, En attente, Waiting, Stuck | Waiting for something external. Optional reason: `— blocked by: <reason>` (`— bloqué par : …`). | Unblock, Clarify |
62
- | To do | À faire, Todo, To do, To dos, Todos, Next, Prochainement, Soon | Soon, in the user's priority order. Never launched without a request. | Up, Down, Queue, Launch now, Clarify, Back to backlog |
63
- | Backlog | Backlog, Later, Plus tard, Idées, Ideas, Someday, Un jour | Everything else. Never launched without a request. | Launch, Clarify |
64
- | Done | Fait(s), Done, Terminé(e)(s), Finished, Complete(d) | Filled by the panel with threads marked done; you may leave it out. | — |
65
-
66
- Rules:
67
-
68
- - **To test** holds only what is deployed and ready. Work being fixed goes back to In
69
- progress; waiting work goes to In queue.
70
- - **No duplicates across lists.** When the user asks for a change to a feature that is in
71
- To test, remove its To test line; one line comes back to To test once the change is
72
- deployed (feature and change tested together).
73
- - **In queue** contract: whenever a thread slot frees (a thread is marked done), launch the
74
- first In queue task and move it to In progress, as long as the project and the machine
75
- have a free slot. The In queue header shows the thread slots in use
76
- (`max_parallel_threads` of `PROJECT.md`).
77
-
78
- ## Global thread limit per machine
79
-
80
- The user can set a maximum of threads per machine, across all projects, in wherdr
81
- (Settings › Plugins › herdr-projects). wherdr then writes `.wherdr-limits.json` in the
82
- herdr-projects folder (the parent of the project folder):
83
-
84
- ```json
85
- { "updated": "…", "this": "Server", "machines": { "Server": { "max": 2, "open": 2, "free": 0, "threads": ["shop/t-0012"] } } }
86
- ```
87
-
88
- Before starting a thread, read `machines[this].free` (or `machines["<machine>"]` for a
89
- thread on another machine; `max: null` means no global limit). When `free` is `0`, wait,
90
- even if the project still has slots. File missing or out of date: count the open threads of
91
- every project with `herdr-projects overview`. Go beyond a limit only when the user says so.
92
-
93
- ## `(agent → t-NNNN)`
94
-
95
- Write an In progress task handled by an open thread with the owner `(agent → t-NNNN)`
96
- (the arrow may also be `->`). The panel hides that line while the thread's own live card is
97
- shown, so the task does not appear twice. Write the thread ID exactly (`t-` and at least
98
- four digits).
99
-
100
- ## Badges
101
-
102
- The only decoration the panel draws. Anywhere on a task line:
103
-
104
- - `[b:color(text)]`: a badge. `[b:(text)]` is neutral.
105
- - `[b:color(text)](target)`: a clickable badge. Target: an `https://` (or `http://`) URL, or
106
- a thread ID (`t-0042`, opens that thread's tab). Anything else is not clickable.
107
- - Colors: `red`, `orange`, `amber`, `green`, `teal`, `blue`, `violet`, `pink`, `gray`
108
- (`grey`), a hex color (`#e5484d`, `#fff`), or nothing (neutral).
109
- - Text: short, at most 24 characters. It is removed from the task text (the text the
110
- panel sends back to you).
111
-
112
- Use them sparingly, when they help the user: two or three per line at most. Defaults
113
- unless the user prefers otherwise:
114
-
115
- - `[b:gray(t-0042)](t-0042)`: the thread a line comes from.
116
- - `[b:green(ready to test)]`: every To test line.
117
- - `[b:amber(fixing)]` (with the thread badge) on In progress work being fixed;
118
- `[b:gray(queued)]` on waiting work.
119
- - `[b:red(bug)]`: a fix. `[b:blue(iPhone)]`: to test on the phone.
120
- - A PR: `[b:violet(PR #12)](https://github.com/<owner>/<repo>/pull/12)`.
121
-
122
- A bare `http://` or `https://` URL in the task text also becomes a plain clickable
123
- link (for example `Review https://github.com/example/project/pull/12`). Use this
124
- when the URL should remain visible; use a linked badge for a compact label.
125
-
126
- ## Messages from the panel
127
-
128
- `<task>` is the task text as the panel shows it: the line without its checkbox, badges and
129
- owner. Find the line in `TASKS.md` by that text. The English or French form depends on the
130
- app language; treat them the same.
131
-
132
- Messages marked *sent* arrive as is. Messages marked *draft* are put in the user's input
133
- field, completed by the user, then sent. A draft starts with `↳` and ends with ` —`: it is a
134
- **reference**, the task on one line, the user's text on the lines below it, up to the next
135
- reference. (Earlier versions wrote a problem and a question on one line, `✗ Problem: <task> —
136
- <details>` and `? Question: <task> — <question>`: treat them the same.)
137
-
138
- The user quotes your own messages with the same kind of line, by the time shown on the message:
139
- `↳ Quote message 11:37 : <start of the message> —` (the whole message),
140
- `↳ Quote point 11:37 : <question, point or passage> —`,
141
- `↳ Quote decision 11:37 #3 : <question of row 3> —` (a row of a table of numbered decisions) and
142
- `↳ Quote decisions 11:37 #1-4 : <questions> —` (the whole table, usually followed by `OK to all`;
143
- `#1,4` when the rows are not consecutive).
144
- Read the lines under each one as the answer to that message and that row, even when you have
145
- written other messages since. Long excerpts are cut with `…`. A short code may follow the time
146
- or the row, as in `11:37 #3 ~k3f`: wherdr uses it to tell apart two of your messages written in
147
- the same minute, or two tables of one message. You have nothing to do with it.
148
- `↳ Info for` names a thread (`t-NNNN`) instead of a task; its text may span several lines.
149
-
150
- | Message (EN / FR) | From | What to do |
20
+ | On the Board | Command wherdr runs | Who gets it |
151
21
  |---|---|---|
152
- | `✓ Tested: <task>` / `✓ Testé : <task>` (sent) | To test › Confirm | The user validated it: remove the line from To test. |
153
- | `↳ Problem: <task> —` / `↳ Problème : <task> —`, then the details below (draft) | To test › Problem | A bug report: remove the line from To test, fix it (or launch a thread) and track it in In progress; it comes back to To test once the fix is deployed. |
154
- | `↳ Question: <task> —` / `↳ Question : <task> —`, then the question below (draft) | To test, To decide › Question | Answer in detail: what to test and how (where to tap, expected result), from the thread's report. Do not change `TASKS.md`. |
155
- | `↳ Decision: <task> —` / `↳ Décision : <task> —`, then the answer below (draft) | To decide › Answer | Apply the decision, remove the line from To decide, and record it where the project keeps durable decisions. |
156
- | `✓ Reviewed: <task>` / `✓ Relu : <task>` (sent) | To review › Reviewed | The user reviewed the PR: carry on (merge, deploy as the project says) and remove the line from To review. |
157
- | `↳ Feedback on <task> —` / `↳ Retour sur <task> —`, then the comments below (draft) | To review › Comment | Review feedback on that PR: apply it or send it to the thread. |
158
- | `↳ Move up: <task>` / `↳ Monter : <task>` (sent) | To do, In queue | Move the line one place up in its list. May arrive several times in a row. |
159
- | `↳ Move down: <task>` / `↳ Descendre : <task>` (sent) | To do, In queue | Move the line one place down in its list. |
160
- | `↳ Queue: <task>` / `↳ Mettre en file : <task>` (sent) | To do › Queue | Move the line from To do to the end of In queue; launch it if a slot is free and it is first. |
161
- | `↳ Launch now: <task>` / `↳ Lancer maintenant : <task>` (sent) | To do, In queue › Launch now | Launch a thread now if the project and the machine have a free slot (beyond the limits only if the user says so); otherwise put the line first in In queue. |
162
- | `↳ Remove from queue: <task>` / `↳ Retirer de la file : <task>` (sent) | In queue | Move the line back to the top of To do. |
163
- | `↳ Back to backlog: <task>` / `↳ Remettre au backlog : <task>` (sent) | To do | Move the line to Backlog. |
164
- | `↳ Launch: <task>` / `↳ Lancer : <task>` (sent) | Backlog › Launch | Start the task: a thread if a slot is free, otherwise first in In queue. |
165
- | `↳ Unblock: <task>` / `↳ Débloquer : <task>` (sent) | Blocked › Unblock | Relaunch the task, or ask the user exactly what is still missing. |
166
- | `↳ Mark blocked: <task>` / `↳ Marquer bloqué : <task>` (sent) | Board: a task moved to Blocked | Move the line to Blocked (add that list if it is missing); ask the user what it waits for if you do not know. |
167
- | `↳ Move to To do: <task>` / `↳ Passer en À faire : <task>` (sent) | Board: a task moved to To do (from Blocked, In progress or Done) | Move the line to the end of To do (add that list if it is missing), unchecked. Do not launch it. |
168
- | `↳ Mark done: <task>` / `↳ Marquer fait : <task>` (sent) | Board: a task moved to Finished | The task is finished or no longer needed: move the line, checked, to Done when the project has that list, otherwise remove it. |
169
- | `↳ Detail on <task> —` / `↳ Précision sur <task> —`, then the details below (draft) | Clarify (Backlog, To do, In queue, Blocked) | Add the details to the task (indented lines under it, or the thread's brief) and confirm. Do not launch it. |
170
- | `↳ Info for t-NNNN: <text>` / `↳ Info pour t-NNNN : <text>` (sent) | In progress › Add info (a thread's card, or the task of a thread) | Pass `<text>` on to that thread as is, every line of it, without rewording (`herdr-projects thread prompt <project> t-NNNN --text-file <file>`, `-` reads standard input), then confirm to the user in one line. Do not change `TASKS.md`. If the thread is done or unknown, say so instead. |
171
-
172
- Never launch a task from To do or Backlog without one of these requests.
173
-
174
- ## After a deployment
22
+ | The Coordinator box | `herdr-projects coordinator tell <text>` | the Coordinator |
23
+ | Reply, on a task | `herdr-projects tell <id> <text>` | that task's agent (on a plan that waits: the plan goes back with the text) |
24
+ | Approve, on a task | `herdr-projects approve <id>` | the board: it merges, or says yes to the plan |
175
25
 
176
- For each change the user can now see, add one To test line written from the user's point
177
- of view: what to open and what should happen, not the technical cause ("Swipe between
178
- panes on the phone", not "Fix pointer events in PaneSwiper"). Add
179
- `[b:green(ready to test)]` and the thread badge. Remove the matching In progress line.
26
+ (`herdr-projects` stands for the launcher the board hands you by its full path,
27
+ `~/.herdr-projects/data/bin/herdr-projects`: 1.x puts nothing on the PATH.)
180
28
 
181
- Name threads and tasks the same way: what the user sees.
29
+ So a message from the Board is the user's own words: answer and act on it as on any message
30
+ from them. Report your progress with `herdr-projects report` as usual: the Board shows the
31
+ state, the message and the progress you report, the pull request and the review.
182
32
 
183
- ## Questions left unanswered
33
+ ## What the Board does not do
184
34
 
185
- A question you asked the user that is still open goes to To decide, so the user can answer
186
- it from the panel. Remove the line as soon as it is answered.
35
+ No task is added, delegated, stopped, archived or cleared from wherdr: the user asks the
36
+ Coordinator for that, in the Coordinator box. Settings and automations stay in the board's own
37
+ screens in Herdr.
@@ -1 +0,0 @@
1
- import{Hn as e,N as t,Ot as n,P as r,St as i,U as a,gr as o,j as s}from"./C25ROUa9.js";import{Ur as c,_ as l,b as u}from"./COCvtdHN.js";var d={key:0,id:`placeholder`,class:`view placeholder hw-grid`},f={class:`empty-box`},p={class:`muted`},m=a({__name:`index`,setup(a){return i(()=>{l.value=null}),(i,a)=>(`desk`in i?i.desk:e(u))?(n(),r(`section`,d,[s(`div`,f,[a[0]||=s(`div`,{class:`empty-art`},`>_`,-1),s(`p`,null,o((`t`in i?i.t:e(c))(`Choose an agent from the list`)),1),s(`p`,p,o((`t`in i?i.t:e(c))(`or start a new one.`)),1)])])):t(``,!0)}});export{m as default};
@@ -1 +0,0 @@
1
- import{$ as e,A as t,An as n,B as r,Et as i,Ft as a,Hn as o,M as s,Mn as c,N as l,Ot as u,P as d,Pt as f,R as p,Rn as m,Rt as h,St as g,U as _,V as v,Yt as y,Zt as b,an as x,b as S,ct as C,fr as w,ft as T,gr as E,ht as D,j as O,mr as k,mt as A,nn as j,pt as M,rn as N,sn as P,wn as F,zn as I}from"./C25ROUa9.js";import{_t as ee,vt as L}from"./CDWjMk9C.js";import{$ as te,A as ne,B as re,C as ie,Cr as ae,Ct as oe,E as se,F as ce,Ft as le,Gt as R,H as z,It as ue,J as de,K as fe,Kt as B,L as pe,Lt as me,M as he,Mt as ge,N as V,Nt as _e,O as ve,P as ye,Pt as be,Q as xe,Rt as Se,T as Ce,U as we,V as Te,X as Ee,Z as De,an as Oe,at as ke,ct as H,d as Ae,dr as je,dt as U,ei as Me,et as Ne,ft as Pe,gt as Fe,ht as Ie,in as Le,it as Re,j as ze,jt as Be,kt as W,lt as Ve,mt as G,o as He,ot as Ue,p as We,pt as K,st as Ge,t as Ke,ut as q,vt as qe,x as Je,xr as Ye,xt as Xe,y as Ze,yr as Qe,yt as $e}from"./OpWX45i7.js";import{m as et,u as tt}from"./CXJnLmWv.js";import{c as nt}from"./BUaYhQ2r.js";import{N as rt,O as it,T as at,Ur as ot,V as st,Vr as ct,Wr as lt,kr as ut,mt as dt,tt as ft,yn as pt}from"./COCvtdHN.js";var mt=[`INPUT`,`TEXTAREA`];function ht(e,t,n,r={}){if(!t||r.enableIgnoredElement&&mt.includes(t.nodeName))return null;let{arrowKeyOptions:i=`both`,attributeName:a=`[data-reka-collection-item]`,itemsArray:o=[],loop:s=!0,dir:c=`ltr`,preventScroll:l=!0,focus:u=!1}=r,[d,f,p,m,h,g]=[e.key===`ArrowRight`,e.key===`ArrowLeft`,e.key===`ArrowUp`,e.key===`ArrowDown`,e.key===`Home`,e.key===`End`],_=p||m,v=d||f;if(!h&&!g&&(!_&&!v||i===`vertical`&&v||i===`horizontal`&&_))return null;let y=n?Array.from(n.querySelectorAll(a)):o;if(!y.length)return null;l&&e.preventDefault();let b=null;return v||_?b=gt(y,t,{goForward:_?m:c===`ltr`?d:f,loop:s}):h?b=y.at(0)||null:g&&(b=y.at(-1)||null),u&&b?.focus(),b}function gt(e,t,n,r=e.includes(t)?e.length:e.length+1){if(--r===0)return null;let i=e.indexOf(t),a;if(a=i===-1?n.goForward?0:e.length-1:n.goForward?i+1:i-1,!n.loop&&(a<0||a>=e.length))return null;let o=e[(a+e.length)%e.length];return o?o.hasAttribute(`disabled`)&&o.getAttribute(`disabled`)!==`false`?gt(e,o,n,r):o:null}var _t=ge(()=>{let e=c(new Map),n=c(),r=t(()=>{for(let t of e.value.values())if(t)return!0;return!1}),i=qe({scrollBody:c(!0)}),a=null,o=()=>{document.body.style.paddingRight=``,document.body.style.marginRight=``,Fe.layersWithOutsidePointerEventsDisabled.size===0&&(document.body.style.pointerEvents=``),document.documentElement.style.removeProperty(`--scrollbar-width`),document.body.style.overflow=n.value??``,be&&a?.(),n.value=void 0};return j(r,(e,t)=>{if(!_e)return;if(!e){t&&o();return}n.value===void 0&&(n.value=document.body.style.overflow);let s=window.innerWidth-document.documentElement.clientWidth,c={padding:s,margin:0},l=i.scrollBody?.value?typeof i.scrollBody.value==`object`?et({padding:i.scrollBody.value.padding===!0?s:i.scrollBody.value.padding,margin:i.scrollBody.value.margin===!0?s:i.scrollBody.value.margin},c):c:{padding:0,margin:0};s>0&&(document.body.style.paddingRight=typeof l.padding==`number`?`${l.padding}px`:String(l.padding),document.body.style.marginRight=typeof l.margin==`number`?`${l.margin}px`:String(l.margin),document.documentElement.style.setProperty(`--scrollbar-width`,`${s}px`),document.body.style.overflow=`hidden`),be&&(a=oe(document,`touchmove`,e=>bt(e),{passive:!1})),D(()=>{r.value&&(document.body.style.pointerEvents=`none`,document.body.style.overflow=`hidden`)})},{immediate:!0,flush:`sync`}),e});function vt(e){let n=Math.random().toString(36).substring(2,7),r=_t();r.value.set(n,e??!1);let i=t({get:()=>r.value.get(n)??!1,set:e=>r.value.set(n,e)});return Se(()=>{r.value.delete(n)}),i}function yt(e){let t=window.getComputedStyle(e);if(t.overflowX===`scroll`||t.overflowY===`scroll`||t.overflowX===`auto`&&e.clientWidth<e.scrollWidth||t.overflowY===`auto`&&e.clientHeight<e.scrollHeight)return!0;{let t=e.parentNode;return!(t instanceof Element)||t.tagName===`BODY`?!1:yt(t)}}function bt(e){let t=e||window.event,n=t.target;return n instanceof Element&&yt(n)?!1:t.touches.length>1||(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}var xt=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Bopomofo}]/u,St=/android/i;function Ct(){return typeof navigator<`u`&&St.test(navigator.userAgent)}function wt(e){let n=c(!1),r=c(!0),i=c(!1),a=t(()=>n.value&&r.value);function o(){n.value=!0,r.value=!0,i.value=!1}function s(e){e.data&&(xt.test(e.data)?(r.value=!0,i.value=!0):Ct()&&!i.value&&(r.value=!1))}function l(t){D(()=>{n.value=!1,e?.(t)})}return{isComposing:n,shouldDeferInput:a,handleCompositionStart:o,handleCompositionUpdate:s,handleCompositionEnd:l}}function Tt(e){let n=t(()=>o(e)),r=t(()=>new Intl.Collator(`en`,{usage:`search`,...n.value}));return{startsWith:(e,t)=>t.length===0||(e=e.normalize(`NFC`),t=t.normalize(`NFC`),r.value.compare(e.slice(0,t.length),t)===0),endsWith:(e,t)=>t.length===0||(e=e.normalize(`NFC`),t=t.normalize(`NFC`),r.value.compare(e.slice(-t.length),t)===0),contains:(e,t)=>{if(t.length===0)return!0;e=e.normalize(`NFC`),t=t.normalize(`NFC`);let n=0,i=t.length;for(;n+i<=e.length;n++){let a=e.slice(n,n+i);if(r.value.compare(t,a)===0)return!0}return!1}}}var Et=0;function Dt(){N(e=>{if(!_e)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??Ot()),document.body.insertAdjacentElement(`beforeend`,t[1]??Ot()),Et++,e(()=>{Et===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),Et--})})}function Ot(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var kt=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},J=new WeakMap,At=new WeakMap,jt={},Mt=0,Nt=function(e){return e&&(e.host||Nt(e.parentNode))},Pt=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Nt(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Ft=function(e,t,n,r){var i=Pt(t,Array.isArray(e)?e:[e]);jt[n]||(jt[n]=new WeakMap);var a=jt[n],o=[],s=new Set,c=new Set(i),l=function(e){e&&!s.has(e)&&(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(J.get(e)||0)+1,l=(a.get(e)||0)+1;J.set(e,c),a.set(e,l),o.push(e),c===1&&i&&At.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Mt++,function(){o.forEach(function(e){var t=J.get(e)-1,i=a.get(e)-1;J.set(e,t),a.set(e,i),t||(At.has(e)||e.removeAttribute(r),At.delete(e)),i||e.removeAttribute(n)}),Mt--,Mt||(J=new WeakMap,J=new WeakMap,At=new WeakMap,jt={})}},It=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||kt(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Ft(r,i,n,`aria-hidden`)):function(){return null}};function Lt(e){let t;j(()=>Xe(e),e=>{let n=!1;try{n=!!e?.closest(`[popover]:not(:popover-open)`)}catch{}e&&!n?t=It(e):t&&t()}),i(()=>{t&&t()})}function Rt(e){let t=me(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=R(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=Bt(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function zt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Bt(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=zt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}var Vt=Be(()=>c([]));function Ht(){let e=Vt();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=Ut(e.value,t),e.value.unshift(t)},remove(t){e.value=Ut(e.value,t),e.value[0]?.resume()}}}function Ut(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}var Wt=`focusScope.autoFocusOnMount`,Gt=`focusScope.autoFocusOnUnmount`,Kt={bubbles:!1,cancelable:!0};function qt(e,{select:t=!1}={}){let n=R();for(let r of e)if(Y(r,{select:t}),R()!==n)return!0}function Jt(e){let t=Yt(e);return[Xt(t,e),Xt(t.reverse(),e)]}function Yt(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Xt(e,t){for(let n of e)if(!Zt(n,{upTo:t}))return n}function Zt(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Qt(e){return e instanceof HTMLInputElement&&`select`in e}function Y(e,{select:t=!1}={}){if(e&&e.focus){let n=R();e.focus({preventScroll:!0}),e!==n&&Qt(e)&&t&&e.select()}}var $t=_({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},present:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:t}){let r=e,i=t,{currentRef:l,currentElement:d}=K(),f=c(null),p=Ht(),m=n({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});N(e=>{if(!_e)return;let t=d.value;if(!r.trapped)return;function n(e){if(m.paused||!t)return;let n=e.target;t.contains(n)?f.value=n:Y(f.value,{select:!0})}function i(e){if(m.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||Y(f.value,{select:!0}))}function a(e){let n=f.value;if(n===null||!e.some(e=>e.removedNodes.length>0))return;let r=R();r&&t.contains(r)||t.contains(n)||Y(t)}document.addEventListener(`focusin`,n),document.addEventListener(`focusout`,i);let o=new MutationObserver(a);t&&o.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,n),document.removeEventListener(`focusout`,i),o.disconnect()})});function h(e,t){let n=new CustomEvent(Wt,Kt),r=e=>i(`mountAutoFocus`,e);e.addEventListener(Wt,r),e.dispatchEvent(n),e.removeEventListener(Wt,r),n.defaultPrevented||(qt(Yt(e),{select:!0}),R()===t&&Y(e))}N(async e=>{let t=d.value;if(await D(),!t)return;r.present!==!1&&p.add(m);let n=R();!t.contains(n)&&r.present!==!1&&h(t,n),e(()=>{let e=new CustomEvent(Gt,Kt),r=e=>{i(`unmountAutoFocus`,e)};t.addEventListener(Gt,r),t.dispatchEvent(e),t.setAttribute(`data-focus-scope-unmounting`,``),setTimeout(()=>{e.defaultPrevented||Y(n??document.body,{select:!0}),t.removeEventListener(Gt,r),p.remove(m),t.removeAttribute(`data-focus-scope-unmounting`)},0)})}),j(()=>r.present,async(e,t)=>{if(!_e)return;if(e===!1&&t===!0){p.remove(m);return}if(e!==!0||t!==!1)return;p.add(m),await D();let n=d.value;if(!n)return;let r=R();n.contains(r)||h(n,r)});function g(e){if(!r.loop&&!r.trapped||m.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=R();if(t&&n){let t=e.currentTarget,[i,a]=Jt(t);i&&a?!e.shiftKey&&n===a?(e.preventDefault(),r.loop&&Y(i,{select:!0})):e.shiftKey&&n===i&&(e.preventDefault(),r.loop&&Y(a,{select:!0})):n===t&&e.preventDefault()}}return(e,t)=>(u(),s(o(H),{ref_key:`currentRef`,ref:l,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:g},{default:P(()=>[a(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),en=`menu.itemSelect`,tn=[`Enter`,` `],nn=[`ArrowDown`,`PageUp`,`Home`],rn=[`ArrowUp`,`PageDown`,`End`],an=[...nn,...rn],on={ltr:[...tn,`ArrowRight`],rtl:[...tn,`ArrowLeft`]},sn={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]};function cn(e){return e?`open`:`closed`}function ln(e){return e===`indeterminate`}function un(e){return ln(e)?`indeterminate`:e?`checked`:`unchecked`}function dn(e){let t=R();for(let n of e)if(n===t||(n.focus(),R()!==t))return}function fn(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function pn(e,t){return t?fn({x:e.clientX,y:e.clientY},t):!1}function X(e){return e.pointerType===`mouse`}var mn=_({__name:`MenuAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return(t,r)=>(u(),s(o(te),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),hn=_({__name:`MenuArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return(t,r)=>(u(),s(o(Ee),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}});function gn(){let e=c(!1);return g(()=>{oe(`keydown`,()=>{e.value=!0},{capture:!0,passive:!0}),oe([`pointerdown`,`pointermove`],()=>{e.value=!1},{capture:!0,passive:!0})}),e}var _n=ge(gn),[Z,vn]=B([`MenuRoot`,`MenuSub`],`MenuContext`),[Q,yn]=B(`MenuRoot`),bn=_({__name:`MenuRoot`,props:{open:{type:Boolean,required:!1,default:!1},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,{modal:i,dir:l}=I(n),d=Ie(l),f=W(n,`open`,r),p=c(),m=_n();return vn({open:f,onOpenChange:e=>{f.value=e},content:p,onContentChange:e=>{p.value=e}}),yn({onClose:()=>{f.value=!1},isUsingKeyboardRef:m,dir:d,modal:i}),(e,t)=>(u(),s(o(Ne),null,{default:P(()=>[a(e.$slots,`default`)]),_:3}))}}),[xn,Sn]=B(`MenuContent`),Cn=_({__name:`MenuContentImpl`,props:T({loop:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},disableOutsideScroll:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...De}),emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`,`dismiss`],setup(e,{emit:t}){let n=e,r=t,l=Z(),d=Q(),{trapFocus:f,disableOutsidePointerEvents:p,loop:m}=I(n);Dt(),vt(p.value);let h=c(``),g=c(0),_=c(0),y=c(null),b=c(`right`),x=c(0),S=c(null),C=c(),{forwardRef:w,currentElement:T}=K(),{handleTypeaheadSearch:E}=Rt(),D=c();function O(e){let t=ht(e,D.value||R(),T.value,{loop:m.value,arrowKeyOptions:`vertical`,dir:d?.dir.value,focus:!1,attributeName:`[data-reka-collection-item]:not([data-disabled])`});t&&(D.value=t,t.scrollIntoView({block:`nearest`}))}function k(){D.value&&D.value.click()}let A=c(),M=c();j(D,e=>{if(M.value&&(e===void 0||e!==M.value.trigger.value)){if(e===void 0)return;M.value.onOpenChange(!1),M.value=void 0}}),j(T,e=>{l.onContentChange(e)}),i(()=>{window.clearTimeout(g.value)});function N(e){return b.value===y.value?.side&&pn(e,y.value?.area)}async function F(e){r(`openAutoFocus`,e),!e.defaultPrevented&&(e.preventDefault(),T.value?.focus({preventScroll:!0}))}function ee(e){if(e.defaultPrevented)return;let t=e.target,n=t.closest(`[data-reka-menu-content]`)===e.currentTarget,r=[`input`,`textarea`].includes(t.tagName.toLowerCase()),i=e.ctrlKey||e.altKey||e.metaKey,a=e.key.length===1,o=ht(e,R(),T.value,{loop:m.value,arrowKeyOptions:`vertical`,dir:d?.dir.value,focus:!0,attributeName:`[data-reka-collection-item]:not([data-disabled])`});if(o)return o?.focus();if(e.code===`Space`)return;let s=C.value?.getItems()??[];if(n&&(e.key===`Tab`&&d.modal.value&&e.preventDefault(),!i&&a&&!r&&E(e.key,s)),e.target!==T.value||!an.includes(e.key))return;e.preventDefault();let c=[...s.map(e=>e.ref)];rn.includes(e.key)&&c.reverse(),dn(c)}function L(e){e?.currentTarget?.contains?.(e.target)||(window.clearTimeout(g.value),h.value=``)}function te(e){if(!X(e))return;let t=e.target,n=x.value!==e.clientX;if((e?.currentTarget)?.contains(t)&&n){let t=e.clientX>x.value?`right`:`left`;b.value=t,x.value=e.clientX}}function ne(e){X(e)&&A.value&&A.value.focus()}return Sn({onItemEnter:e=>!!N(e),onItemLeave:e=>N(e)?!0:([`INPUT`,`TEXTAREA`].includes(R()?.tagName||``)||T.value?.focus(),S.value=null,!1),onTriggerLeave:e=>!!N(e),searchRef:h,highlightedElement:D,onKeydownNavigation:O,onKeydownEnter:k,filterElement:A,onFilterElementChange:e=>{A.value=e},activeSubmenuContext:M,pointerGraceTimerRef:_,onPointerGraceIntentChange:e=>{y.value=e}}),(e,t)=>(u(),s(o($t),{"as-child":``,trapped:o(f),onMountAutoFocus:F,onUnmountAutoFocus:t[7]||=e=>r(`closeAutoFocus`,e)},{default:P(()=>[v(o(Ue),{"as-child":``,"disable-outside-pointer-events":o(p),onEscapeKeyDown:t[2]||=e=>r(`escapeKeyDown`,e),onPointerDownOutside:t[3]||=e=>r(`pointerDownOutside`,e),onFocusOutside:t[4]||=e=>r(`focusOutside`,e),onInteractOutside:t[5]||=e=>r(`interactOutside`,e),onDismiss:t[6]||=e=>r(`dismiss`)},{default:P(()=>[v(o(de),{ref_key:`rovingFocusGroupRef`,ref:C,"current-tab-stop-id":S.value,"onUpdate:currentTabStopId":t[0]||=e=>S.value=e,"as-child":``,orientation:`vertical`,dir:o(d).dir.value,loop:o(m),onEntryFocus:t[1]||=e=>{r(`entryFocus`,e),o(d).isUsingKeyboardRef.value||e.preventDefault()}},{default:P(()=>[v(o(xe),{ref:o(w),role:`menu`,as:e.as,"as-child":e.asChild,"aria-orientation":`vertical`,"data-reka-menu-content":``,"data-state":o(cn)(o(l).open.value),dir:o(d).dir.value,side:e.side,"side-offset":e.sideOffset,align:e.align,"align-offset":e.alignOffset,"avoid-collisions":e.avoidCollisions,"collision-boundary":e.collisionBoundary,"collision-padding":e.collisionPadding,"arrow-padding":e.arrowPadding,"prioritize-position":e.prioritizePosition,"position-strategy":e.positionStrategy,"update-position-strategy":e.updatePositionStrategy,sticky:e.sticky,"hide-when-detached":e.hideWhenDetached,reference:e.reference,onKeydown:ee,onBlur:L,onPointermove:te,onPointerenter:ne},{default:P(()=>[a(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`,`dir`,`side`,`side-offset`,`align`,`align-offset`,`avoid-collisions`,`collision-boundary`,`collision-padding`,`arrow-padding`,`prioritize-position`,`position-strategy`,`update-position-strategy`,`sticky`,`hide-when-detached`,`reference`])]),_:3},8,[`current-tab-stop-id`,`dir`,`loop`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),wn=_({inheritAttrs:!1,__name:`MenuItemImpl`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e,r=xn(),{forwardRef:i,currentElement:l}=K(),{CollectionItem:d}=Re(),f=c(!1),p=t(()=>f.value||l.value!=null&&r.highlightedElement.value===l.value);async function m(e){if(!e.defaultPrevented&&X(e)){if(n.disabled)r.onItemLeave(e);else if(!r.onItemEnter(e)){let t=e.currentTarget;r.highlightedElement.value=t,[`INPUT`,`TEXTAREA`].includes(R()?.tagName||``)||t.focus({preventScroll:!0})}}}async function h(e){await D(),!e.defaultPrevented&&X(e)&&r.highlightedElement.value===l.value&&!r.onItemLeave(e)&&r.highlightedElement.value===l.value&&(r.highlightedElement.value=void 0)}return(e,t)=>(u(),s(o(d),{value:{textValue:e.textValue}},{default:P(()=>[v(o(H),A({ref:o(i),role:`menuitem`,tabindex:`-1`},e.$attrs,{as:e.as,"as-child":e.asChild,"aria-disabled":e.disabled||void 0,"data-disabled":e.disabled?``:void 0,"data-highlighted":p.value?``:void 0,onPointermove:m,onPointerleave:h,onFocus:t[0]||=async t=>{await D(),!(t.defaultPrevented||e.disabled)&&(f.value=!0,o(r).highlightedElement.value=t.currentTarget)},onBlur:t[1]||=async e=>{await D(),!e.defaultPrevented&&(f.value=!1)}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`aria-disabled`,`data-disabled`,`data-highlighted`])]),_:3},8,[`value`]))}}),Tn=_({__name:`MenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,{forwardRef:i,currentElement:l}=K(),d=Q(),f=xn(),p=c(!1);async function m(){let e=l.value;if(!n.disabled&&e){let e=new CustomEvent(en,{bubbles:!0,cancelable:!0});r(`select`,e),await D(),e.defaultPrevented?p.value=!1:d.onClose()}}return(e,t)=>(u(),s(wn,A(n,{ref:o(i),onClick:m,onPointerdown:t[0]||=()=>{p.value=!0},onPointerup:t[1]||=async e=>{await D(),!e.defaultPrevented&&(p.value||e.currentTarget?.click())},onKeydown:t[2]||=async t=>{let n=o(f).searchRef.value!==``;e.disabled||n&&t.key===` `||o(tn).includes(t.key)&&(t.currentTarget?.click(),t.preventDefault())}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))}}),[En,Dn]=B([`MenuCheckboxItem`,`MenuRadioItem`],`MenuItemIndicatorContext`),On=_({__name:`MenuItemIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=En({modelValue:c(!1)});return(e,n)=>(u(),s(o(Ve),{present:e.forceMount||o(ln)(o(t).modelValue.value)||o(t).modelValue.value===!0},{default:P(()=>[v(o(H),{as:e.as,"as-child":e.asChild,"data-state":o(un)(o(t).modelValue.value)},{default:P(()=>[a(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`])]),_:3},8,[`present`]))}}),kn=_({__name:`MenuCheckboxItem`,props:{modelValue:{type:[Boolean,String],required:!1,default:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`,`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,i=le(n,[`modelValue`]),c=Pe(i),l=W(n,`modelValue`,r);return Dn({modelValue:l}),(e,t)=>(u(),s(Tn,A({role:`menuitemcheckbox`},o(c),{"aria-checked":o(ln)(o(l))?`mixed`:o(l),"data-state":o(un)(o(l)),onSelect:t[0]||=async e=>{r(`select`,e),o(ln)(o(l))?l.value=!0:l.value=!o(l)}}),{default:P(()=>[a(e.$slots,`default`,{modelValue:o(l)})]),_:3},16,[`aria-checked`,`data-state`]))}}),An=_({__name:`MenuRootContentModal`,props:{loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=U(n,r),c=Z(),{forwardRef:l,currentElement:d}=K();return Lt(d),(e,t)=>(u(),s(Cn,A(o(i),{ref:o(l),"trap-focus":o(c).open.value,"disable-outside-pointer-events":o(c).open.value,"disable-outside-scroll":!0,onDismiss:t[0]||=e=>o(c).onOpenChange(!1),onFocusOutside:t[1]||=L(e=>r(`focusOutside`,e),[`prevent`])}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`trap-focus`,`disable-outside-pointer-events`]))}}),jn=_({__name:`MenuRootContentNonModal`,props:{loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t),r=Z();return(e,t)=>(u(),s(Cn,A(o(n),{"trap-focus":!1,"disable-outside-pointer-events":!1,"disable-outside-scroll":!1,onDismiss:t[0]||=e=>o(r).onOpenChange(!1)}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))}}),Mn=_({__name:`MenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t),r=Z(),i=Q();return(e,t)=>(u(),s(o(Ve),{present:e.forceMount||o(r).open.value},{default:P(()=>[o(i).modal.value?(u(),s(An,k(A({key:0},{...e.$attrs,...o(n)})),{default:P(()=>[a(e.$slots,`default`)]),_:3},16)):(u(),s(jn,k(A({key:1},{...e.$attrs,...o(n)})),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),[Nn,Pn]=B(`MenuGroup`),Fn=_({__name:`MenuGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=q(void 0,`reka-menu-group`);return Pn({id:n}),(e,r)=>(u(),s(o(H),A({role:`group`},t,{"aria-labelledby":o(n)}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`aria-labelledby`]))}}),In=_({__name:`MenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e,n=Nn({id:``});return(e,r)=>(u(),s(o(H),A(t,{id:o(n).id||void 0}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`id`]))}}),Ln=_({__name:`MenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){let n=t;return(t,r)=>(u(),s(o(ke),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),[Rn,zn]=B(`MenuRadioGroup`),Bn=_({__name:`MenuRadioGroup`,props:{modelValue:{type:null,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=n,c=le(r,[`modelValue`]),l=Pe(c),d=W(r,`modelValue`,i);return zn({modelValue:d,onValueChange:e=>{d.value=e}}),(t,n)=>(u(),s(Fn,k(e(o(l))),{default:P(()=>[a(t.$slots,`default`,{modelValue:o(d)})]),_:3},16))}}),Vn=_({__name:`MenuRadioItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:n}){let r=e,i=n,c=le(r,[`value`]),l=Pe(c),{value:d}=I(r),f=Rn(),p=t(()=>f.modelValue.value===d?.value);return Dn({modelValue:p}),(e,t)=>(u(),s(Tn,A({role:`menuitemradio`},o(l),{"aria-checked":p.value,"data-state":o(un)(p.value),onSelect:t[0]||=async e=>{i(`select`,e),o(f).onValueChange(o(d))}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`aria-checked`,`data-state`]))}}),Hn=_({__name:`MenuSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return(e,n)=>(u(),s(o(H),A(t,{role:`separator`,"aria-orientation":`horizontal`}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))}}),[Un,Wn]=B(`MenuSub`),Gn=_({__name:`MenuSub`,props:{open:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=W(n,`open`,t,{defaultValue:!1,passive:n.open===void 0}),i=Z(),l=c(),d=c();return N(e=>{i?.open.value===!1&&(r.value=!1),e(()=>r.value=!1)}),vn({open:r,onOpenChange:e=>{r.value=e},content:d,onContentChange:e=>{d.value=e}}),Wn({triggerId:``,contentId:``,trigger:l,onTriggerChange:e=>{l.value=e}}),(e,t)=>(u(),s(o(Ne),null,{default:P(()=>[a(e.$slots,`default`)]),_:3}))}}),Kn=_({__name:`MenuSubContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1,default:!0},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t),r=Z(),i=Q(),c=Un(),l=xn(),{forwardRef:d,currentElement:f}=K();return c.contentId||=q(void 0,`reka-menu-sub-content`),(e,t)=>(u(),s(o(Ve),{present:e.forceMount||o(r).open.value},{default:P(()=>[v(Cn,A(o(n),{id:o(c).contentId,ref:o(d),"aria-labelledby":o(c).triggerId,align:`start`,side:o(i).dir.value===`rtl`?`left`:`right`,"disable-outside-pointer-events":!1,"disable-outside-scroll":!1,"trap-focus":!1,onOpenAutoFocus:t[0]||=L(e=>{o(i).isUsingKeyboardRef.value&&o(f)?.focus()},[`prevent`]),onCloseAutoFocus:t[1]||=L(()=>{},[`prevent`]),onFocusOutside:t[2]||=e=>{if(e.defaultPrevented)return;let t=o(l).filterElement.value?.contains(e.target);e.target!==o(c).trigger.value&&!t&&o(r).onOpenChange(!1)},onEscapeKeyDown:t[3]||=e=>{o(i).onClose(),e.preventDefault()},onKeydown:t[4]||=e=>{let t=e.currentTarget?.contains(e.target),n=o(sn)[o(i).dir.value].includes(e.key);t&&n&&(o(r).onOpenChange(!1),o(l).filterElement.value?(o(l).filterElement.value.focus(),o(l).highlightedElement.value=o(c).trigger.value,o(c).trigger.value?.scrollIntoView({block:`nearest`})):o(c).trigger.value?.focus(),e.preventDefault())}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`id`,`aria-labelledby`,`side`])]),_:3},8,[`present`]))}}),qn=_({__name:`MenuSubTrigger`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=Z(),r=Q(),l=Un(),d=xn();j(n.open,e=>{e?d.activeSubmenuContext.value={onOpenChange:n.onOpenChange,trigger:l.trigger}:d.activeSubmenuContext.value?.trigger.value===l.trigger.value&&(d.activeSubmenuContext.value=void 0)});let f=c(null);l.triggerId||=q(void 0,`reka-menu-sub-trigger`);function p(){f.value&&window.clearTimeout(f.value),f.value=null}i(()=>{p()});function m(e){X(e)&&(d.onItemEnter(e)||!t.disabled&&!n.open.value&&!f.value&&(d.onPointerGraceIntentChange(null),f.value=window.setTimeout(()=>{n.onOpenChange(!0),p()},100)))}async function h(e){if(!X(e))return;p();let t=n.content.value?.getBoundingClientRect();if(t?.width){let r=n.content.value?.dataset.side,i=r===`right`,a=i?-5:5,o=t[i?`left`:`right`],s=t[i?`right`:`left`];d.onPointerGraceIntentChange({area:[{x:e.clientX+a,y:e.clientY},{x:o,y:t.top},{x:s,y:t.top},{x:s,y:t.bottom},{x:o,y:t.bottom}],side:r}),window.clearTimeout(d.pointerGraceTimerRef.value),d.pointerGraceTimerRef.value=window.setTimeout(()=>d.onPointerGraceIntentChange(null),300)}else{if(d.onTriggerLeave(e))return;d.onPointerGraceIntentChange(null)}}async function g(e){let i=d.searchRef.value!==``;t.disabled||i&&e.key===` `||on[r.dir.value].includes(e.key)&&(n.onOpenChange(!0),await D(),n.content.value?.focus(),e.preventDefault())}return(e,r)=>(u(),s(mn,{"as-child":``},{default:P(()=>[v(wn,A(t,{id:o(l).triggerId,ref:e=>{e&&o(l)?.onTriggerChange(e?.$el)},"aria-haspopup":`menu`,"aria-expanded":o(n).open.value,"aria-controls":o(l).contentId,"data-state":o(cn)(o(n).open.value),onClick:r[0]||=async e=>{t.disabled||e.defaultPrevented||(e.currentTarget?.focus(),o(n).open.value||o(n).onOpenChange(!0))},onPointermove:m,onPointerleave:h,onKeydown:g}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`id`,`aria-expanded`,`aria-controls`,`data-state`])]),_:3}))}}),Jn=_({__name:`ContextMenuArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(hn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Yn=_({__name:`ContextMenuCheckboxItem`,props:{modelValue:{type:[Boolean,String],required:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`,`update:modelValue`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(kn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),[Xn,Zn]=B(`ContextMenuRoot`),Qn=_({inheritAttrs:!1,__name:`ContextMenuRoot`,props:{pressOpenDelay:{type:Number,required:!1,default:700},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,{dir:i,modal:l,pressOpenDelay:d}=I(n);K();let f=Ie(i),p=c(!1);return Zn({open:p,onOpenChange:e=>{p.value=e},dir:f,modal:l,triggerElement:c(),pressOpenDelay:d}),j(p,e=>{r(`update:open`,e)}),(e,t)=>(u(),s(o(bn),{open:p.value,"onUpdate:open":t[0]||=e=>p.value=e,dir:o(f),modal:o(l)},{default:P(()=>[a(e.$slots,`default`)]),_:3},8,[`open`,`dir`,`modal`]))}}),$n=_({__name:`ContextMenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},sideFlip:{type:Boolean,required:!1},alignOffset:{type:Number,required:!1,default:0},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1,default:!0},collisionBoundary:{type:null,required:!1,default:()=>[]},collisionPadding:{type:[Number,Object],required:!1,default:0},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1,default:`partial`},hideWhenDetached:{type:Boolean,required:!1,default:!1},positionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t);K();let r=Xn(),i=c(!1);return(e,t)=>(u(),s(o(Mn),A(o(n),{side:`right`,"side-offset":2,align:`start`,"update-position-strategy":`always`,style:{"--reka-context-menu-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-context-menu-content-available-width":`var(--reka-popper-available-width)`,"--reka-context-menu-content-available-height":`var(--reka-popper-available-height)`,"--reka-context-menu-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-context-menu-trigger-height":`var(--reka-popper-anchor-height)`},onCloseAutoFocus:t[0]||=e=>{!e.defaultPrevented&&i.value&&e.preventDefault(),i.value=!1},onInteractOutside:t[1]||=e=>{e.detail.originalEvent.button===2&&e.target===o(r).triggerElement.value&&e.preventDefault(),!e.defaultPrevented&&!o(r).modal.value&&(i.value=!0)}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))}}),er=_({__name:`ContextMenuGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(Fn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),tr=_({__name:`ContextMenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(Tn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),nr=_({__name:`ContextMenuItemIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(On),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),rr=_({__name:`ContextMenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(In),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),ir=_({__name:`ContextMenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){let n=t;return(t,r)=>(u(),s(o(Ln),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),ar=_({__name:`ContextMenuRadioGroup`,props:{modelValue:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(Bn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),or=_({__name:`ContextMenuRadioItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(Vn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),sr=_({__name:`ContextMenuSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(Hn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),cr=_({__name:`ContextMenuSub`,props:{defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t;K();let i=W(n,`open`,r,{defaultValue:n.defaultOpen,passive:n.open===void 0});return(e,t)=>(u(),s(o(Gn),{open:o(i),"onUpdate:open":t[0]||=e=>F(i)?i.value=e:null},{default:P(()=>[a(e.$slots,`default`,{open:o(i)})]),_:3},8,[`open`]))}}),lr=_({__name:`ContextMenuSubContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t);return K(),(e,t)=>(u(),s(o(Kn),A(o(n),{style:{"--reka-context-menu-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-context-menu-content-available-width":`var(--reka-popper-available-width)`,"--reka-context-menu-content-available-height":`var(--reka-popper-available-height)`,"--reka-context-menu-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-context-menu-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))}}),ur=_({__name:`ContextMenuSubTrigger`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(qn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}});function dr(e){return e.pointerType!==`mouse`}var fr=_({inheritAttrs:!1,__name:`ContextMenuTrigger`,props:{disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let{disabled:n}=I(e),{forwardRef:r,currentElement:i}=K(),s=Xn(),l=c({x:0,y:0}),f=t(()=>({getBoundingClientRect:()=>({width:0,height:0,left:l.value.x,right:l.value.x,top:l.value.y,bottom:l.value.y,...l.value})})),p=c(0);function m(){window.clearTimeout(p.value)}function h(e){l.value={x:e.clientX,y:e.clientY},s.onOpenChange(!0)}async function _(e){n.value||(await D(),e.defaultPrevented||(m(),h(e),e.preventDefault()))}async function y(e){n.value||(await D(),dr(e)&&!e.defaultPrevented&&(m(),p.value=window.setTimeout(h,s.pressOpenDelay.value,e)))}async function b(e){n.value||(await D(),dr(e)&&!e.defaultPrevented&&m())}return g(()=>{i.value&&(s.triggerElement.value=i.value)}),(e,t)=>(u(),d(S,null,[v(o(mn),{as:`template`,reference:f.value},null,8,[`reference`]),v(o(H),A({ref:o(r),as:e.as,"as-child":e.asChild,"data-state":o(s).open.value?`open`:`closed`,"data-disabled":o(n)?``:void 0,style:{WebkitTouchCallout:`none`,pointerEvents:`auto`}},e.$attrs,{onContextmenu:_,onPointerdown:y,onPointermove:b,onPointercancel:b,onPointerup:b}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`data-state`,`data-disabled`])],64))}}),pr=_({__name:`DropdownMenuArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(hn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),mr=_({__name:`DropdownMenuCheckboxItem`,props:{modelValue:{type:[Boolean,String],required:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`,`update:modelValue`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(kn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),[hr,gr]=B(`DropdownMenuRoot`),_r=_({__name:`DropdownMenuRoot`,props:{defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1,default:void 0},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t;K();let i=W(n,`open`,r,{defaultValue:n.defaultOpen,passive:n.open===void 0}),l=c(),{modal:d,dir:f}=I(n),p=Ie(f);return gr({open:i,onOpenChange:e=>{i.value=e},onOpenToggle:()=>{i.value=!i.value},triggerId:``,triggerElement:l,contentId:``,modal:d,dir:p}),(e,t)=>(u(),s(o(bn),{open:o(i),"onUpdate:open":t[0]||=e=>F(i)?i.value=e:null,dir:o(p),modal:o(d)},{default:P(()=>[a(e.$slots,`default`,{open:o(i)})]),_:3},8,[`open`,`dir`,`modal`]))}}),vr=_({__name:`DropdownMenuContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t);K();let r=hr(),i=c(!1);function l(e){e.defaultPrevented||(i.value||setTimeout(()=>{r.triggerElement.value?.focus()},0),i.value=!1,e.preventDefault())}return r.contentId||=q(void 0,`reka-dropdown-menu-content`),(e,t)=>(u(),s(o(Mn),A(o(n),{id:o(r).contentId,"aria-labelledby":o(r)?.triggerId,style:{"--reka-dropdown-menu-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-dropdown-menu-content-available-width":`var(--reka-popper-available-width)`,"--reka-dropdown-menu-content-available-height":`var(--reka-popper-available-height)`,"--reka-dropdown-menu-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-dropdown-menu-trigger-height":`var(--reka-popper-anchor-height)`},onCloseAutoFocus:l,onInteractOutside:t[0]||=e=>{if(e.defaultPrevented)return;let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,a=t.button===2||n;(!o(r).modal.value||a)&&(i.value=!0),o(r).triggerElement.value?.contains(e.target)&&e.preventDefault()}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16,[`id`,`aria-labelledby`]))}}),yr=_({__name:`DropdownMenuFilter`,props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`input`}},emits:[`update:modelValue`],setup(e,{emit:n}){let r=e,l=W(r,`modelValue`,n,{defaultValue:``,passive:r.modelValue===void 0}),d=Q(),f=xn(),p=Un(null);j(l,e=>{f.searchRef.value=e??``},{immediate:!0});let{primitiveElement:m,currentElement:h}=Ge(),_=t(()=>r.disabled||!1),v=c();x(()=>v.value=f.highlightedElement.value?.id),g(()=>{f.onFilterElementChange(h.value),setTimeout(()=>{r.autoFocus&&(!p||d.isUsingKeyboardRef.value)&&h.value?.focus()},1)}),i(()=>{f.onFilterElementChange(void 0),f.searchRef.value=``});let{isComposing:y,shouldDeferInput:b,handleCompositionStart:S,handleCompositionUpdate:C,handleCompositionEnd:w}=wt(e=>{let t=e.target;t&&(l.value=t.value,f.searchRef.value=t.value)});function T(e){if(_.value||b.value)return;let t=e.target;l.value=t.value,f.searchRef.value=t.value}function E(e){if(!_.value){if(y.value){e.stopPropagation();return}[`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)?(e.preventDefault(),f.onKeydownNavigation(e)):e.key===`Enter`?(e.preventDefault(),f.onKeydownEnter(e)):e.key===`Escape`&&l.value&&(e.stopPropagation(),l.value=``,f.searchRef.value=``)}}return(e,t)=>(u(),s(o(H),{ref_key:`primitiveElement`,ref:m,as:e.as,"as-child":e.asChild,value:o(l),disabled:_.value?``:void 0,"data-disabled":_.value?``:void 0,"aria-disabled":_.value?!0:void 0,"aria-activedescendant":v.value,type:`text`,role:`searchbox`,onInput:T,onKeydown:E,onCompositionstart:o(S),onCompositionupdate:o(C),onCompositionend:o(w)},{default:P(()=>[a(e.$slots,`default`,{modelValue:o(l)})]),_:3},8,[`as`,`as-child`,`value`,`disabled`,`data-disabled`,`aria-disabled`,`aria-activedescendant`,`onCompositionstart`,`onCompositionupdate`,`onCompositionend`]))}}),br=_({__name:`DropdownMenuGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(Fn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),xr=_({__name:`DropdownMenuItem`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(Tn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Sr=_({__name:`DropdownMenuItemIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(On),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Cr=_({__name:`DropdownMenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(In),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),wr=_({__name:`DropdownMenuPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){let n=t;return(t,r)=>(u(),s(o(Ln),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Tr=_({__name:`DropdownMenuRadioGroup`,props:{modelValue:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,i=G(n);return K(),(t,n)=>(u(),s(o(Bn),k(e({...r,...o(i)})),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Er=_({__name:`DropdownMenuRadioItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(t,{emit:n}){let r=U(t,n);return K(),(t,n)=>(u(),s(o(Vn),k(e(o(r))),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Dr=_({__name:`DropdownMenuSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(Hn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),Or=_({__name:`DropdownMenuSub`,props:{defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=W(n,`open`,t,{passive:n.open===void 0,defaultValue:n.defaultOpen??!1});return K(),(e,t)=>(u(),s(o(Gn),{open:o(r),"onUpdate:open":t[0]||=e=>F(r)?r.value=e:null},{default:P(()=>[a(e.$slots,`default`,{open:o(r)})]),_:3},8,[`open`]))}}),kr=_({__name:`DropdownMenuSubContent`,props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`entryFocus`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=U(e,t);return K(),(e,t)=>(u(),s(o(Kn),A(o(n),{style:{"--reka-dropdown-menu-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-dropdown-menu-content-available-width":`var(--reka-popper-available-width)`,"--reka-dropdown-menu-content-available-height":`var(--reka-popper-available-height)`,"--reka-dropdown-menu-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-dropdown-menu-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:P(()=>[a(e.$slots,`default`)]),_:3},16))}}),Ar=_({__name:`DropdownMenuSubTrigger`,props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return K(),(t,r)=>(u(),s(o(qn),k(e(n)),{default:P(()=>[a(t.$slots,`default`)]),_:3},16))}}),jr=_({__name:`DropdownMenuTrigger`,props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=hr(),{forwardRef:r,currentElement:i}=K();return g(()=>{n.triggerElement=i}),n.triggerId||=q(void 0,`reka-dropdown-menu-trigger`),(e,i)=>(u(),s(o(mn),{"as-child":``},{default:P(()=>[v(o(H),{id:o(n).triggerId,ref:o(r),type:e.as===`button`?`button`:void 0,"as-child":t.asChild,as:e.as,"aria-haspopup":`menu`,"aria-expanded":o(n).open.value,"aria-controls":o(n).open.value?o(n).contentId:void 0,"data-disabled":e.disabled?``:void 0,disabled:e.disabled,"data-state":o(n).open.value?`open`:`closed`,onClick:i[0]||=async t=>{!e.disabled&&t.button===0&&t.ctrlKey===!1&&(o(n)?.onOpenToggle(),await D(),o(n).open.value&&t.preventDefault())},onKeydown:i[1]||=ee(t=>{e.disabled||([`Enter`,` `].includes(t.key)&&o(n).onOpenToggle(),t.key===`ArrowDown`&&o(n).onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(t.key)&&t.preventDefault())},[`enter`,`space`,`arrow-down`])},{default:P(()=>[a(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as-child`,`as`,`aria-expanded`,`aria-controls`,`data-disabled`,`disabled`,`data-state`])]),_:3}))}}),Mr={Root:Qn,Trigger:fr,Portal:ir,Content:$n,Arrow:Jn,Item:tr,Group:er,Separator:sr,CheckboxItem:Yn,ItemIndicator:nr,Label:rr,RadioGroup:ar,RadioItem:or,Sub:cr,SubContent:lr,SubTrigger:ur},$={Root:_r,Trigger:jr,Portal:wr,Content:vr,Arrow:pr,Item:xr,Group:br,Separator:Dr,CheckboxItem:mr,ItemIndicator:Sr,Label:Cr,RadioGroup:Tr,RadioItem:Er,Sub:Or,SubContent:kr,SubTrigger:Ar,Filter:yr};function Nr(){let{contains:e,startsWith:t}=Tt({sensitivity:`base`});function n(n,r){return e(n,r)?e(r,n)?0:t(n,r)?1:2:null}function r(e,t,r){if(typeof e!=`object`||!e)return n(String(e),t);let i=null;for(let a of r){let r=z(e,a);if(r==null)continue;let o=Array.isArray(r)?r.map(String):[String(r)];for(let e of o){let r=n(e,t);if(r!==null&&(i===null||r<i)&&(i=r),i===0)return 0}}return i}function i(e,t,n){if(!t)return e;let i=[];for(let a of e){let e=r(a,t,n);e!==null&&i.push({item:a,score:e})}return i.sort((e,t)=>e.score-t.score),i.map(({item:e})=>e)}function a(e,t,n){return t?e.map(e=>{let i=[];for(let a of e){if(a==null)continue;if(n.isStructural?.(a)){i.push({item:a,score:-1});continue}let e=r(a,t,n.fields);e!==null&&i.push({item:a,score:e})}return i.sort((e,t)=>e.score-t.score),i.map(({item:e})=>e)}).filter(e=>e.some(e=>!n.isStructural?.(e))):e}return{score:n,scoreItem:r,filter:i,filterGroups:a}}function Pr(e){return(t,n)=>Fr(t,n,o(e))}function Fr(e,t,n){return z(n,`messages.${e}`,e).replace(/\{(\w+)\}/g,(e,n)=>`${t?.[n]??`{${n}}`}`)}function Ir(e){return{lang:t(()=>o(e).name),code:t(()=>o(e).code),dir:t(()=>o(e).dir),locale:F(e)?e:c(e),t:Pr(e)}}function Lr(e){return et(e,{dir:`ltr`})}var Rr=Lr({name:`English`,code:`en`,messages:{alert:{close:`Close`},authForm:{hidePassword:`Hide password`,showPassword:`Show password`,submit:`Continue`},banner:{close:`Close`},calendar:{nextMonth:`Next month`,nextYear:`Next year`,prevMonth:`Previous month`,prevYear:`Previous year`},carousel:{dots:`Choose slide to display`,goto:`Go to slide {slide}`,next:`Next`,prev:`Prev`},chatPrompt:{placeholder:`Type your message here…`},chatPromptSubmit:{label:`Send prompt`},colorMode:{dark:`Dark`,light:`Light`,switchToDark:`Switch to dark mode`,switchToLight:`Switch to light mode`,system:`System`},commandPalette:{back:`Back`,close:`Close`,noData:`No data`,noMatch:`No matching data`,placeholder:`Type a command or search…`},contentSearch:{links:`Links`,search:`Results`,theme:`Theme`},contentSearchButton:{label:`Search…`},contentToc:{title:`On this page`},dropdownMenu:{noMatch:`No matching data`,search:`Search…`},dashboardSearch:{theme:`Theme`},dashboardSearchButton:{label:`Search…`},dashboardSidebarCollapse:{collapse:`Collapse sidebar`,expand:`Expand sidebar`},dashboardSidebarToggle:{close:`Close sidebar`,open:`Open sidebar`},drawer:{close:`Close`},error:{clear:`Back to home`},fileUpload:{removeFile:`Remove {filename}`},header:{close:`Close menu`,open:`Open menu`},inputMenu:{create:`Create "{label}"`,noData:`No data`,noMatch:`No matching data`},inputNumber:{decrement:`Decrement`,increment:`Increment`},listbox:{noData:`No data`,noMatch:`No matching data`,search:`Search…`},modal:{close:`Close`},pricingTable:{caption:`Pricing plan comparison`},prose:{codeCollapse:{closeText:`Collapse`,name:`code`,openText:`Expand`},collapsible:{closeText:`Hide`,name:`properties`,openText:`Show`},pre:{copy:`Copy code to clipboard`},prompt:{copy:`Copy prompt`,openIn:`Open in {name}`}},chatReasoning:{thinking:`Thinking…`,thought:`Thought`,thoughtFor:`Thought for {duration}`},sidebar:{close:`Close`,toggle:`Toggle`},selectMenu:{create:`Create "{label}"`,noData:`No data`,noMatch:`No matching data`,search:`Search…`},slideover:{close:`Close`},table:{noData:`No data`},toast:{close:`Close`}}}),zr=Symbol.for(`nuxt-ui.locale-context`),Br=ge(e=>{let n=e||m(C(zr,Rr));return Ir(t(()=>n.value||Rr))}),Vr={__name:`UDropdownMenuContent`,props:{items:{type:null,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0},sub:{type:Boolean,required:!1},labelKey:{type:null,required:!0},descriptionKey:{type:null,required:!0},checkedIcon:{type:null,required:!1},loadingIcon:{type:null,required:!1},externalIcon:{type:[Boolean,String],required:!1,skipCheck:!0},size:{type:null,required:!1},filter:{type:[Boolean,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},searchTerm:{type:String,required:!1},class:{type:null,required:!1},ui:{type:null,required:!0},uiOverride:{type:null,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1}},emits:[`update:searchTerm`,`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`closeAutoFocus`],setup(n,{emit:i}){let g=n,_=i,y=b(),{t:x,dir:C}=Br(),T=nt(),{filterGroups:D}=Nr(),j=c(``),M=t({get:()=>g.searchTerm??j.value,set:e=>{j.value=e,_(`update:searchTerm`,e)}}),N=m(()=>et(g.filter,{placeholder:x(`dropdownMenu.search`),variant:`none`})),F=ve(m(()=>g.portal)),I=U(le(g,`sub`,`items`,`portal`,`labelKey`,`descriptionKey`,`checkedIcon`,`loadingIcon`,`externalIcon`,`size`,`filter`,`filterFields`,`ignoreFilter`,`searchTerm`,`class`,`ui`,`uiOverride`),_),ee=()=>fe(y,[`default`]),[te,re]=$e(),ie=t(()=>C.value===`rtl`?T.ui.icons.chevronLeft:T.ui.icons.chevronRight),ae=t(()=>g.items?.length?we(g.items)?g.items:[g.items]:[]),oe=e=>!!e.type&&[`label`,`separator`].includes(e.type),ce=t(()=>{if(!g.filter||g.ignoreFilter||!M.value)return ae.value;let e=Array.isArray(g.filterFields)&&g.filterFields.length?g.filterFields:[g.labelKey];return D(ae.value,M.value,{fields:e,isStructural:oe})}),R=t(()=>ce.value.some(e=>e.some(e=>!oe(e))));return(t,i)=>(u(),d(S,null,[v(o(te),null,{default:P(({item:e,active:i,index:c})=>[a(t.$slots,e.slot||`item`,{item:e,index:c,ui:n.ui},()=>[a(t.$slots,e.slot?`${e.slot}-leading`:`item-leading`,{item:e,active:i,index:c,ui:n.ui},()=>[e.loading?(u(),s(V,{key:0,name:n.loadingIcon||o(T).ui.icons.loading,"data-slot":`itemLeadingIcon`,class:w(n.ui.itemLeadingIcon({class:[n.uiOverride?.itemLeadingIcon,e.ui?.itemLeadingIcon],color:e?.color,loading:!0}))},null,8,[`name`,`class`])):e.icon?(u(),s(V,{key:1,name:e.icon,"data-slot":`itemLeadingIcon`,class:w(n.ui.itemLeadingIcon({class:[n.uiOverride?.itemLeadingIcon,e.ui?.itemLeadingIcon],color:e?.color,active:i}))},null,8,[`name`,`class`])):e.avatar?(u(),s(he,A({key:2,size:e.ui?.itemLeadingAvatarSize||n.uiOverride?.itemLeadingAvatarSize||n.ui.itemLeadingAvatarSize()},e.avatar,{"data-slot":`itemLeadingAvatar`,class:n.ui.itemLeadingAvatar({class:[n.uiOverride?.itemLeadingAvatar,e.ui?.itemLeadingAvatar],active:i})}),null,16,[`size`,`class`])):l(``,!0)]),o(z)(e,g.labelKey)||y[e.slot?`${e.slot}-label`:`item-label`]||o(z)(e,g.descriptionKey)||y[e.slot?`${e.slot}-description`:`item-description`]?(u(),d(`span`,{key:0,"data-slot":`itemWrapper`,class:w(n.ui.itemWrapper({class:[n.uiOverride?.itemWrapper,e.ui?.itemWrapper]}))},[O(`span`,{"data-slot":`itemLabel`,class:w(n.ui.itemLabel({class:[n.uiOverride?.itemLabel,e.ui?.itemLabel],active:i}))},[a(t.$slots,e.slot?`${e.slot}-label`:`item-label`,{item:e,active:i,index:c},()=>[r(E(o(z)(e,g.labelKey)),1)]),e.target===`_blank`&&n.externalIcon!==!1?(u(),s(V,{key:0,name:typeof n.externalIcon==`string`?n.externalIcon:o(T).ui.icons.external,"data-slot":`itemLabelExternalIcon`,class:w(n.ui.itemLabelExternalIcon({class:[n.uiOverride?.itemLabelExternalIcon,e.ui?.itemLabelExternalIcon],color:e?.color,active:i}))},null,8,[`name`,`class`])):l(``,!0)],2),o(z)(e,g.descriptionKey)||y[e.slot?`${e.slot}-description`:`item-description`]?(u(),d(`span`,{key:0,"data-slot":`itemDescription`,class:w(n.ui.itemDescription({class:[n.uiOverride?.itemDescription,e.ui?.itemDescription]}))},[a(t.$slots,e.slot?`${e.slot}-description`:`item-description`,{item:e,active:i,index:c},()=>[r(E(o(z)(e,g.descriptionKey)),1)])],2)):l(``,!0)],2)):l(``,!0),O(`span`,{"data-slot":`itemTrailing`,class:w(n.ui.itemTrailing({class:[n.uiOverride?.itemTrailing,e.ui?.itemTrailing]}))},[a(t.$slots,e.slot?`${e.slot}-trailing`:`item-trailing`,{item:e,active:i,index:c,ui:n.ui},()=>[e.children?.length?(u(),s(V,{key:0,name:ie.value,"data-slot":`itemTrailingIcon`,class:w(n.ui.itemTrailingIcon({class:[n.uiOverride?.itemTrailingIcon,e.ui?.itemTrailingIcon],color:e?.color,active:i}))},null,8,[`name`,`class`])):e.kbds?.length?(u(),d(`span`,{key:1,"data-slot":`itemTrailingKbds`,class:w(n.ui.itemTrailingKbds({class:[n.uiOverride?.itemTrailingKbds,e.ui?.itemTrailingKbds]}))},[(u(!0),d(S,null,f(e.kbds,(t,r)=>(u(),s(se,A({key:r,size:e.ui?.itemTrailingKbdsSize||n.uiOverride?.itemTrailingKbdsSize||n.ui.itemTrailingKbdsSize()},{ref_for:!0},typeof t==`string`?{value:t}:t),null,16,[`size`]))),128))],2)):l(``,!0)]),v(o($).ItemIndicator,{"as-child":``},{default:P(()=>[v(V,{name:n.checkedIcon||o(T).ui.icons.check,"data-slot":`itemTrailingIcon`,class:w(n.ui.itemTrailingIcon({class:[n.uiOverride?.itemTrailingIcon,e.ui?.itemTrailingIcon],color:e?.color}))},null,8,[`name`,`class`])]),_:2},1024)],2)])]),_:3}),v(o($).Portal,k(e(o(F))),{default:P(()=>[v(o(pe),null,{default:P(()=>[(u(),s(h(n.sub?o($).SubContent:o($).Content),A({"data-slot":`content`,class:n.ui.content({class:[n.uiOverride?.content,g.class]})},o(I)),{default:P(()=>[n.filter?(u(),s(o($).Filter,{key:0,modelValue:M.value,"onUpdate:modelValue":i[1]||=e=>M.value=e,"as-child":``},{default:P(()=>[v(Ce,A({autofocus:``,autocomplete:`off`,size:n.size},N.value,{"data-slot":`input`,class:n.ui.input({class:n.uiOverride?.input}),onChange:i[0]||=L(()=>{},[`stop`])}),null,16,[`size`,`class`])]),_:1},8,[`modelValue`])):l(``,!0),a(t.$slots,`content-top`,{sub:n.sub??!1}),!M.value||R.value?(u(),d(`div`,{key:1,role:`presentation`,"data-slot":`viewport`,class:w(n.ui.viewport({class:n.uiOverride?.viewport}))},[(u(!0),d(S,null,f(ce.value,(e,r)=>(u(),s(o($).Group,{key:`group-${r}`,"data-slot":`group`,class:w(n.ui.group({class:n.uiOverride?.group}))},{default:P(()=>[(u(!0),d(S,null,f(e,(e,i)=>(u(),d(S,{key:`group-${r}-${i}`},[e.type===`label`?(u(),s(o($).Label,{key:0,"data-slot":`label`,class:w(n.ui.label({class:[n.uiOverride?.label,e.ui?.label,e.class]}))},{default:P(()=>[v(o(re),{item:e,index:i},null,8,[`item`,`index`])]),_:2},1032,[`class`])):e.type===`separator`?(u(),s(o($).Separator,{key:1,"data-slot":`separator`,class:w(n.ui.separator({class:[n.uiOverride?.separator,e.ui?.separator,e.class]}))},null,8,[`class`])):e?.children?.length?(u(),s(o($).Sub,{key:2,open:e.open,"default-open":e.defaultOpen},{default:P(()=>[v(o($).SubTrigger,{as:`button`,type:`button`,disabled:e.disabled,"text-value":o(z)(e,g.labelKey),"data-slot":`item`,class:w(n.ui.item({class:[n.uiOverride?.item,e.ui?.item,e.class],color:e?.color}))},{default:P(()=>[v(o(re),{item:e,index:i},null,8,[`item`,`index`])]),_:2},1032,[`disabled`,`text-value`,`class`]),v(Vr,A({sub:``,class:e.ui?.content,ui:n.ui,"ui-override":n.uiOverride,portal:n.portal,items:e.children,align:`start`,"align-offset":-4,"side-offset":3,"label-key":n.labelKey,"description-key":n.descriptionKey,"checked-icon":n.checkedIcon,"loading-icon":n.loadingIcon,"external-icon":n.externalIcon,size:n.size,filter:e.filter,"filter-fields":e.filterFields||n.filterFields,"ignore-filter":e.ignoreFilter??n.ignoreFilter},{ref_for:!0},e.content),p({_:2},[f(ee(),(e,n)=>({name:n,fn:P(e=>[a(t.$slots,n,A({ref_for:!0},e))])}))]),1040,[`class`,`ui`,`ui-override`,`portal`,`items`,`label-key`,`description-key`,`checked-icon`,`loading-icon`,`external-icon`,`size`,`filter`,`filter-fields`,`ignore-filter`])]),_:2},1032,[`open`,`default-open`])):e.type===`checkbox`?(u(),s(o($).CheckboxItem,{key:3,"model-value":e.checked,disabled:e.disabled,"text-value":o(z)(e,g.labelKey),"data-slot":`item`,class:w(n.ui.item({class:[n.uiOverride?.item,e.ui?.item,e.class],color:e?.color})),"onUpdate:modelValue":e.onUpdateChecked,onSelect:e.onSelect},{default:P(()=>[v(o(re),{item:e,index:i},null,8,[`item`,`index`])]),_:2},1032,[`model-value`,`disabled`,`text-value`,`class`,`onUpdate:modelValue`,`onSelect`])):(u(),s(ne,A({key:4,ref_for:!0},o(ye)(e),{custom:``}),{default:P(({active:t,...r})=>[v(o($).Item,{"as-child":``,disabled:e.disabled,"text-value":o(z)(e,g.labelKey),onSelect:e.onSelect},{default:P(()=>[v(ze,A({ref_for:!0},r,{"data-slot":`item`,class:n.ui.item({class:[n.uiOverride?.item,e.ui?.item,e.class],color:e?.color,active:t})}),{default:P(()=>[v(o(re),{item:e,active:t,index:i},null,8,[`item`,`active`,`index`])]),_:2},1040,[`class`])]),_:2},1032,[`disabled`,`text-value`,`onSelect`])]),_:2},1040))],64))),128))]),_:2},1032,[`class`]))),128))],2)):l(``,!0),M.value&&!R.value?(u(),d(`div`,{key:2,"data-slot":`empty`,class:w(n.ui.empty({class:n.uiOverride?.empty}))},[a(t.$slots,`empty`,{searchTerm:M.value},()=>[r(E(o(x)(`dropdownMenu.noMatch`,{searchTerm:M.value})),1)])],2)):l(``,!0),a(t.$slots,`default`),a(t.$slots,`content-bottom`,{sub:n.sub??!1})]),_:3},16,[`class`]))]),_:3})]),_:3},16)],64))}},Hr={slots:{content:`min-w-32 max-h-(--reka-dropdown-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col`,input:`border-b border-default`,empty:`text-center text-muted`,viewport:`relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1`,arrow:`fill-bg stroke-default`,group:`p-1 isolate`,label:`w-full flex items-center font-semibold text-highlighted`,separator:`-mx-1 my-1 h-px bg-border`,item:`group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75`,itemLeadingIcon:`shrink-0`,itemLeadingAvatar:`shrink-0`,itemLeadingAvatarSize:``,itemTrailing:`ms-auto inline-flex gap-1.5 items-center`,itemTrailingIcon:`shrink-0`,itemTrailingKbds:`hidden lg:inline-flex items-center shrink-0`,itemTrailingKbdsSize:``,itemWrapper:`flex-1 flex flex-col text-start min-w-0`,itemLabel:`truncate`,itemDescription:`truncate text-muted`,itemLabelExternalIcon:`inline-block size-3 align-top text-dimmed`},variants:{color:{primary:``,neutral:``,success:``,warning:``,error:``,info:``},active:{true:{item:`text-highlighted before:bg-elevated`,itemLeadingIcon:`text-default`},false:{item:[`text-default data-highlighted:text-highlighted data-[state=open]:text-highlighted data-highlighted:before:bg-elevated/50 data-[state=open]:before:bg-elevated/50`,`transition-colors before:transition-colors`],itemLeadingIcon:[`text-dimmed group-data-highlighted:text-default group-data-[state=open]:text-default`,`transition-colors`]}},loading:{true:{itemLeadingIcon:`animate-spin`}},size:{xs:{label:`p-1 text-xs gap-1`,item:`p-1 text-xs gap-1`,empty:`p-2 text-xs`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemTrailingIcon:`size-4`,itemTrailingKbds:`gap-0.5`,itemTrailingKbdsSize:`sm`},sm:{label:`p-1.5 text-xs gap-1.5`,item:`p-1.5 text-xs gap-1.5`,empty:`p-2.5 text-xs`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemTrailingIcon:`size-4`,itemTrailingKbds:`gap-0.5`,itemTrailingKbdsSize:`sm`},md:{label:`p-1.5 text-sm gap-1.5`,item:`p-1.5 text-sm gap-1.5`,empty:`p-2.5 text-sm`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemTrailingIcon:`size-5`,itemTrailingKbds:`gap-0.5`,itemTrailingKbdsSize:`md`},lg:{label:`p-2 text-sm gap-2`,item:`p-2 text-sm gap-2`,empty:`p-3 text-sm`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemTrailingIcon:`size-5`,itemTrailingKbds:`gap-1`,itemTrailingKbdsSize:`md`},xl:{label:`p-2 text-base gap-2`,item:`p-2 text-base gap-2`,empty:`p-3 text-base`,itemLeadingIcon:`size-6`,itemLeadingAvatarSize:`xs`,itemTrailingIcon:`size-6`,itemTrailingKbds:`gap-1`,itemTrailingKbdsSize:`lg`}}},compoundVariants:[{color:`primary`,active:!1,class:{item:`text-primary data-highlighted:text-primary data-highlighted:before:bg-primary/10 data-[state=open]:before:bg-primary/10`,itemLeadingIcon:`text-primary/75 group-data-highlighted:text-primary group-data-[state=open]:text-primary`}},{color:`neutral`,active:!1,class:{item:`text-neutral data-highlighted:text-neutral data-highlighted:before:bg-neutral/10 data-[state=open]:before:bg-neutral/10`,itemLeadingIcon:`text-neutral/75 group-data-highlighted:text-neutral group-data-[state=open]:text-neutral`}},{color:`success`,active:!1,class:{item:`text-success data-highlighted:text-success data-highlighted:before:bg-success/10 data-[state=open]:before:bg-success/10`,itemLeadingIcon:`text-success/75 group-data-highlighted:text-success group-data-[state=open]:text-success`}},{color:`warning`,active:!1,class:{item:`text-warning data-highlighted:text-warning data-highlighted:before:bg-warning/10 data-[state=open]:before:bg-warning/10`,itemLeadingIcon:`text-warning/75 group-data-highlighted:text-warning group-data-[state=open]:text-warning`}},{color:`error`,active:!1,class:{item:`text-error data-highlighted:text-error data-highlighted:before:bg-error/10 data-[state=open]:before:bg-error/10`,itemLeadingIcon:`text-error/75 group-data-highlighted:text-error group-data-[state=open]:text-error`}},{color:`info`,active:!1,class:{item:`text-info data-highlighted:text-info data-highlighted:before:bg-info/10 data-[state=open]:before:bg-info/10`,itemLeadingIcon:`text-info/75 group-data-highlighted:text-info group-data-[state=open]:text-info`}},{color:`primary`,active:!0,class:{item:`text-primary before:bg-primary/10`,itemLeadingIcon:`text-primary`}},{color:`neutral`,active:!0,class:{item:`text-neutral before:bg-neutral/10`,itemLeadingIcon:`text-neutral`}},{color:`success`,active:!0,class:{item:`text-success before:bg-success/10`,itemLeadingIcon:`text-success`}},{color:`warning`,active:!0,class:{item:`text-warning before:bg-warning/10`,itemLeadingIcon:`text-warning`}},{color:`error`,active:!0,class:{item:`text-error before:bg-error/10`,itemLeadingIcon:`text-error`}},{color:`info`,active:!0,class:{item:`text-info before:bg-info/10`,itemLeadingIcon:`text-info`}}],defaultVariants:{size:`md`}},Ur={__name:`UDropdownMenu`,props:M({size:{type:null,required:!1},items:{type:null,required:!1},checkedIcon:{type:null,required:!1},loadingIcon:{type:null,required:!1},externalIcon:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},labelKey:{type:null,required:!1,default:`label`},descriptionKey:{type:null,required:!1,default:`description`},filter:{type:[Boolean,Object],required:!1,default:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1,default:!1},disabled:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0}},{searchTerm:{type:String,default:``},searchTermModifiers:{}}),emits:M([`update:open`],[`update:searchTerm`]),setup(n,{emit:r}){let i=n,c=r,d=b(),h=y(n,`searchTerm`,{type:String,default:``}),g=Te(`dropdownMenu`,i),_=nt(),x=re(ue(g,`defaultOpen`,`open`,`modal`),c),S=m(()=>et(g.content,{side:`bottom`,sideOffset:8,collisionPadding:8})),C=m(()=>et(g.arrow,{rounded:!0})),T=()=>fe(d,[`default`]),E=t(()=>ce({extend:Hr,..._.ui?.dropdownMenu||{}})({size:g.size}));return(t,n)=>(u(),s(o(_r),k(e(o(x))),{default:P(({open:r})=>[d.default?(u(),s(o(jr),{key:0,"as-child":``,class:w(o(g).class),disabled:o(g).disabled},{default:P(()=>[a(t.$slots,`default`,{open:r})]),_:2},1032,[`class`,`disabled`])):l(``,!0),v(Vr,A({"search-term":h.value,"onUpdate:searchTerm":n[0]||=e=>h.value=e,class:E.value.content({class:[!d.default&&o(g).class,o(g).ui?.content]}),ui:E.value,"ui-override":o(g).ui},S.value,{items:o(g).items,portal:o(g).portal,"label-key":o(g).labelKey,"description-key":o(g).descriptionKey,"checked-icon":o(g).checkedIcon,"loading-icon":o(g).loadingIcon,"external-icon":o(g).externalIcon,size:o(g).size,filter:o(g).filter,"filter-fields":o(g).filterFields,"ignore-filter":o(g).ignoreFilter}),p({default:P(()=>[o(g).arrow?(u(),s(o(pr),A({key:0},C.value,{"data-slot":`arrow`,class:E.value.arrow({class:o(g).ui?.arrow})}),null,16,[`class`])):l(``,!0)]),_:2},[f(T(),(n,r)=>({name:r,fn:P(n=>[a(t.$slots,r,k(e(n)))])}))]),1040,[`search-term`,`class`,`ui`,`ui-override`,`items`,`portal`,`label-key`,`description-key`,`checked-icon`,`loading-icon`,`external-icon`,`size`,`filter`,`filter-fields`,`ignore-filter`])]),_:3},16))}},Wr={class:`offline-note`,role:`status`},Gr={class:`offline-note-text`},Kr=Object.assign(_({__name:`OfflineNote`,props:{label:{},at:{},dateStyle:{}},setup(e){let n=e,r=t(()=>n.label?n.at?`${n.label} · ${new Date(n.at).toLocaleString(ct,{dateStyle:n.dateStyle||`short`,timeStyle:`short`})}`:n.label:it.value?lt(`Lost connection to ${it.value} — reconnecting…`,`Connexion à ${it.value} perdue — reconnexion…`):lt(`Lost connection to the server — reconnecting…`,`Connexion au serveur perdue — reconnexion…`));return(e,t)=>{let n=V;return u(),d(`div`,Wr,[v(n,{name:`i-lucide-wifi-off`}),O(`span`,Gr,E(o(r)),1),(`netDown`in e?e.netDown:o(st))&&!(`locked`in e?e.locked:o(rt))?(u(),d(`button`,{key:0,type:`button`,class:`offline-retry`,onClick:t[0]||=(...t)=>(`retryEvents`in e?e.retryEvents:o(ft))&&(`retryEvents`in e?e.retryEvents:o(ft))(...t)},E((`t`in e?e.t:o(ot))(`Retry`)),1)):l(``,!0)])}}}),{__name:`OfflineNote`}),qr={claude:`i-herdr-claude-code`,codex:`i-herdr-codex`,omp:`i-herdr-omp`,gemini:`i-lucide-sparkles`,opencode:`i-lucide-code-xml`,kimi:`i-lucide-moon-star`},Jr=e=>e&&Object.hasOwn(qr,e)?qr[e]:null,Yr={class:`pill-source`},Xr={class:`pill-model`},Zr={key:0,class:`pill-effort`},Qr={key:1,class:`pill unknown`},$r=Object.assign(_({__name:`StatusPill`,props:{pane:{},kind:{type:Boolean},model:{type:Boolean},source:{}},setup(e){return(t,n)=>e.pane?(u(),d(`span`,{key:0,class:w([`pill`,(`statusKey`in t?t.statusKey:o(Le))(e.pane)])},[n[3]||=O(`i`,null,null,-1),r(E((`statusLabel`in t?t.statusLabel:o(Oe))(e.pane)),1),e.source?(u(),d(S,{key:0},[n[0]||=O(`span`,{class:`sep`},`·`,-1),O(`span`,Yr,E(e.source),1)],64)):l(``,!0),e.kind&&e.pane.agent?(u(),d(S,{key:1},[n[1]||=O(`span`,{class:`sep`},`·`,-1),O(`span`,{class:w([`pill-kind`,e.pane.agent])},E(e.pane.agent),3)],64)):l(``,!0),e.model&&e.pane.model?(u(),d(S,{key:2},[n[2]||=O(`span`,{class:`sep`},`·`,-1),O(`span`,Xr,E(e.pane.model.label),1),e.pane.model.effort?(u(),d(`span`,Zr,E(e.pane.model.effort),1)):l(``,!0)],64)):l(``,!0)],2)):(u(),d(`span`,Qr,[n[4]||=O(`i`,null,null,-1),r(E((`t`in t?t.t:o(ot))(`Closed`)),1)]))}}),{__name:`StatusPill`}),ei=[`blocked`,`todo`,`ongoing`,`finished`];function ti(e){let t=pt(e);if(t===`blocked`)return`blocked`;let n=!!(e.restart&&e.restart.phase!==`failed`),r=!!(e.agent&&(e.status||`unknown`)===`unknown`&&e.pendingPrompt);return t===`working`||n||r?`ongoing`:`finished`}function ni(e,t){return t.done||e===`done`?`finished`:e===`blocked`?`blocked`:e===`doing`?`ongoing`:`todo`}function ri(e,t){if(e.resolved)return`finished`;let n=t.map(ti);return n.includes(`blocked`)?`blocked`:n.includes(`ongoing`)?`ongoing`:e.token===`waiting-on-you`?`blocked`:e.token===`ready-for-review`?`todo`:`ongoing`}var ii=[`blocked`,`ongoing`,`todo`,`finished`];function ai(e){let t=ii.length-1;for(let n of e)t=Math.min(t,ii.indexOf(n));return ii[t]}function oi(e,t){let n;return n=t||e===`done`?{todo:`todo`}:e===`blocked`?{todo:`todo`,ongoing:`unblock`,finished:`done`}:e===`doing`?{blocked:`block`,todo:`todo`,finished:`done`}:e===`backlog`?{blocked:`block`,ongoing:`launch`,finished:`done`}:e===`test`?{finished:`tested`}:e===`review`?{finished:`reviewed`}:e===`decide`?{}:{blocked:`block`,ongoing:`now`,finished:`done`},ei.flatMap(e=>{let t=n[e];return t?[{to:e,action:t}]:[]})}function si(e,t,n){return e===`launch`?Ae(t,n):e===`unblock`?ie(t,n):e===`tested`?Je(t,n):e===`reviewed`?Ze(t,n):We(e,t,n)}var ci=e=>!!(e.agent||e.restart&&e.restart.phase!==`failed`);function li(e,t,n,r=``){let i=n.filter(ci),a=`${t.toLowerCase()}/${e.id.toLowerCase()}`,o=i.filter(e=>e.hpThread===a);if(o.length||!e.agentName)return o;let s=i.filter(t=>!t.hpThread&&t.name===e.agentName),c=s.find(e=>(e.machine||``)===r)||s[0];return c?[c]:[]}function ui(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=new Set;for(let t of e||[]){let e=t.panes.map(e=>n.get(e)).find(e=>e!==void 0&&Qe(e));e&&(i.add(t.slug.toLowerCase()),r.push({key:t.key,slug:t.slug,machine:e.machine||``,project:t,coordinator:e,cards:[]}))}for(let e of t){let n=Qe(e)?ae(e):null;if(!n||i.has(n.toLowerCase()))continue;i.add(n.toLowerCase());let a=Ye(t,n);r.push({key:`pane:${a.id}`,slug:n,machine:a.machine||``,project:null,coordinator:a,cards:[]})}let a=new Set,o=t.filter(ci);for(let e of r)a.add(e.coordinator.id);let s=(e,t)=>{let n=r.filter(e=>e.slug.toLowerCase()===t.toLowerCase());return n.find(t=>t.machine===(e.machine||``))||n[0]};for(let e of r){let t=e.project?.board;if(!t)continue;let n=e.coordinator,r=t=>{let r=li(t,e.slug,o.filter(t=>!a.has(t.id)&&s(t,e.slug)===e),e.machine);t.resolved&&(r=r.filter(e=>ti(e)===`finished`));for(let e of r)a.add(e.id);return{kind:`thread`,key:`${e.key}|${t.id}`,column:ri(t,r),segment:e.key,project:e.slug,coordinator:n,thread:t,panes:r}};e.cards.push(...t.open.map(r));let i=new Map;for(let r of He(t,{doing:``,done:``}))for(let t of r.tasks){let a=`${r.key}|${t.text}`,o=i.get(a)||0;i.set(a,o+1),e.cards.push({kind:`task`,key:`${e.key}|${a}|${o}`,column:ni(r.kind,t),segment:e.key,project:e.slug,coordinator:n,task:t,list:r.kind,listTitle:r.title,moves:oi(r.kind,t.done)})}e.cards.push(...t.resolved.map(r))}let c=[];for(let e of o){if(a.has(e.id))continue;let t=ae(e),n={kind:`agent`,key:`pane:${e.id}`,column:ti(e),segment:``,project:t,pane:e};if(!t){c.push(n);continue}let i=s(e,t);i||(i={key:`slug:${t.toLowerCase()}`,slug:t,machine:e.machine||``,project:null,coordinator:null,cards:[]},r.push(i)),i.cards.push({...n,segment:i.key,project:i.slug})}r.sort((e,t)=>e.slug.toLowerCase().localeCompare(t.slug.toLowerCase())||e.machine.localeCompare(t.machine));let l=[];for(let e of r){if(e.coordinator){let t={blocked:0,todo:0,ongoing:0,finished:0};for(let n of e.cards)t[n.column]++;l.push({kind:`project`,key:`project:${e.key}`,segment:e.key,project:e.slug,coordinator:e.coordinator,column:ai([ti(e.coordinator),...e.cards.map(e=>e.column)]),board:e.project?.board||null,resolvedTotal:e.project?.resolvedTotal??e.project?.board?.resolved.length??0,stale:!!e.project?.stale,error:e.project?.error||``,counts:t})}l.push(...e.cards)}return[...l,...c]}function di(e,t){let n=new Map,r=0;return{cards:e.filter(e=>{if(e.column!==`finished`||e.kind!==`thread`&&e.kind!==`task`)return!0;let i=`${e.segment}|${e.kind}`,a=n.get(i)||0;return n.set(i,a+1),a<t||(r++,!1)}),hidden:r}}function fi(e){let t=new Map;for(let n of e){if(t.has(n.segment))continue;let e=n.segment&&(n.kind===`agent`?n.pane.machine:n.coordinator.machine)||``;t.set(n.segment,n.segment?{id:`${e}|${(n.project||``).toLowerCase()}`,name:n.project,machine:e}:{id:``,name:null,machine:``})}return t}function pi(e){let t=[],n=new Set,r=null;for(let i of fi(e).values())i.id?n.has(i.id)||(n.add(i.id),t.push(i)):r=i;return r?[...t,r]:t}function mi(e,t){if(!t.size)return e;let n=fi(e);return e.filter(e=>!t.has(n.get(e.segment).id))}var hi=c(null),gi=c(!1),_i=c(null);function vi(e,t,n){return li(n,t,at.value.panes,e.machine||``)[0]}var yi=0;async function bi(e,t){if(!t.report)return dt(ot(`No report for this thread`),!0);let n=++yi;_i.value=t.id;try{let r=await je(e,t.id);if(n!==yi)return;hi.value={thread:t,html:Ke(r.text),truncated:r.truncated,coordinator:e},gi.value=!0,ut()}catch(e){n===yi&&dt(e.message,!0)}finally{n===yi&&(_i.value=null)}}function xi(e,t,n){let r=vi(e,t,n);r?(ut(),tt(Me(r.id))):n.report?bi(e.id,n):dt(ot(`This thread’s agent was not found`),!0)}export{vt as A,fr as C,qt as D,$t as E,Yt as O,Mr as S,cn as T,Ur as _,_i as a,Rr as b,si as c,di as d,mi as f,Kr as g,Jr as h,hi as i,Lt as k,pi as l,$r as m,bi as n,gi as o,li as p,vi as r,ei as s,xi as t,ui as u,zr as v,Qn as w,Lr as x,Br as y};