specrails-desktop 2.34.0 → 2.35.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 (209) hide show
  1. package/client/dist/assets/ActivityFeedPage-LCBJ5WiD.js +1 -0
  2. package/client/dist/assets/AgentBrowserCapture-B-xQpyZr.js +1 -0
  3. package/client/dist/assets/AgentModeAnalyticsPane-BI1Vcf3T.js +2 -0
  4. package/client/dist/assets/AgentModeCodePane-BTRwCl9h.js +2 -0
  5. package/client/dist/assets/AgentModeJobsPane-VzeBJLqP.js +1 -0
  6. package/client/dist/assets/AgentsPage-CJj1K24O.js +87 -0
  7. package/client/dist/assets/AnalyticsPage-CQpV5_fX.js +1 -0
  8. package/client/dist/assets/CodePage-9-tFh0jB.js +2 -0
  9. package/client/dist/assets/DesktopAnalyticsPage-BcZ0_O_C.js +1 -0
  10. package/client/dist/assets/DocsDialog-BPAzDICW.js +11 -0
  11. package/client/dist/assets/DocsPage-Dqo4Hn6G.js +11 -0
  12. package/client/dist/assets/IntegrationsPage-Bhy58lnQ.js +1 -0
  13. package/client/dist/assets/InteractiveJobComposer-D36fZWai.js +19 -0
  14. package/client/dist/assets/JobDetailModal-BxsktbkQ.js +1 -0
  15. package/client/dist/assets/JobDetailPage-WWyCy6Sp.js +1 -0
  16. package/client/dist/assets/JobsPage-CEbM7uxU.js +1 -0
  17. package/client/dist/assets/{LoopBuilderPage-WeiofeL6.js → LoopBuilderPage-CYsSN8io.js} +2 -2
  18. package/client/dist/assets/LoopPreviewModal-BJhgX5wY.js +1 -0
  19. package/client/dist/assets/LoopsPage-DB4OqMot.js +1 -0
  20. package/client/dist/assets/MinimizedChatsContext-CcjBHMHd.js +1 -0
  21. package/client/dist/assets/PluginsPage-CR8K4nM_.js +2 -0
  22. package/client/dist/assets/{ProjectSettingsDialog-BkCXBQWk.js → ProjectSettingsDialog-C45-qhF4.js} +1 -1
  23. package/client/dist/assets/ReviewPacketPage-Cz_QQeC3.js +1 -0
  24. package/client/dist/assets/TemplatePreviewModal-wFBd2vQP.js +1 -0
  25. package/client/dist/assets/TicketDetailModal-BvZoyDAL.js +14 -0
  26. package/client/dist/assets/{Trans-CTqw6rr9.js → Trans-DXZ-BLXb.js} +1 -1
  27. package/client/dist/assets/agent-BQgKv_2F.js +1 -0
  28. package/client/dist/assets/agent-C1NRDJqL.js +1 -0
  29. package/client/dist/assets/agent-CLNleiy6.js +1 -0
  30. package/client/dist/assets/agent-CmceArkQ.js +1 -0
  31. package/client/dist/assets/agent-D3UxQ3SR.js +1 -0
  32. package/client/dist/assets/agent-DB1JeE64.js +1 -0
  33. package/client/dist/assets/agent-DXkHcQ-D.js +1 -0
  34. package/client/dist/assets/agent-DjJJJ2M8.js +1 -0
  35. package/client/dist/assets/ban-E4EaZe3a.js +1 -0
  36. package/client/dist/assets/bot-DzuuuC5R.js +1 -0
  37. package/client/dist/assets/{browser-DxP-alBK.js → browser-BgqHDMXP.js} +1 -1
  38. package/client/dist/assets/{browser-CyR1Kp3m.js → browser-CsKJtrpv.js} +1 -1
  39. package/client/dist/assets/browser-Cu58EpZU.js +1 -0
  40. package/client/dist/assets/{browser-rRCwi7Y7.js → browser-CvXOJm-j.js} +1 -1
  41. package/client/dist/assets/{browser-CvgDySd9.js → browser-DOrFh1c7.js} +1 -1
  42. package/client/dist/assets/{browser-DwZljcRh.js → browser-DQv_Jo7x.js} +1 -1
  43. package/client/dist/assets/{browser-C25DkQiO.js → browser-LPgxvJu2.js} +1 -1
  44. package/client/dist/assets/{browser-CiJ7-L32.js → browser-eL-3MIEI.js} +1 -1
  45. package/client/dist/assets/button-CJqFnUOL.js +1 -0
  46. package/client/dist/assets/{chunk-KS7C4IRE-Cx5sqopX.js → chunk-KS7C4IRE-DEKu087k.js} +1 -1
  47. package/client/dist/assets/{commands-DyUZQ1FI.js → commands-6tYQih5m.js} +1 -1
  48. package/client/dist/assets/{commands-B9RZO4qS.js → commands-BK2QinXN.js} +1 -1
  49. package/client/dist/assets/{commands-Bbxu8kLU.js → commands-C2Nca76h.js} +1 -1
  50. package/client/dist/assets/{commands-CDU3qv68.js → commands-CKdLihNX.js} +1 -1
  51. package/client/dist/assets/{commands-DTQBF_q5.js → commands-CYIBTAlc.js} +1 -1
  52. package/client/dist/assets/{commands-hOtKuOXc.js → commands-CjUtYJIM.js} +1 -1
  53. package/client/dist/assets/{commands-BEwbAjtD.js → commands-Cq_u_8y9.js} +1 -1
  54. package/client/dist/assets/{commands-CzezgtQj.js → commands-D_ZHYQug.js} +1 -1
  55. package/client/dist/assets/core-B3mKBIh5.js +1 -0
  56. package/client/dist/assets/dashboard-B9GhC5ku.js +1 -0
  57. package/client/dist/assets/dashboard-C8WOEiPu.js +1 -0
  58. package/client/dist/assets/dashboard-CBnv6zOI.js +1 -0
  59. package/client/dist/assets/dashboard-CaP0fU87.js +1 -0
  60. package/client/dist/assets/dashboard-D4ZZ4x84.js +1 -0
  61. package/client/dist/assets/dashboard-DmuTQBX8.js +1 -0
  62. package/client/dist/assets/dashboard-DynLYj3d.js +1 -0
  63. package/client/dist/assets/dashboard-zj4gGFJ1.js +1 -0
  64. package/client/dist/assets/dialog-CdWCb02j.js +45 -0
  65. package/client/dist/assets/dist-js-CWeUdf5Z.js +1 -0
  66. package/client/dist/assets/dist-js-Rlh4FLH5.js +1 -0
  67. package/client/dist/assets/event-Bt7f3wXe.js +1 -0
  68. package/client/dist/assets/file-text-BcLCfcWZ.js +1 -0
  69. package/client/dist/assets/{formatDistanceToNow-BOuXgebD.js → formatDistanceToNow-C0ImhVKp.js} +1 -1
  70. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-EjGOpn4b.js → getTimezoneOffsetInMilliseconds-owhDdTXs.js} +1 -1
  71. package/client/dist/assets/git-refresh-wTW0rO0Z.js +1 -0
  72. package/client/dist/assets/i18n-DwgvwTnx.js +2 -0
  73. package/client/dist/assets/index-DhjjFyU5.js +66 -0
  74. package/client/dist/assets/index-xBFsOEiJ.css +2 -0
  75. package/client/dist/assets/jira-api-CcZMcEN5.js +1 -0
  76. package/client/dist/assets/loops-B7YpGizO.js +1 -0
  77. package/client/dist/assets/{loops-CMMQOw2P.js → loops-BomD2J-h.js} +1 -1
  78. package/client/dist/assets/{loops-B2_97D26.js → loops-BrQHSQw3.js} +1 -1
  79. package/client/dist/assets/{loops-BwxCndZk.js → loops-BvBwvTPA.js} +1 -1
  80. package/client/dist/assets/{loops-BISOkuCu.js → loops-CODk6Slz.js} +1 -1
  81. package/client/dist/assets/{loops-CD19kEzq.js → loops-DC6k-Ym-.js} +1 -1
  82. package/client/dist/assets/{loops-aEb4RxN2.js → loops-DSEg8-uY.js} +1 -1
  83. package/client/dist/assets/{loops-Bo6w_peZ.js → loops-DhCoXD_v.js} +1 -1
  84. package/client/dist/assets/narration-4Z2VUhZw.js +1 -0
  85. package/client/dist/assets/narration-BGuiEDj3.js +1 -0
  86. package/client/dist/assets/narration-BuSoqRmv.js +1 -0
  87. package/client/dist/assets/narration-CB9t29fy.js +1 -0
  88. package/client/dist/assets/narration-CU3x8FHD.js +1 -0
  89. package/client/dist/assets/narration-CWeXhfP5.js +1 -0
  90. package/client/dist/assets/narration-DRaDnhT5.js +1 -0
  91. package/client/dist/assets/narration-DtEbQgCw.js +1 -0
  92. package/client/dist/assets/packet-B1IxaL5f.js +1 -0
  93. package/client/dist/assets/packet-Bh5kkbiB.js +1 -0
  94. package/client/dist/assets/packet-By8fqYxW.js +1 -0
  95. package/client/dist/assets/packet-CZdvA44E.js +1 -0
  96. package/client/dist/assets/packet-CrjHRQCP.js +1 -0
  97. package/client/dist/assets/packet-Dwi2pTtx.js +1 -0
  98. package/client/dist/assets/packet-_-ZIa0IR.js +1 -0
  99. package/client/dist/assets/packet-n0W6E1Hn.js +1 -0
  100. package/client/dist/assets/save-B6wGWwBR.js +1 -0
  101. package/client/dist/assets/settings-Bd0x4TBa.js +1 -0
  102. package/client/dist/assets/settings-C1-7cXzC.js +1 -0
  103. package/client/dist/assets/settings-CAFaT38b.js +1 -0
  104. package/client/dist/assets/settings-Ct3v1nW2.js +1 -0
  105. package/client/dist/assets/settings-DHh7_IF5.js +1 -0
  106. package/client/dist/assets/settings-DQXAmdcv.js +1 -0
  107. package/client/dist/assets/settings-guzlhpup.js +1 -0
  108. package/client/dist/assets/settings-sZfTPMEH.js +1 -0
  109. package/client/dist/assets/{spending-BpYPsevQ.js → spending-BQX3P7Cq.js} +1 -1
  110. package/client/dist/assets/useDesktop-BzX769yH.js +1 -0
  111. package/client/dist/index.html +29 -31
  112. package/docs/internals/embedded-browser-native-webview-evaluation.md +161 -0
  113. package/docs/internals/review-packet.md +212 -0
  114. package/package.json +1 -1
  115. package/server/dist/accept-ladder.js +61 -0
  116. package/server/dist/agent-chat-manager.js +22 -1
  117. package/server/dist/agent-defaults.js +359 -0
  118. package/server/dist/agent-operator-prompt.js +13 -5
  119. package/server/dist/browser-playwright.js +39 -2
  120. package/server/dist/db.js +38 -0
  121. package/server/dist/delivery-evidence.js +242 -0
  122. package/server/dist/desktop-router.js +23 -0
  123. package/server/dist/feature-flags.js +23 -0
  124. package/server/dist/loop-command-catalog.js +33 -0
  125. package/server/dist/loop-executors.js +12 -2
  126. package/server/dist/loop-factory.js +16 -1
  127. package/server/dist/loops-router.js +2 -0
  128. package/server/dist/mcp/tools/rails.js +16 -0
  129. package/server/dist/project-registry.js +33 -1
  130. package/server/dist/project-router-loop-runs.js +27 -2
  131. package/server/dist/providers/claude-adapter.js +60 -3
  132. package/server/dist/queue-manager.js +47 -4
  133. package/server/dist/rail-isolated-launch.js +119 -5
  134. package/server/dist/rail-pr-store.js +40 -3
  135. package/server/dist/rail-worktree-release.js +17 -1
  136. package/server/dist/rails-router.js +124 -3
  137. package/server/dist/review-packet.js +327 -0
  138. package/server/dist/revision-seed.js +73 -0
  139. package/server/dist/run-duration-stats.js +71 -0
  140. package/server/dist/stuck-run-detector.js +153 -0
  141. package/server/dist/telemetry-receiver.js +22 -0
  142. package/server/dist/worktree-node-modules.js +138 -16
  143. package/client/dist/assets/ActivityFeedPage-DIDxNsDj.js +0 -1
  144. package/client/dist/assets/AgentBrowserCapture-7pJ2G5VY.js +0 -1
  145. package/client/dist/assets/AgentModeAnalyticsPane-BSSyTnTM.js +0 -2
  146. package/client/dist/assets/AgentModeCodePane-DzW6gvDw.js +0 -2
  147. package/client/dist/assets/AgentModeJobsPane-9wJff15f.js +0 -1
  148. package/client/dist/assets/AgentsPage-CIA67psb.js +0 -87
  149. package/client/dist/assets/AnalyticsPage-C0LwYELz.js +0 -1
  150. package/client/dist/assets/CodePage-RtKvHmAO.js +0 -2
  151. package/client/dist/assets/DesktopAnalyticsPage-BU8Y_Ts1.js +0 -1
  152. package/client/dist/assets/DocsDialog-DIpoaGlQ.js +0 -11
  153. package/client/dist/assets/DocsPage-ME47KZpK.js +0 -11
  154. package/client/dist/assets/IntegrationsPage-Bs00_tl4.js +0 -1
  155. package/client/dist/assets/InteractiveJobComposer-BGjIe9R6.js +0 -19
  156. package/client/dist/assets/JobDetailModal-1UZkqH4I.js +0 -1
  157. package/client/dist/assets/JobDetailPage-CN65sAf1.js +0 -1
  158. package/client/dist/assets/JobsPage-f-4dqys7.js +0 -1
  159. package/client/dist/assets/LoopPreviewModal-DDTnTyH0.js +0 -1
  160. package/client/dist/assets/LoopsPage-BVNchIex.js +0 -1
  161. package/client/dist/assets/MinimizedChatsContext-CHsu3NCX.js +0 -1
  162. package/client/dist/assets/PluginsPage-CdFzGEfQ.js +0 -2
  163. package/client/dist/assets/TemplatePreviewModal-RDi0khFG.js +0 -1
  164. package/client/dist/assets/TicketDetailModal-MhJzrqbi.js +0 -14
  165. package/client/dist/assets/agent-Bd-q3Wqp.js +0 -1
  166. package/client/dist/assets/agent-BlvdW4Hv.js +0 -1
  167. package/client/dist/assets/agent-C-KQhxeM.js +0 -1
  168. package/client/dist/assets/agent-Ca15w5eu.js +0 -1
  169. package/client/dist/assets/agent-D6fKaoMd.js +0 -1
  170. package/client/dist/assets/agent-HFMYMTbB.js +0 -1
  171. package/client/dist/assets/agent-QIEbkBjg.js +0 -1
  172. package/client/dist/assets/agent-mTCsAbCl.js +0 -1
  173. package/client/dist/assets/api-B2M7CtDw.js +0 -1
  174. package/client/dist/assets/arrow-left-CpIR4j7G.js +0 -1
  175. package/client/dist/assets/arrow-up-right-9DoMn7fD.js +0 -1
  176. package/client/dist/assets/browser-CXUcnTMI.js +0 -1
  177. package/client/dist/assets/button-BUIIBQPT.js +0 -1
  178. package/client/dist/assets/chevron-right-CViMxucY.js +0 -1
  179. package/client/dist/assets/dashboard-BHRqsGCV.js +0 -1
  180. package/client/dist/assets/dashboard-Bfr90vOl.js +0 -1
  181. package/client/dist/assets/dashboard-CTsM8x3m.js +0 -1
  182. package/client/dist/assets/dashboard-CqC6wX0h.js +0 -1
  183. package/client/dist/assets/dashboard-CuZtAszc.js +0 -1
  184. package/client/dist/assets/dashboard-DAcqIc-n.js +0 -1
  185. package/client/dist/assets/dashboard-DekiV-86.js +0 -1
  186. package/client/dist/assets/dashboard-DoDczc5S.js +0 -1
  187. package/client/dist/assets/dialog-CzIekCw0.js +0 -45
  188. package/client/dist/assets/dist-Cez5CRkX.js +0 -1
  189. package/client/dist/assets/dist-js-BmsFWRly.js +0 -1
  190. package/client/dist/assets/dist-js-J5W_N5ng.js +0 -1
  191. package/client/dist/assets/external-link-BcU5EWZp.js +0 -1
  192. package/client/dist/assets/file-text-CFT-xXKN.js +0 -1
  193. package/client/dist/assets/i18n-nJQvD5zJ.js +0 -2
  194. package/client/dist/assets/index-C_sdsSZt.js +0 -63
  195. package/client/dist/assets/index-DCN5QbDm.css +0 -2
  196. package/client/dist/assets/jira-api-Bhixwn-d.js +0 -1
  197. package/client/dist/assets/loops-CnxqL8IL.js +0 -1
  198. package/client/dist/assets/save-28sIlCdr.js +0 -1
  199. package/client/dist/assets/settings-BveOJoaI.js +0 -1
  200. package/client/dist/assets/settings-Cj1C6F5k.js +0 -1
  201. package/client/dist/assets/settings-CuVwOpe0.js +0 -1
  202. package/client/dist/assets/settings-D5X4DfRc.js +0 -1
  203. package/client/dist/assets/settings-DXwxe-BW.js +0 -1
  204. package/client/dist/assets/settings-Di81Ba_V.js +0 -1
  205. package/client/dist/assets/settings-jbLjCYC_.js +0 -1
  206. package/client/dist/assets/settings-wIZNPFnn.js +0 -1
  207. package/client/dist/assets/useBrowserCaptureSession-BBXBN0Na.js +0 -1
  208. package/client/dist/assets/useDesktop-B6Du2N83.js +0 -1
  209. package/client/dist/assets/useSharedWebSocket-DK96ctb7.js +0 -1
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} adicionado`,railRemoved:`{{rail}} removido`,railLimitReached:`Limite de rails atingido ({{max}} máx.)`,railDeleteFailed:`Não foi possível remover o rail — ele contém specs, está em execução ou tem uma decisão de PR pendente`,launchTicketsInFlight:`Uma spec deste rail já está sendo trabalhada por uma execução ativa`,launchTicketCap:`Este trilho tem {{count}} specs — um lançamento aceita no máximo {{max}} por trilho. Distribua-as entre trilhos.`,launchAllSummary_one:`{{count}} rail lançado em paralelo`,launchAllSummary_other:`{{count}} rails lançados em paralelo`,launchAllNoneEligible:`Nenhum rail pronto para lançar — atribua specs a um rail livre primeiro`,launchAllFailed:`Nenhum rail pôde ser lançado`,railCompleted:`Rail {{n}} concluído`,railFailed:`Rail {{n}} falhou — specs devolvidas a Specs`,railEnded:`Rail {{n}} {{status}} — specs devolvidas a Specs`,alreadyOnRail:`Já está em {{rail}}`,movedToRail:`Movido para {{rail}}`,railRunningStopFirst:`{{rail}} está em execução — pare-o antes de remover`,removedFromRail:`Removido de {{rail}}`,queuedOnRail:`Em fila em {{rail}}`,queuedOnRailDescription:`O rail está atualmente em execução`,railStopped:`{{rail}} parado`,stopFailed:`Falha ao parar o rail`,syncTicketsFailed:`Falha ao sincronizar os tickets do rail`,launchFailed:`Falha ao lançar o rail`,launchNetworkError:`Erro de rede ao lançar o rail`,railLaunched:`{{rail}} lançado`,launchDescription_one:`{{mode}} com {{count}} spec`,launchDescription_other:`{{mode}} com {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}}: a spec #{{ticket}} precisa de revisão após o merge`,railWorktreesNoGit:`Isolamento por worktree indisponível: este projeto não é um repositório git — executando em modo compartilhado.`,railWorktreesNoCommits:`Isolamento por worktree indisponível: o repositório ainda não tem commits — faça um commit inicial e relance.`,railWorktreesError:`O isolamento por worktrees falhou — esta execução continua SEM o fluxo de revisão por PR (sem cartão de implementação). Veja o detalhe do erro abaixo.`,onReviewCannotMoveToRail:`Esta spec aguarda revisão da PR — resolva primeiro a decisão da PR`,onReviewNotLaunchable:`Uma spec deste rail aguarda revisão da PR — resolva a decisão da PR antes de lançar`},t={operation:{inProgress:`Ação em andamento…`,"create-pr":`Criando PR…`,publish:`Publicando…`,discard:`Descartando…`,dismiss:`Encerrando acompanhamento…`,"poll-merge":`Verificando merge…`,reopen:`Reabrindo…`,"merge-local":`Integrando localmente…`,"recover-and-retry":`A criar o commit e a tentar novamente o push do resultado preservado…`,"acknowledge-no-changes":`Marcando como concluído…`},markDone:`Marcar como concluídas`,refine:`Refinar`,completedToast:`Confirmado — as specs foram movidas para Concluído`,markDoneConfirmTitle:`Marcar estas specs como concluídas?`,markDoneConfirmBody:`A implementação confirmou que nenhuma alteração de código é necessária. As specs serão movidas para Concluído e o worktree sem alterações será limpo.`,refineConfirmTitle:`Refinar estas specs?`,refineConfirmBody:`O resultado sem alterações será fechado e as specs voltarão ao backlog para refinamento. Os logs de execução permanecerão disponíveis.`,localOnly:`Alterações disponíveis localmente`,localOnlyHint:`A implementação foi concluída, mas as alterações não foram enviadas. Integre-as localmente ou tente publicar novamente quando o remoto estiver disponível.`,noChanges:`Nenhuma alteração necessária`,partial:`{{succeeded}} de {{total}} implementações prontas`,createPartialPr:`Criar PR com {{count}}`,deliveryBlocked:`Implementação concluída — a entrega requer atenção`,updateFailed:`Implementação concluída — falha na atualização`,retryPush:`Tentar push novamente`,retryPushVerified:`Push verificado · o commit {{sha}} está na PR`,commitAlreadyVerified:`O commit {{sha}} já está verificado na PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR fechada sem merge`,reopen:`Reabrir`,dismiss:`Encerrar acompanhamento`,discardLocalResult:`Descartar resultado local`,dismissConfirmTitle:`Encerrar este acompanhamento?`,dismissConfirmBody:`Este cartão de acompanhamento será encerrado. Seu worktree só será removido se isso ainda for seguro; caso contrário, será preservado com um aviso. A PR existente, seu branch e o estado da revisão permanecerão inalterados.`,discardLocalConfirmTitle:`Descartar o resultado local?`,discardLocalConfirmBody:`A iteração local recuperável só será removida se isso ainda for seguro; se tiver sido alterada, será preservada com um aviso. Qualquer PR existente e seu branch permanecerão inalterados. Um resultado removido não pode ser recuperado.`,viewRunLog:`Ver log de execução de {{ref}}`,cleanupIncomplete_one:`Limpeza incompleta ({{count}} aviso)`,cleanupIncomplete_other:`Limpeza incompleta ({{count}} avisos)`,cleanupIncompleteHint:`Os dados de recuperação locais foram preservados. Verifique estes detalhes antes de remover algo manualmente.`,copyCleanupDetails:`Copiar detalhes de recuperação`,safetyArchiveTitle:`Arquivo de segurança ({{count}})`,safetyArchiveHint:`Os ficheiros temporários do espaço de trabalho foram preservados fora da PR por precaução. Pode inspecioná-los ou removê-los manualmente.`,copySafetyArchive:`Copiar caminhos`,unit:{failed:`implementação falhou`,blocked:`entrega bloqueada`,noChanges:`sem alterações`,succeeded:`pronta`},readyForReview:`Pronto para revisão`,draftPr:`PR em rascunho`,branchPushed:`Ramo enviado — PR pendente`,branchPushedHint:`O ramo foi enviado mas não foi possível criar a PR (GitHub CLI indisponível). Tente novamente para a criar.`,iteratingPr:`A atualizar PR`,prReady:`PR pronta`,implementationFailed:`Implementação falhou`,implementationFailedHint:`A execução de implementação falhou. Abra o log da execução e descarte este cartão antes de relançar.`,prFailed:`PR falhou`,prFailedDetail:`PR falhou: {{detail}}`,createDegraded:`Não foi possível publicar a PR — {{detail}}. Tente novamente quando estiver resolvido.`,createPr:`Criar PR`,createPrTooltip:`→ {{base}}`,publish:`Publicar`,publishTooltip:`Abre a PR em rascunho para a revisão da equipa`,checkout:`Mudar para o branch`,checkoutTooltip:`Fazer checkout de {{branch}} na pasta principal do projeto`,checkoutSuccess:`Checkout feito em {{branch}}`,checkoutFailed:`Não foi possível fazer checkout do ramo da PR`,checkoutDirtyTitle:`Checkout bloqueado para proteger as suas alterações`,checkoutDirtyBody:`A pasta principal do projeto contém alterações sem commit. Faça commit ou stash e tente novamente. Não foi feita qualquer alteração.`,checkoutSafetyUnknownTitle:`Checkout em pausa porque não foi possível verificar a segurança`,checkoutSafetyUnknownBody:`O Specrails não conseguiu ler o estado do Git na pasta principal do projeto. Nada foi libertado ou alterado. Tente novamente quando o Git estiver disponível.`,checkoutNotDeliverableTitle:`Este ramo da PR não contém a implementação preservada`,checkoutNotDeliverableBody:`O commit exato da entrega ainda não foi verificado. Em alternativa, inspecione ou recupere o resultado local.`,inspectLocalResult:`Inspecionar resultado local`,inspectLocalResultTooltip:`Mostrar o worktree isolado preservado e copiar o respetivo caminho`,localResultPathCopied:`Caminho do resultado local copiado`,localResultPath:`Resultado local preservado`,localResultUnavailableHere:`Não existe nenhum worktree recuperável neste computador. Consulte o log da execução no computador onde foi iniciada.`,recoverAndRetry:`Fazer commit e tentar push novamente`,recoverAndRetryConfirmTitle:`Fazer commit e enviar o resultado preservado?`,recoverAndRetryConfirmBody:`O Specrails utilizará apenas o worktree isolado ou o ramo registado compatível com avanço rápido para {{branch}}. Se necessário, criará um commit com os ficheiros entregáveis e enviará esse commit exato apenas se a PR continuar aberta nos ramos de origem e destino esperados. A pasta principal do projeto e as respetivas alterações sem commit não serão afetadas.`,recoverAndRetryVerified:`O commit recuperado {{sha}} está verificado na PR`,recoveryStillBlocked:`A recuperação local ainda requer atenção`,recheckRecovery:`Verificar novamente`,recheckRecoveryConfirmTitle:`Verificar este computador novamente?`,recheckRecoveryConfirmBody:`O Specrails examinará novamente neste clone o worktree, a branch, as refs, os reflogs e os objetos Git órfãos pertencentes à entrega de {{branch}}. Se comprovar um único resultado, poderá fazer commit das alterações isoladas e repetir o push exato. A pasta principal do projeto não será alterada.`,recoveryUnavailable:`Não foi possível verificar a recuperação neste computador`,recoveryUnavailableBody:`O Specrails não conseguiu comprovar com segurança um único resultado pertencente à entrega neste clone. Nada foi alterado ou removido. Consulte os detalhes da etapa e os registos de execução. Se o run foi executado noutro computador, abra o Specrails nele e verifique novamente.`,recoveryDetailSummary:`Detalhe técnico da recuperação`,discard:`Descartar`,discardTooltip:`Fecha a entrega e devolve os tickets a Specs; o trabalho local alterado é preservado`,retryPr:`Tentar PR novamente`,retry:`Tentar novamente`,checkMerge:`Verificar merge`,verifyPr:`Verificar PR`,verifyPrTooltip:`Verificar o commit exato no GitHub e se a PR foi integrada`,checkMergeTooltip:`Pergunta ao GitHub se já foi feito merge da PR`,prLinkFallback:`PR`,openPrTitle:`Abrir a PR no GitHub`,notMergedYet:`Ainda sem merge`,commitMissingRetry:`O commit da entrega não está mais na PR. Você pode tentar o push novamente.`,prVerifiedWaiting:`Commit {{sha}} verificado · aguardando merge`,alreadyResolved:`Já resolvida noutro lugar`,ghFailed:`GitHub CLI falhou: {{detail}}`,actionFailed:`Não foi possível aplicar a decisão da PR`,mergedToast:`Merge da PR concluído — tickets movidos para Concluído`,discardedToast:`PR descartada — tickets devolvidos a Specs`,decisionPending:`Este rail tem uma decisão de PR pendente — crie, publique ou descarte-a antes de relançar`,discardConfirmTitle:`Descartar esta entrega?`,discardConfirmBody:`A PR será fechada sem excluir o branch remoto. Apenas branches locais e worktrees pertencentes ao SpecRails que ainda estejam no commit registrado serão removidos; qualquer item alterado será preservado com um aviso. Os tickets voltarão ao backlog de Specs. Os recursos locais removidos não podem ser recuperados.`,implementationFailedDiscardTitle:`Descartar esta entrega com falha?`,implementationFailedDiscardBody:`O cartão será fechado e os tickets voltarão a Specs. O trabalho local e os branches serão preservados para inspeção. Apenas recursos comprovadamente seguros para limpeza poderão ser removidos.`,mergeLocal:`Integrar localmente`,mergeLocalTooltip:`Faz merge dos branches entregues em {{base}} no seu checkout local (sem GitHub)`,mergeLocalConfirmTitle:`Integrar localmente?`,mergeLocalConfirmBody:`Os branches entregues serão mesclados em {{base}} no seu checkout local. Seu checkout deve estar em {{base}} com a árvore de trabalho limpa.`,mergeLocalBlockedDirty:`Não é possível integrar: sua árvore de trabalho em {{base}} tem mudanças sem commit. Faça commit ou stash e tente de novo.`,mergeLocalBlockedBranch:`Não é possível integrar: seu checkout está em {{current}}, não em {{base}}. Mude para {{base}} e tente de novo.`,mergeLocalFailed:`O merge local falhou: {{detail}}`,mergedLocally:`Integrado em {{base}} localmente`},n={title:`Rails`,runningCount_one:`{{count}} em execução`,runningCount_other:`{{count}} em execução`,launchAll:`Lançar todos`,launchAllTitle:`Lança em paralelo todos os rails prontos — cada execução é isolada em seu próprio worktree do git`},r={skipRunning_one:`{{count}} já em execução`,skipRunning_other:`{{count}} já em execução`,skipEmpty_one:`{{count}} sem specs`,skipEmpty_other:`{{count}} sem specs`,skipPendingDecision_one:`{{count}} aguardando uma decisão de PR`,skipPendingDecision_other:`{{count}} aguardando uma decisão de PR`,skipOnReview_one:`{{count}} com specs em revisão`,skipOnReview_other:`{{count}} com specs em revisão`,skipInFlight_one:`{{count}} ignorado (spec já em andamento)`,skipInFlight_other:`{{count}} ignorados (specs já em andamento)`,failedCount_one:`{{count}} falhou`,failedCount_other:`{{count}} falharam`},i={title:`Lançar todos os rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Paralelo e isolado.`,isolationBody:`Cada rail roda em seu próprio worktree do git — lançamentos simultâneos nunca colidem.`,pipelinesTitle_one:`{{count}} pipeline de IA.`,pipelinesTitle_other:`{{count}} pipelines de IA.`,pipelinesBody:`Um lançamento por rail, cada um com seu modo, motor e perfil configurados.`,costTitle:`Custo multiplicado.`,costBody:`Cada rail gera sua própria execução de IA — o gasto escala com o número de rails.`,launch_one:`Lançar {{count}} rail`,launch_other:`Lançar {{count}} rails`},a={viewJobLog:`Ver log do job`,log:`Log`,implement:`Implementar`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — o fornecedor selecionado implementa a spec de forma autónoma, sem pipeline`,loop:`Loop`,loopTitle:`Loop — execute um loop de automação publicado nas specs do rail`,pickLoop:`Escolha um loop…`,effortTitle:`Esforço de raciocínio`,stop:`Parar`,play:`Iniciar`,failedRetry:`O job falhou — clique para repetir`,addSpecsFirst:`Adicione primeiro specs a este rail`,builtInLoops:`Integrados`,customLoops:`Loops personalizados`,worktreesMerged:`{{count}} mesclados`,worktreesNeedsReview:`{{count}} para revisar`,execSteps:`{{count}} passos`,execLines:`{{count}} linhas`,openspec:`OpenSpec`},o={moveToSpecs:`Mover para Specs`,deleteRail:`Eliminar {{label}}`,dropHere:`Largar aqui`,dropOnThisRail:`Largar neste rail`,dragSpecsHere:`Arraste specs para aqui`},s={title:`Lançar em modo Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Sem pipeline OpenSpec.`,noPipelineBody:`O fluxo estruturado architect → developer → reviewer é totalmente ignorado.`,autonomyTitle:`Autonomia nativa do {{provider}}.`,autonomyBody:`O {{provider}} trabalha por conta própria com agentes nativos e workflows dinâmicos.`,costTitle:`Custo variável.`,costBody:`O gasto depende do que o {{provider}} decidir fazer — pode ser superior ao esperado.`,continue:`Continuar`},c={fetchFailed:`Falha ao obter os rails: {{status}}`},l={chipNew:`PR nova`,chipTitle:`Entregar em uma PR existente`,clear:`Remover PR alvo`,newPr:`PR nova (padrão)`,loading:`Carregando PRs abertas…`,none:`Nenhuma PR aberta encontrada`,fork:`Fork — não é possível fazer push`,manualPlaceholder:`Número da PR`,manualUse:`Usar`,confirmTitle:`Entregar na PR existente?`,confirmBody:`Esta execução trabalha na branch head da PR e faz push nela — nenhuma PR nova é criada.`,confirmBranch:`Branch head`,confirmLaunch:`Lançar para a PR #{{number}}`,errors:{invalid_target_pr:`Número de PR inválido`,target_pr_requires_pr_mode:`Entregar em uma PR existente exige o fluxo isolado de PR`,target_pr_not_found:`PR não encontrada neste repositório`,target_pr_not_open:`Essa PR não está mais aberta`,target_pr_fork:`Essa PR vem de um fork e não pode receber push`,target_pr_invalid:`As branches da PR não servem como destino de entrega`,target_pr_unfetchable:`Não foi possível buscar a branch head da PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} hinzugefügt`,railRemoved:`{{rail}} entfernt`,railLimitReached:`Rail-Limit erreicht (max. {{max}})`,railDeleteFailed:`Rail konnte nicht entfernt werden – es enthält Specs, läuft gerade oder hat eine ausstehende PR-Entscheidung`,launchTicketsInFlight:`Eine Spec dieses Rails wird bereits von einem aktiven Lauf bearbeitet`,launchTicketCap:`Dieses Rail hat {{count}} Specs — ein Start erlaubt höchstens {{max}} pro Rail. Verteile sie auf mehrere Rails.`,launchAllSummary_one:`{{count}} Rail parallel gestartet`,launchAllSummary_other:`{{count}} Rails parallel gestartet`,launchAllNoneEligible:`Keine Rails startbereit – weise zuerst Specs einem freien Rail zu`,launchAllFailed:`Es konnte kein Rail gestartet werden`,railCompleted:`Rail {{n}} abgeschlossen`,railFailed:`Rail {{n}} fehlgeschlagen – Specs zurück in Specs`,railEnded:`Rail {{n}} {{status}} – Specs zurück in Specs`,alreadyOnRail:`Bereits auf {{rail}}`,movedToRail:`Auf {{rail}} verschoben`,railRunningStopFirst:`{{rail}} läuft – vor dem Entfernen stoppen`,removedFromRail:`Von {{rail}} entfernt`,queuedOnRail:`Auf {{rail}} eingereiht`,queuedOnRailDescription:`Rail läuft gerade`,railStopped:`{{rail}} gestoppt`,stopFailed:`Rail konnte nicht gestoppt werden`,syncTicketsFailed:`Rail-Tickets konnten nicht synchronisiert werden`,launchFailed:`Rail konnte nicht gestartet werden`,launchNetworkError:`Netzwerkfehler beim Starten des Rails`,railLaunched:`{{rail}} gestartet`,launchDescription_one:`{{mode}} mit {{count}} Spec`,launchDescription_other:`{{mode}} mit {{count}} Specs`,railWorktreeNeedsReview:`Rail {{n}}: Spec #{{ticket}} muss nach dem Merge geprüft werden`,railWorktreesNoGit:`Worktree-Isolation nicht verfügbar: Dieses Projekt ist kein Git-Repository — Ausführung im gemeinsamen Modus.`,railWorktreesNoCommits:`Worktree-Isolation nicht verfügbar: Das Repository hat noch keine Commits — erstelle einen ersten Commit und starte neu.`,railWorktreesError:`Worktree-Isolation fehlgeschlagen — dieser Lauf läuft OHNE den PR-Review-Flow weiter (keine Implementierungskarte). Siehe Fehlerdetail unten.`,onReviewCannotMoveToRail:`Diese Spec wartet auf die PR-Prüfung — löse zuerst die PR-Entscheidung`,onReviewNotLaunchable:`Eine Spec auf diesem Rail wartet auf die PR-Prüfung — löse die PR-Entscheidung vor dem Start`},t=JSON.parse(`{"operation":{"inProgress":"Aktion läuft…","create-pr":"PR wird erstellt…","publish":"Wird veröffentlicht…","discard":"Wird verworfen…","dismiss":"Fortsetzung wird geschlossen…","poll-merge":"Merge wird geprüft…","reopen":"Wird erneut geöffnet…","merge-local":"Wird lokal integriert…","recover-and-retry":"Gesichertes Ergebnis wird committet und erneut gepusht…","acknowledge-no-changes":"Wird als erledigt markiert…"},"markDone":"Als erledigt markieren","refine":"Verfeinern","completedToast":"Bestätigt — Specs nach Erledigt verschoben","markDoneConfirmTitle":"Diese Specs als erledigt markieren?","markDoneConfirmBody":"Die Implementierung hat bestätigt, dass keine Codeänderungen nötig sind. Die Specs werden nach Erledigt verschoben und der unveränderte Worktree wird bereinigt.","refineConfirmTitle":"Diese Specs verfeinern?","refineConfirmBody":"Das Ergebnis ohne Änderungen wird geschlossen und die Specs kehren zur Verfeinerung in den Backlog zurück. Die Ausführungsprotokolle bleiben verfügbar.","localOnly":"Änderungen sind lokal verfügbar","localOnlyHint":"Die Implementierung ist abgeschlossen, aber die Änderungen wurden nicht gepusht. Integriere sie lokal oder veröffentliche sie erneut, sobald das Remote verfügbar ist.","noChanges":"Keine Änderungen erforderlich","partial":"{{succeeded}} von {{total}} Implementierungen bereit","createPartialPr":"PR mit {{count}} erstellen","deliveryBlocked":"Implementierung abgeschlossen — Bereitstellung erfordert Aufmerksamkeit","updateFailed":"Implementierung abgeschlossen — Aktualisierung fehlgeschlagen","retryPush":"Push wiederholen","retryPushVerified":"Push verifiziert · Commit {{sha}} ist in der PR","commitAlreadyVerified":"Commit {{sha}} ist bereits in der PR verifiziert","deliveryCommit":"Commit {{sha}}","prClosed":"PR ohne Merge geschlossen","reopen":"Erneut öffnen","dismiss":"Fortsetzung schließen","discardLocalResult":"Lokales Ergebnis verwerfen","dismissConfirmTitle":"Diese Fortsetzung schließen?","dismissConfirmBody":"Diese Fortsetzungskarte wird geschlossen. Ihr zugehöriger Worktree wird nur entfernt, wenn dies weiterhin sicher ist; andernfalls bleibt er mit einer Warnung erhalten. Der bestehende PR, sein Branch und der Review-Status bleiben unverändert.","discardLocalConfirmTitle":"Lokales Ergebnis verwerfen?","discardLocalConfirmBody":"Die wiederherstellbare lokale Iteration wird nur entfernt, wenn dies weiterhin sicher ist; wurde sie verändert, bleibt sie mit einer Warnung erhalten. Ein vorhandener PR und sein Branch bleiben unverändert. Ein entferntes Ergebnis kann nicht wiederhergestellt werden.","viewRunLog":"Ausführungsprotokoll für {{ref}} anzeigen","cleanupIncomplete_one":"Bereinigung unvollständig ({{count}} Warnung)","cleanupIncomplete_other":"Bereinigung unvollständig ({{count}} Warnungen)","cleanupIncompleteHint":"Lokale Wiederherstellungsdaten wurden beibehalten. Prüfe diese Details, bevor du etwas manuell entfernst.","copyCleanupDetails":"Wiederherstellungsdetails kopieren","safetyArchiveTitle":"Sicherheitsarchiv ({{count}})","safetyArchiveHint":"Temporäre Workspace-Dateien wurden vorsichtshalber außerhalb des PR aufbewahrt. Du kannst sie prüfen oder manuell entfernen.","copySafetyArchive":"Pfade kopieren","unit":{"failed":"Implementierung fehlgeschlagen","blocked":"Bereitstellung blockiert","noChanges":"keine Änderungen","succeeded":"bereit"},"readyForReview":"Bereit zur Prüfung","draftPr":"Entwurfs-PR","branchPushed":"Branch gepusht — PR ausstehend","branchPushedHint":"Der Branch wurde gepusht, aber die PR konnte nicht erstellt werden (GitHub CLI nicht verfügbar). Erneut versuchen, um sie zu erstellen.","iteratingPr":"PR wird aktualisiert","prReady":"PR bereit","implementationFailed":"Implementierung fehlgeschlagen","implementationFailedHint":"Der Implementierungslauf ist fehlgeschlagen. Öffne das Run-Protokoll und verwirf diese Karte vor einem erneuten Start.","prFailed":"PR fehlgeschlagen","prFailedDetail":"PR fehlgeschlagen: {{detail}}","createDegraded":"PR konnte nicht veröffentlicht werden — {{detail}}. Nach Behebung erneut versuchen.","createPr":"PR erstellen","createPrTooltip":"→ {{base}}","publish":"Veröffentlichen","publishTooltip":"Öffnet den Entwurfs-PR für das Review des Teams","checkout":"Branch auschecken","checkoutTooltip":"Den Hauptordner des Projekts auf {{branch}} auschecken","checkoutSuccess":"{{branch}} ausgecheckt","checkoutFailed":"PR-Branch konnte nicht ausgecheckt werden","checkoutDirtyTitle":"Checkout zum Schutz deiner Änderungen blockiert","checkoutDirtyBody":"Der Hauptordner des Projekts enthält nicht committete Änderungen. Committe oder stashe sie und versuche es erneut. Es wurde nichts verändert.","checkoutSafetyUnknownTitle":"Checkout pausiert, da die Sicherheit nicht geprüft werden konnte","checkoutSafetyUnknownBody":"Specrails konnte den Git-Status des Projekt-Hauptordners nicht lesen. Es wurde nichts freigegeben oder verändert. Versuche es erneut, sobald Git verfügbar ist.","checkoutNotDeliverableTitle":"Dieser PR-Branch enthält nicht die gesicherte Implementierung","checkoutNotDeliverableBody":"Der exakte Liefer-Commit wurde noch nicht verifiziert. Prüfe oder stelle stattdessen das lokale Ergebnis wieder her.","inspectLocalResult":"Lokales Ergebnis prüfen","inspectLocalResultTooltip":"Den gesicherten isolierten Worktree anzeigen und seinen Pfad kopieren","localResultPathCopied":"Pfad des lokalen Ergebnisses kopiert","localResultPath":"Gesichertes lokales Ergebnis","localResultUnavailableHere":"Auf diesem Computer ist kein wiederherstellbarer Worktree verfügbar. Prüfe das Run-Protokoll auf dem Computer, auf dem der Lauf ausgeführt wurde.","recoverAndRetry":"Committen und Push wiederholen","recoverAndRetryConfirmTitle":"Das gesicherte Ergebnis committen und pushen?","recoverAndRetryConfirmBody":"Specrails verwendet ausschließlich den isolierten Worktree oder den aufgezeichneten Fast-Forward-Branch für {{branch}}. Falls nötig, werden die lieferbaren Dateien committet. Anschließend wird nur dieser exakte Commit gepusht und auch nur dann, wenn der PR noch mit den erwarteten Quell- und Ziel-Branches geöffnet ist. Der Hauptordner deines Projekts und seine nicht committeten Änderungen bleiben unberührt.","recoverAndRetryVerified":"Der wiederhergestellte Commit {{sha}} wurde im PR verifiziert","recoveryStillBlocked":"Die lokale Wiederherstellung erfordert noch Aufmerksamkeit","recheckRecovery":"Erneut prüfen","recheckRecoveryConfirmTitle":"Diesen Computer erneut prüfen?","recheckRecoveryConfirmBody":"Specrails durchsucht in diesem Klon erneut den zur Lieferung gehörenden Worktree, Branch, Refs, Reflogs und verwaiste Git-Objekte für {{branch}}. Wird genau ein Ergebnis bewiesen, kann Specrails isolierte Änderungen committen und den exakten Push wiederholen. Der Hauptprojektordner bleibt unberührt.","recoveryUnavailable":"Die Wiederherstellung konnte auf diesem Computer nicht verifiziert werden","recoveryUnavailableBody":"Specrails konnte in diesem Klon nicht sicher genau ein zur Lieferung gehörendes Ergebnis nachweisen. Nichts wurde geändert oder entfernt. Prüfe das Stufendetail und die Run-Protokolle. Wenn der Run auf einem anderen Computer lief, öffne Specrails dort und prüfe erneut.","recoveryDetailSummary":"Technisches Wiederherstellungsdetail","discard":"Verwerfen","discardTooltip":"Schließt die Lieferung und schickt ihre Tickets zurück zu Specs; geänderte lokale Arbeit bleibt erhalten","retryPr":"PR erneut versuchen","retry":"Erneut versuchen","checkMerge":"Merge prüfen","verifyPr":"PR verifizieren","verifyPrTooltip":"Den exakten Commit in GitHub und den Merge-Status der PR prüfen","checkMergeTooltip":"Bei GitHub nachfragen, ob die PR gemergt wurde","prLinkFallback":"PR","openPrTitle":"PR auf GitHub öffnen","notMergedYet":"Noch nicht gemergt","commitMissingRetry":"Der Liefer-Commit ist nicht mehr in der PR enthalten. Der Push kann erneut versucht werden.","prVerifiedWaiting":"Commit {{sha}} verifiziert · wartet auf Merge","alreadyResolved":"Bereits anderweitig erledigt","ghFailed":"GitHub CLI fehlgeschlagen: {{detail}}","actionFailed":"PR-Entscheidung konnte nicht angewendet werden","mergedToast":"PR gemergt — Tickets nach Fertig verschoben","discardedToast":"PR verworfen — Tickets zurück in Specs","decisionPending":"Dieser Rail hat eine ausstehende PR-Entscheidung — erstelle, veröffentliche oder verwirf sie, bevor du neu startest","discardConfirmTitle":"Diese Lieferung verwerfen?","discardConfirmBody":"Der PR wird geschlossen, ohne seinen Remote-Branch zu löschen. Nur lokale Branches und Worktrees, die SpecRails gehören und noch auf dem aufgezeichneten Commit stehen, werden entfernt; alles Veränderte bleibt mit einer Warnung erhalten. Die Tickets kehren in den Specs-Backlog zurück. Entfernte lokale Ressourcen können nicht wiederhergestellt werden.","implementationFailedDiscardTitle":"Diese fehlgeschlagene Lieferung verwerfen?","implementationFailedDiscardBody":"Die Karte wird geschlossen und ihre Tickets kehren zu Specs zurück. Lokale Arbeit und Branches bleiben zur Prüfung erhalten. Nur nachweislich sicher bereinigbare Ressourcen dürfen entfernt werden.","mergeLocal":"Lokal integrieren","mergeLocalTooltip":"Führt die gelieferten Branches lokal in {{base}} zusammen (ohne GitHub)","mergeLocalConfirmTitle":"Lokal integrieren?","mergeLocalConfirmBody":"Die gelieferten Branches werden lokal in {{base}} zusammengeführt. Dein Checkout muss auf {{base}} stehen und sauber sein.","mergeLocalBlockedDirty":"Integration nicht möglich: dein Arbeitsverzeichnis auf {{base}} hat uncommittete Änderungen. Committe oder stashe sie und versuche es erneut.","mergeLocalBlockedBranch":"Integration nicht möglich: dein Checkout steht auf {{current}}, nicht auf {{base}}. Wechsle zu {{base}} und versuche es erneut.","mergeLocalFailed":"Lokaler Merge fehlgeschlagen: {{detail}}","mergedLocally":"Lokal in {{base}} integriert"}`),n={title:`Rails`,runningCount_one:`{{count}} läuft`,runningCount_other:`{{count}} laufen`,launchAll:`Alle starten`,launchAllTitle:`Startet alle startbereiten Rails parallel – jeder Lauf ist in seinem eigenen Git-Worktree isoliert`},r={skipRunning_one:`{{count}} läuft bereits`,skipRunning_other:`{{count}} laufen bereits`,skipEmpty_one:`{{count}} ohne Specs`,skipEmpty_other:`{{count}} ohne Specs`,skipPendingDecision_one:`{{count}} wartet auf eine PR-Entscheidung`,skipPendingDecision_other:`{{count}} warten auf eine PR-Entscheidung`,skipOnReview_one:`{{count}} mit Specs im Review`,skipOnReview_other:`{{count}} mit Specs im Review`,skipInFlight_one:`{{count}} übersprungen (Spec bereits in Arbeit)`,skipInFlight_other:`{{count}} übersprungen (Specs bereits in Arbeit)`,failedCount_one:`{{count}} fehlgeschlagen`,failedCount_other:`{{count}} fehlgeschlagen`},i={title:`Alle Rails starten`,railsCount_one:`{{count}} Rail`,railsCount_other:`{{count}} Rails`,specsCount_one:`{{count}} Spec`,specsCount_other:`{{count}} Specs`,isolationTitle:`Parallel und isoliert.`,isolationBody:`Jedes Rail läuft in seinem eigenen Git-Worktree – gleichzeitige Starts kollidieren nie.`,pipelinesTitle_one:`{{count}} KI-Pipeline.`,pipelinesTitle_other:`{{count}} KI-Pipelines.`,pipelinesBody:`Ein Start pro Rail, jeweils mit dem konfigurierten Modus, Engine und Profil.`,costTitle:`Vervielfachte Kosten.`,costBody:`Jedes Rail erzeugt seinen eigenen KI-Lauf – die Ausgaben skalieren mit der Anzahl der Rails.`,launch_one:`{{count}} Rail starten`,launch_other:`{{count}} Rails starten`},a={viewJobLog:`Job-Log anzeigen`,log:`Log`,implement:`Implement`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle – der gewählte Anbieter implementiert die Spec autonom, ohne Pipeline`,loop:`Loop`,loopTitle:`Loop – eine veröffentlichte Automatisierungsschleife gegen die Specs des Rails ausführen`,pickLoop:`Schleife auswählen…`,effortTitle:`Denkaufwand`,stop:`Stopp`,play:`Start`,failedRetry:`Job fehlgeschlagen – zum Wiederholen klicken`,addSpecsFirst:`Füge zuerst Specs zu diesem Rail hinzu`,builtInLoops:`Integriert`,customLoops:`Eigene Loops`,worktreesMerged:`{{count}} zusammengeführt`,worktreesNeedsReview:`{{count}} zu prüfen`,execSteps:`{{count}} Schritte`,execLines:`{{count}} Zeilen`,openspec:`OpenSpec`},o={moveToSpecs:`Nach Specs verschieben`,deleteRail:`{{label}} löschen`,dropHere:`Hier ablegen`,dropOnThisRail:`Auf diesem Rail ablegen`,dragSpecsHere:`Specs hierher ziehen`},s={title:`Im Freestyle-Modus starten`,context_one:`{{rail}} · {{count}} Spec`,context_other:`{{rail}} · {{count}} Specs`,noPipelineTitle:`Keine OpenSpec-Pipeline.`,noPipelineBody:`Der strukturierte Flow Architect → Developer → Reviewer wird komplett übersprungen.`,autonomyTitle:`Native {{provider}}-Autonomie.`,autonomyBody:`{{provider}} arbeitet eigenständig mit nativen Agenten und dynamischen Workflows.`,costTitle:`Variable Kosten.`,costBody:`Die Ausgaben hängen davon ab, was {{provider}} entscheidet – sie können höher ausfallen als erwartet.`,continue:`Weiter`},c={fetchFailed:`Rails konnten nicht geladen werden: {{status}}`},l={chipNew:`Neuer PR`,chipTitle:`In einen bestehenden PR liefern`,clear:`PR-Ziel entfernen`,newPr:`Neuer PR (Standard)`,loading:`Offene PRs werden geladen…`,none:`Keine offenen PRs gefunden`,fork:`Fork — kein Push möglich`,manualPlaceholder:`PR-Nummer`,manualUse:`Verwenden`,confirmTitle:`In bestehenden PR liefern?`,confirmBody:`Dieser Lauf arbeitet auf dem Head-Branch des PR und pusht hinein — es wird kein neuer PR erstellt.`,confirmBranch:`Head-Branch`,confirmLaunch:`In PR #{{number}} starten`,errors:{invalid_target_pr:`Ungültige PR-Nummer`,target_pr_requires_pr_mode:`Die Lieferung in einen bestehenden PR erfordert den isolierten PR-Flow`,target_pr_not_found:`PR in diesem Repository nicht gefunden`,target_pr_not_open:`Dieser PR ist nicht mehr offen`,target_pr_fork:`Dieser PR stammt aus einem Fork und kann nicht gepusht werden`,target_pr_invalid:`Die Branches des PR sind als Lieferziel unbrauchbar`,target_pr_unfetchable:`Der Head-Branch des PR konnte nicht geholt werden`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1 +0,0 @@
1
- var e={railAdded:`Rail {{n}} añadido`,railRemoved:`{{rail}} eliminado`,railLimitReached:`Límite de rails alcanzado ({{max}} máx.)`,railDeleteFailed:`No se pudo eliminar el rail — tiene specs, está en ejecución o tiene una decisión de PR pendiente`,launchTicketsInFlight:`Una spec de este rail ya está siendo trabajada por una ejecución activa`,launchTicketCap:`Este raíl tiene {{count}} specs — un lanzamiento admite como máximo {{max}} por raíl. Repártelas entre raíles.`,launchAllSummary_one:`{{count}} rail lanzado en paralelo`,launchAllSummary_other:`{{count}} rails lanzados en paralelo`,launchAllNoneEligible:`No hay rails listos para lanzar — asigna specs a un rail libre primero`,launchAllFailed:`No se pudo lanzar ningún rail`,railCompleted:`Rail {{n}} completado`,railFailed:`Rail {{n}} fallido — las specs han vuelto a Specs`,railEnded:`Rail {{n}} {{status}} — las specs han vuelto a Specs`,alreadyOnRail:`Ya está en {{rail}}`,movedToRail:`Movida a {{rail}}`,railRunningStopFirst:`{{rail}} está en ejecución — detenlo antes de eliminarlo`,removedFromRail:`Quitada de {{rail}}`,queuedOnRail:`En cola en {{rail}}`,queuedOnRailDescription:`El rail está en ejecución`,railStopped:`{{rail}} detenido`,stopFailed:`No se pudo detener el rail`,syncTicketsFailed:`No se pudieron sincronizar los tickets del rail`,launchFailed:`No se pudo lanzar el rail`,launchNetworkError:`Error de red al lanzar el rail`,railLaunched:`{{rail}} lanzado`,launchDescription_one:`{{mode}} con {{count}} spec`,launchDescription_other:`{{mode}} con {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}}: la spec #{{ticket}} necesita revisión tras el merge`,railWorktreesNoGit:`Aislamiento por worktrees no disponible: el proyecto no es un repositorio git — ejecutando en modo compartido.`,railWorktreesNoCommits:`Aislamiento por worktrees no disponible: el repositorio aún no tiene commits — haz un commit inicial y relanza.`,railWorktreesError:`La aislación por worktrees falló — este run continúa SIN el flujo de revisión por PR (sin tarjeta de implementación). Mira el detalle del error abajo.`,onReviewCannotMoveToRail:`Esta spec está pendiente de revisión de PR — resuelve primero la decisión de la PR`,onReviewNotLaunchable:`Una spec de este rail está pendiente de revisión de PR — resuelve la decisión de la PR antes de lanzar`},t={operation:{inProgress:`Acción en curso…`,"create-pr":`Creando PR…`,publish:`Publicando…`,discard:`Descartando…`,dismiss:`Cerrando seguimiento…`,"poll-merge":`Comprobando merge…`,reopen:`Reabriendo…`,"merge-local":`Integrando en local…`,"recover-and-retry":`Creando el commit y reintentando el push del resultado conservado…`,"acknowledge-no-changes":`Marcando como hecho…`},readyForReview:`Listo para revisión`,draftPr:`PR en borrador`,branchPushed:`Rama subida — PR pendiente`,branchPushedHint:`La rama se subió pero no se pudo crear la PR (GitHub CLI no disponible). Reintenta para crearla.`,localOnly:`Cambios disponibles en local`,localOnlyHint:`La implementación terminó, pero los cambios no se han subido. Intégralos en local o reintenta la publicación cuando el remoto esté disponible.`,noChanges:`No hacían falta cambios`,markDone:`Marcar como hecho`,refine:`Refinar`,completedToast:`Confirmado — las specs han pasado a Hecho`,markDoneConfirmTitle:`¿Marcar estas specs como hechas?`,markDoneConfirmBody:`La implementación confirmó que no hacen falta cambios de código. Las specs pasarán a Hecho y se limpiará el worktree sin cambios.`,refineConfirmTitle:`¿Refinar estas specs?`,refineConfirmBody:`Se cerrará el resultado sin cambios y las specs volverán al backlog para que puedas refinarlas. Los registros de ejecución seguirán disponibles.`,partial:`{{succeeded}} de {{total}} implementaciones listas`,createPartialPr:`Crear PR con {{count}}`,deliveryBlocked:`Implementación completa — la entrega requiere atención`,updateFailed:`Implementación completa — falló la actualización`,retryPush:`Reintentar push`,retryPushVerified:`Push verificado · el commit {{sha}} está en la PR`,commitAlreadyVerified:`El commit {{sha}} ya está verificado en la PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR cerrada sin merge`,reopen:`Reabrir`,iteratingPr:`Actualizando PR`,prReady:`PR lista`,implementationFailed:`Implementación fallida`,implementationFailedHint:`El run de implementación ha fallado. Abre el log del run y descarta esta card antes de relanzar.`,prFailed:`PR fallida`,prFailedDetail:`PR fallida: {{detail}}`,createDegraded:`No se pudo publicar la PR — {{detail}}. Reintenta cuando esté resuelto.`,createPr:`Crear PR`,createPrTooltip:`→ {{base}}`,publish:`Publicar`,publishTooltip:`Abre la PR en borrador para la revisión del equipo`,checkout:`Cambiar a la rama`,checkoutTooltip:`Cambia la carpeta principal del proyecto a {{branch}}`,checkoutSuccess:`Checkout en {{branch}}`,checkoutFailed:`No se pudo hacer checkout de la rama de la PR`,checkoutDirtyTitle:`Checkout bloqueado para proteger tus cambios`,checkoutDirtyBody:`La carpeta principal del proyecto tiene cambios sin commitear. Haz commit o stash y vuelve a intentarlo. No se ha modificado nada.`,checkoutSafetyUnknownTitle:`Checkout pausado porque no se pudo verificar la seguridad`,checkoutSafetyUnknownBody:`Specrails no pudo leer el estado de Git de la carpeta principal del proyecto. No se ha liberado ni modificado nada. Vuelve a intentarlo cuando Git esté disponible.`,checkoutNotDeliverableTitle:`Esta rama de la PR no contiene la implementación conservada`,checkoutNotDeliverableBody:`Todavía no se ha verificado el commit exacto de la entrega. Inspecciona o recupera el resultado local.`,inspectLocalResult:`Inspeccionar resultado local`,inspectLocalResultTooltip:`Muestra el worktree aislado que se ha conservado y copia su ruta`,localResultPathCopied:`Ruta del resultado local copiada`,localResultPath:`Resultado local conservado`,localResultUnavailableHere:`No hay ningún worktree recuperable en este equipo. Revisa el registro de ejecución desde el equipo donde se ejecutó.`,recoverAndRetry:`Crear commit y reintentar push`,recoverAndRetryConfirmTitle:`¿Crear el commit y subir el resultado conservado?`,recoverAndRetryConfirmBody:`Specrails solo usará el worktree aislado o la rama registrada con avance rápido para {{branch}}. Si hace falta, creará un commit con los archivos entregables y subirá ese commit exacto únicamente si la PR sigue abierta sobre las ramas de origen y destino esperadas. La carpeta principal del proyecto y sus cambios sin commitear no se tocarán.`,recoverAndRetryVerified:`El commit recuperado {{sha}} está verificado en la PR`,recoveryStillBlocked:`La recuperación local aún requiere atención`,recheckRecovery:`Comprobar de nuevo`,recheckRecoveryConfirmTitle:`¿Volver a comprobar este equipo?`,recheckRecoveryConfirmBody:`Specrails volverá a examinar en este clon el worktree, la rama, las refs, los reflogs y los objetos Git huérfanos pertenecientes a la entrega de {{branch}}. Si demuestra un único resultado, podrá confirmar los cambios aislados y reintentar el push exacto. No tocará la carpeta principal del proyecto.`,recoveryUnavailable:`No se pudo verificar la recuperación en este equipo`,recoveryUnavailableBody:`Specrails no pudo demostrar de forma segura un único resultado perteneciente a la entrega en este clon. No se ha cambiado ni eliminado nada. Revisa el detalle de la fase y los registros de ejecución. Si el run se ejecutó en otro equipo, abre Specrails allí y vuelve a comprobar.`,recoveryDetailSummary:`Detalle técnico de recuperación`,discard:`Descartar`,dismiss:`Cerrar seguimiento`,discardLocalResult:`Descartar resultado local`,discardTooltip:`Cierra la entrega y devuelve sus tickets a Specs; el trabajo local modificado se conserva`,retryPr:`Reintentar PR`,retry:`Reintentar`,checkMerge:`Comprobar merge`,verifyPr:`Verificar PR`,verifyPrTooltip:`Verifica el commit exacto en GitHub y comprueba si la PR ya se ha integrado`,checkMergeTooltip:`Consulta a GitHub si ya se ha hecho merge de la PR`,prLinkFallback:`PR`,openPrTitle:`Abrir la PR en GitHub`,notMergedYet:`Aún sin merge`,commitMissingRetry:`El commit de la entrega ya no está en la PR. Puedes reintentar el push.`,prVerifiedWaiting:`Commit {{sha}} verificado · pendiente de merge`,alreadyResolved:`Ya resuelta en otro sitio`,ghFailed:`GitHub CLI falló: {{detail}}`,actionFailed:`No se pudo aplicar la decisión de la PR`,mergedToast:`Merge de la PR completado — los tickets han pasado a Hecho`,discardedToast:`PR descartada — los tickets han vuelto a Specs`,decisionPending:`Este rail tiene una decisión de PR pendiente — créala, publícala o descártala antes de relanzar`,discardConfirmTitle:`¿Descartar esta entrega?`,discardConfirmBody:`La PR se cerrará sin eliminar su rama remota. Solo se eliminarán las ramas y los worktrees locales que pertenezcan a SpecRails y sigan en su commit registrado; cualquier recurso modificado se conservará y se mostrará un aviso. Los tickets volverán al backlog de Specs. Los recursos locales eliminados no se pueden recuperar.`,implementationFailedDiscardTitle:`¿Descartar esta entrega fallida?`,implementationFailedDiscardBody:`Se cerrará la tarjeta y sus tickets volverán a Specs. El trabajo local y las ramas se conservarán para su inspección. Solo se podrán eliminar los recursos cuya limpieza sea segura.`,dismissConfirmTitle:`¿Cerrar este seguimiento?`,dismissConfirmBody:`Se cerrará esta tarjeta de seguimiento. Su worktree solo se eliminará si sigue siendo seguro hacerlo; de lo contrario, se conservará y verás un aviso. La PR existente, su rama y su estado de revisión no cambiarán.`,discardLocalConfirmTitle:`¿Descartar el resultado local?`,discardLocalConfirmBody:`La iteración local recuperable solo se eliminará si sigue siendo seguro hacerlo; si ha cambiado, se conservará y verás un aviso. Cualquier PR existente y su rama no cambiarán. Un resultado eliminado no se puede recuperar.`,mergeLocal:`Integrar en local`,mergeLocalTooltip:`Fusiona las ramas entregadas en {{base}} en tu checkout local (sin necesidad de GitHub)`,mergeLocalConfirmTitle:`¿Integrar en local?`,mergeLocalConfirmBody:`Las ramas entregadas se fusionarán en {{base}} en tu checkout local. Tu checkout debe estar en {{base}} con el árbol de trabajo limpio.`,mergeLocalBlockedDirty:`No se puede integrar: tu árbol de trabajo en {{base}} tiene cambios sin commitear. Haz commit o stash y reintenta.`,mergeLocalBlockedBranch:`No se puede integrar: tu checkout está en {{current}}, no en {{base}}. Cambia a {{base}} y reintenta.`,mergeLocalFailed:`La fusión local falló: {{detail}}`,mergedLocally:`Integrado en {{base}} en local`,viewRunLog:`Ver el registro de ejecución de {{ref}}`,cleanupIncomplete_one:`La limpieza está incompleta ({{count}} aviso)`,cleanupIncomplete_other:`La limpieza está incompleta ({{count}} avisos)`,cleanupIncompleteHint:`Se han conservado datos de recuperación locales. Revisa estos detalles antes de eliminar nada manualmente.`,copyCleanupDetails:`Copiar detalles de recuperación`,safetyArchiveTitle:`Archivo de seguridad ({{count}})`,safetyArchiveHint:`Se han conservado archivos temporales del espacio de trabajo fuera de la PR como medida de precaución. Puedes revisarlos o eliminarlos manualmente.`,copySafetyArchive:`Copiar rutas`,unit:{failed:`implementación fallida`,blocked:`entrega bloqueada`,noChanges:`sin cambios`,succeeded:`lista`}},n={title:`Rails`,runningCount_one:`{{count}} en ejecución`,runningCount_other:`{{count}} en ejecución`,launchAll:`Lanzar todos`,launchAllTitle:`Lanza en paralelo todos los rails listos — cada ejecución se aísla en su propio worktree de git`},r={skipRunning_one:`{{count}} ya en ejecución`,skipRunning_other:`{{count}} ya en ejecución`,skipEmpty_one:`{{count}} sin specs`,skipEmpty_other:`{{count}} sin specs`,skipPendingDecision_one:`{{count}} con decisión de PR pendiente`,skipPendingDecision_other:`{{count}} con decisión de PR pendiente`,skipOnReview_one:`{{count}} con specs en revisión`,skipOnReview_other:`{{count}} con specs en revisión`,skipInFlight_one:`{{count}} omitido (spec ya en curso)`,skipInFlight_other:`{{count}} omitidos (specs ya en curso)`,failedCount_one:`{{count}} fallido`,failedCount_other:`{{count}} fallidos`},i={title:`Lanzar todos los rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Paralelo y aislado.`,isolationBody:`Cada rail se ejecuta en su propio worktree de git — los lanzamientos simultáneos nunca colisionan.`,pipelinesTitle_one:`{{count}} pipeline de IA.`,pipelinesTitle_other:`{{count}} pipelines de IA.`,pipelinesBody:`Un lanzamiento por rail, cada uno con su modo, motor y perfil configurados.`,costTitle:`Coste multiplicado.`,costBody:`Cada rail genera su propia ejecución de IA — el gasto escala con el número de rails.`,launch_one:`Lanzar {{count}} rail`,launch_other:`Lanzar {{count}} rails`},a={viewJobLog:`Ver log del job`,log:`Log`,implement:`Implement`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — el proveedor seleccionado implementa la spec de forma autónoma, sin pipeline`,loop:`Loop`,loopTitle:`Loop — ejecuta un bucle de automatización publicado sobre las specs del rail`,pickLoop:`Elige un bucle…`,effortTitle:`Esfuerzo de razonamiento`,stop:`Detener`,play:`Iniciar`,failedRetry:`El job ha fallado — haz clic para reintentar`,addSpecsFirst:`Añade primero specs a este rail`,builtInLoops:`Integrados`,customLoops:`Loops personalizados`,worktreesMerged:`{{count}} fusionados`,worktreesNeedsReview:`{{count}} a revisar`,execSteps:`{{count}} pasos`,execLines:`{{count}} líneas`,openspec:`OpenSpec`},o={moveToSpecs:`Mover a Specs`,deleteRail:`Eliminar {{label}}`,dropHere:`Suelta aquí`,dropOnThisRail:`Suelta en este rail`,dragSpecsHere:`Arrastra specs aquí`},s={title:`Lanzar en modo Freestyle`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`Sin pipeline de OpenSpec.`,noPipelineBody:`El flujo estructurado architect → developer → reviewer se omite por completo.`,autonomyTitle:`Autonomía nativa de {{provider}}.`,autonomyBody:`{{provider}} trabaja por su cuenta con agentes nativos y flujos dinámicos.`,costTitle:`Coste variable.`,costBody:`El gasto depende de lo que {{provider}} decida hacer — puede ser mayor de lo esperado.`,continue:`Continuar`},c={fetchFailed:`No se pudieron obtener los rails: {{status}}`},l={chipNew:`PR nueva`,chipTitle:`Entregar en una PR existente`,clear:`Quitar PR objetivo`,newPr:`PR nueva (por defecto)`,loading:`Cargando PRs abiertas…`,none:`No hay PRs abiertas`,fork:`Fork — no se puede pushear`,manualPlaceholder:`Número de PR`,manualUse:`Usar`,confirmTitle:`¿Entregar en la PR existente?`,confirmBody:`Esta ejecución trabaja sobre la rama head de la PR y pushea en ella — no se crea una PR nueva.`,confirmBranch:`Rama head`,confirmLaunch:`Lanzar hacia PR #{{number}}`,errors:{invalid_target_pr:`Número de PR inválido`,target_pr_requires_pr_mode:`Entregar en una PR existente requiere el flujo aislado de PR`,target_pr_not_found:`PR no encontrada en este repositorio`,target_pr_not_open:`Esa PR ya no está abierta`,target_pr_fork:`Esa PR viene de un fork y no se puede pushear`,target_pr_invalid:`Las ramas de la PR no sirven como destino de entrega`,target_pr_unfetchable:`No se pudo hacer fetch de la rama head de la PR`}},u={toasts:e,railPr:t,railsBoard:n,launchAll:r,launchAllDialog:i,railControls:a,railRow:o,freestyleDialog:s,useRails:c,targetPr:l};export{u as default,s as freestyleDialog,r as launchAll,i as launchAllDialog,a as railControls,t as railPr,o as railRow,n as railsBoard,l as targetPr,e as toasts,c as useRails};
@@ -1,45 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{t as r}from"./react-dom-DiWzBDP9.js";import{n as i}from"./createLucideIcon-Bjbbp_KS.js";import{t as a}from"./x-CBMI9ejn.js";import{n as o,t as s}from"./dist-Cez5CRkX.js";import{t as c}from"./utils-BC4DHlz2.js";var l=e(t(),1);typeof window<`u`&&window.document&&window.document.createElement;function u(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var d=n();function f(e,t){let n=l.createContext(t),r=e=>{let{children:t,...r}=e,i=l.useMemo(()=>r,Object.values(r));return(0,d.jsx)(n.Provider,{value:i,children:t})};r.displayName=e+`Provider`;function i(r){let i=l.useContext(n);if(i)return i;if(t!==void 0)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}return[r,i]}function p(e,t=[]){let n=[];function r(t,r){let i=l.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=l.useMemo(()=>o,Object.values(o));return(0,d.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=l.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>l.createContext(e));return function(n){let r=n?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,m(i,...t)]}function m(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var h=globalThis?.document?l.useLayoutEffect:()=>{},g=l.useId||(()=>void 0),_=0;function v(e){let[t,n]=l.useState(g());return h(()=>{e||n(e=>e??String(_++))},[e]),e||(t?`radix-${t}`:``)}var y=l.useInsertionEffect||h;function b({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=x({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=l.useRef(e!==void 0);l.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,l.useCallback(t=>{if(s){let n=S(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function x({defaultProp:e,onChange:t}){let[n,r]=l.useState(e),i=l.useRef(n),a=l.useRef(t);return y(()=>{a.current=t},[t]),l.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function S(e){return typeof e==`function`}var C=e(r(),1);function w(e){let t=T(e),n=l.forwardRef((e,n)=>{let{children:r,...i}=e,a=l.Children.toArray(r),o=a.find(D);if(o){let e=o.props.children,r=a.map(t=>t===o?l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null:t);return(0,d.jsx)(t,{...i,ref:n,children:l.isValidElement(e)?l.cloneElement(e,void 0,r):null})}return(0,d.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function T(e){let t=l.forwardRef((e,t)=>{let{children:n,...r}=e;if(l.isValidElement(n)){let e=ee(n),i=O(r,n.props);return n.type!==l.Fragment&&(i.ref=t?s(t,e):e),l.cloneElement(n,i)}return l.Children.count(n)>1?l.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var E=Symbol(`radix.slottable`);function D(e){return l.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===E}function O(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function ee(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var k=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=w(`Primitive.${t}`),r=l.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,d.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function te(e,t){e&&C.flushSync(()=>e.dispatchEvent(t))}function A(e){let t=l.useRef(e);return l.useEffect(()=>{t.current=e}),l.useMemo(()=>(...e)=>t.current?.(...e),[])}function ne(e,t=globalThis?.document){let n=A(e);l.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var j=`DismissableLayer`,M=`dismissableLayer.update`,re=`dismissableLayer.pointerDownOutside`,ie=`dismissableLayer.focusOutside`,ae,oe=l.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),se=l.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:s,onDismiss:c,...f}=e,p=l.useContext(oe),[m,h]=l.useState(null),g=m?.ownerDocument??globalThis?.document,[,_]=l.useState({}),v=o(t,e=>h(e)),y=Array.from(p.layers),[b]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),x=y.indexOf(b),S=m?y.indexOf(m):-1,C=p.layersWithOutsidePointerEventsDisabled.size>0,w=S>=x,T=ue(e=>{let t=e.target,n=[...p.branches].some(e=>e.contains(t));!w||n||(i?.(e),s?.(e),e.defaultPrevented||c?.())},g),E=de(e=>{let t=e.target;[...p.branches].some(e=>e.contains(t))||(a?.(e),s?.(e),e.defaultPrevented||c?.())},g);return ne(e=>{S===p.layers.size-1&&(r?.(e),!e.defaultPrevented&&c&&(e.preventDefault(),c()))},g),l.useEffect(()=>{if(m)return n&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(ae=g.body.style.pointerEvents,g.body.style.pointerEvents=`none`),p.layersWithOutsidePointerEventsDisabled.add(m)),p.layers.add(m),fe(),()=>{n&&p.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=ae)}},[m,g,n,p]),l.useEffect(()=>()=>{m&&(p.layers.delete(m),p.layersWithOutsidePointerEventsDisabled.delete(m),fe())},[m,p]),l.useEffect(()=>{let e=()=>_({});return document.addEventListener(M,e),()=>document.removeEventListener(M,e)},[]),(0,d.jsx)(k.div,{...f,ref:v,style:{pointerEvents:C?w?`auto`:`none`:void 0,...e.style},onFocusCapture:u(e.onFocusCapture,E.onFocusCapture),onBlurCapture:u(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:u(e.onPointerDownCapture,T.onPointerDownCapture)})});se.displayName=j;var ce=`DismissableLayerBranch`,le=l.forwardRef((e,t)=>{let n=l.useContext(oe),r=l.useRef(null),i=o(t,r);return l.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,d.jsx)(k.div,{...e,ref:i})});le.displayName=ce;function ue(e,t=globalThis?.document){let n=A(e),r=l.useRef(!1),i=l.useRef(()=>{});return l.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){pe(re,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function de(e,t=globalThis?.document){let n=A(e),r=l.useRef(!1);return l.useEffect(()=>{let e=e=>{e.target&&!r.current&&pe(ie,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function fe(){let e=new CustomEvent(M);document.dispatchEvent(e)}function pe(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?te(i,a):i.dispatchEvent(a)}var me=`focusScope.autoFocusOnMount`,he=`focusScope.autoFocusOnUnmount`,ge={bubbles:!1,cancelable:!0},_e=`FocusScope`,ve=l.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...s}=e,[c,u]=l.useState(null),f=A(i),p=A(a),m=l.useRef(null),h=o(t,e=>u(e)),g=l.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;l.useEffect(()=>{if(r){let e=function(e){if(g.paused||!c)return;let t=e.target;c.contains(t)?m.current=t:N(m.current,{select:!0})},t=function(e){if(g.paused||!c)return;let t=e.relatedTarget;t!==null&&(c.contains(t)||N(m.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&N(c)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,c,g.paused]),l.useEffect(()=>{if(c){Te.add(g);let e=document.activeElement;if(!c.contains(e)){let t=new CustomEvent(me,ge);c.addEventListener(me,f),c.dispatchEvent(t),t.defaultPrevented||(ye(Oe(xe(c)),{select:!0}),document.activeElement===e&&N(c))}return()=>{c.removeEventListener(me,f),setTimeout(()=>{let t=new CustomEvent(he,ge);c.addEventListener(he,p),c.dispatchEvent(t),t.defaultPrevented||N(e??document.body,{select:!0}),c.removeEventListener(he,p),Te.remove(g)},0)}}},[c,f,p,g]);let _=l.useCallback(e=>{if(!n&&!r||g.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=be(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&N(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&N(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,g.paused]);return(0,d.jsx)(k.div,{tabIndex:-1,...s,ref:h,onKeyDown:_})});ve.displayName=_e;function ye(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(N(r,{select:t}),document.activeElement!==n)return}function be(e){let t=xe(e);return[Se(t,e),Se(t.reverse(),e)]}function xe(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 Se(e,t){for(let n of e)if(!Ce(n,{upTo:t}))return n}function Ce(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 we(e){return e instanceof HTMLInputElement&&`select`in e}function N(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&we(e)&&t&&e.select()}}var Te=Ee();function Ee(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=De(e,t),e.unshift(t)},remove(t){e=De(e,t),e[0]?.resume()}}}function De(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Oe(e){return e.filter(e=>e.tagName!==`A`)}var ke=`Portal`,Ae=l.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=l.useState(!1);h(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?C.createPortal((0,d.jsx)(k.div,{...r,ref:t}),o):null});Ae.displayName=ke;function je(e,t){return l.useReducer((e,n)=>t[e][n]??e,e)}var P=e=>{let{present:t,children:n}=e,r=Me(t),i=typeof n==`function`?n({present:r.isPresent}):l.Children.only(n),a=o(r.ref,Ne(i));return typeof n==`function`||r.isPresent?l.cloneElement(i,{ref:a}):null};P.displayName=`Presence`;function Me(e){let[t,n]=l.useState(),r=l.useRef(null),i=l.useRef(e),a=l.useRef(`none`),[o,s]=je(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return l.useEffect(()=>{let e=F(r.current);a.current=o===`mounted`?e:`none`},[o]),h(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=F(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),h(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=F(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=F(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:l.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function F(e){return e?.animationName||`none`}function Ne(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Pe=0;function Fe(){l.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??Ie()),document.body.insertAdjacentElement(`beforeend`,e[1]??Ie()),Pe++,()=>{Pe===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),Pe--}},[])}function Ie(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var I=function(){return I=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},I.apply(this,arguments)};function Le(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n}function Re(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))}var L=`right-scroll-bar-position`,R=`width-before-scroll-bar`,ze=`with-scroll-bars-hidden`,Be=`--removed-body-scroll-bar-size`;function Ve(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function He(e,t){var n=(0,l.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var Ue=typeof window<`u`?l.useLayoutEffect:l.useEffect,We=new WeakMap;function Ge(e,t){var n=He(t||null,function(t){return e.forEach(function(e){return Ve(e,t)})});return Ue(function(){var t=We.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||Ve(e,null)}),i.forEach(function(e){r.has(e)||Ve(e,a)})}We.set(n,e)},[e]),n}function Ke(e){return e}function qe(e,t){t===void 0&&(t=Ke);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function Je(e){e===void 0&&(e={});var t=qe(null);return t.options=I({async:!0,ssr:!1},e),t}var Ye=function(e){var t=e.sideCar,n=Le(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return l.createElement(r,I({},n))};Ye.isSideCarExport=!0;function Xe(e,t){return e.useMedium(t),Ye}var Ze=Je(),Qe=function(){},z=l.forwardRef(function(e,t){var n=l.useRef(null),r=l.useState({onScrollCapture:Qe,onWheelCapture:Qe,onTouchMoveCapture:Qe}),i=r[0],a=r[1],o=e.forwardProps,s=e.children,c=e.className,u=e.removeScrollBar,d=e.enabled,f=e.shards,p=e.sideCar,m=e.noRelative,h=e.noIsolation,g=e.inert,_=e.allowPinchZoom,v=e.as,y=v===void 0?`div`:v,b=e.gapMode,x=Le(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),S=p,C=Ge([n,t]),w=I(I({},x),i);return l.createElement(l.Fragment,null,d&&l.createElement(S,{sideCar:Ze,removeScrollBar:u,shards:f,noRelative:m,noIsolation:h,inert:g,setCallbacks:a,allowPinchZoom:!!_,lockRef:n,gapMode:b}),o?l.cloneElement(l.Children.only(s),I(I({},w),{ref:C})):l.createElement(y,I({},w,{className:c,ref:C}),s))});z.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},z.classNames={fullWidth:R,zeroRight:L};var $e,et=function(){if($e)return $e;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function tt(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=et();return t&&e.setAttribute(`nonce`,t),e}function nt(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function rt(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var it=function(){var e=0,t=null;return{add:function(n){e==0&&(t=tt())&&(nt(t,n),rt(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},at=function(){var e=it();return function(t,n){l.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},ot=function(){var e=at();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},st={left:0,top:0,right:0,gap:0},ct=function(e){return parseInt(e||``,10)||0},lt=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[ct(n),ct(r),ct(i)]},ut=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return st;var t=lt(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},dt=ot(),B=`data-scroll-locked`,ft=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),`
2
- .${ze} {
3
- overflow: hidden ${r};
4
- padding-right: ${s}px ${r};
5
- }
6
- body[${B}] {
7
- overflow: hidden ${r};
8
- overscroll-behavior: contain;
9
- ${[t&&`position: relative ${r};`,n===`margin`&&`
10
- padding-left: ${i}px;
11
- padding-top: ${a}px;
12
- padding-right: ${o}px;
13
- margin-left:0;
14
- margin-top:0;
15
- margin-right: ${s}px ${r};
16
- `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)}
17
- }
18
-
19
- .${L} {
20
- right: ${s}px ${r};
21
- }
22
-
23
- .${R} {
24
- margin-right: ${s}px ${r};
25
- }
26
-
27
- .${L} .${L} {
28
- right: 0 ${r};
29
- }
30
-
31
- .${R} .${R} {
32
- margin-right: 0 ${r};
33
- }
34
-
35
- body[${B}] {
36
- ${Be}: ${s}px;
37
- }
38
- `},pt=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},mt=function(){l.useEffect(function(){return document.body.setAttribute(B,(pt()+1).toString()),function(){var e=pt()-1;e<=0?document.body.removeAttribute(B):document.body.setAttribute(B,e.toString())}},[])},ht=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;mt();var a=l.useMemo(function(){return ut(i)},[i]);return l.createElement(dt,{styles:ft(a,!t,i,n?``:`!important`)})},gt=!1;if(typeof window<`u`)try{var V=Object.defineProperty({},"passive",{get:function(){return gt=!0,!0}});window.addEventListener(`test`,V,V),window.removeEventListener(`test`,V,V)}catch{gt=!1}var H=gt?{passive:!1}:!1,_t=function(e){return e.tagName===`TEXTAREA`},vt=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!_t(e)&&n[t]===`visible`)},yt=function(e){return vt(e,`overflowY`)},bt=function(e){return vt(e,`overflowX`)},xt=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),wt(e,r)){var i=Tt(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},St=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},Ct=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},wt=function(e,t){return e===`v`?yt(t):bt(t)},Tt=function(e,t){return e===`v`?St(t):Ct(t)},Et=function(e,t){return e===`h`&&t===`rtl`?-1:1},Dt=function(e,t,n,r,i){var a=Et(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=Tt(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&wt(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},U=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ot=function(e){return[e.deltaX,e.deltaY]},kt=function(e){return e&&`current`in e?e.current:e},At=function(e,t){return e[0]===t[0]&&e[1]===t[1]},jt=function(e){return`
39
- .block-interactivity-${e} {pointer-events: none;}
40
- .allow-interactivity-${e} {pointer-events: all;}
41
- `},Mt=0,W=[];function Nt(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),i=l.useState(Mt++)[0],a=l.useState(ot)[0],o=l.useRef(e);l.useEffect(function(){o.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Re([e.lockRef.current],(e.shards||[]).map(kt),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=l.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=U(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=xt(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=xt(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return Dt(h,t,e,h===`h`?s:c,!0)},[]),c=l.useCallback(function(e){var n=e;if(!(!W.length||W[W.length-1]!==a)){var r=`deltaY`in n?Ot(n):U(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&At(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(kt).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=l.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Pt(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=l.useCallback(function(e){n.current=U(e),r.current=void 0},[]),f=l.useCallback(function(t){u(t.type,Ot(t),t.target,s(t,e.lockRef.current))},[]),p=l.useCallback(function(t){u(t.type,U(t),t.target,s(t,e.lockRef.current))},[]);l.useEffect(function(){return W.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,c,H),document.addEventListener(`touchmove`,c,H),document.addEventListener(`touchstart`,d,H),function(){W=W.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,H),document.removeEventListener(`touchmove`,c,H),document.removeEventListener(`touchstart`,d,H)}},[]);var m=e.removeScrollBar,h=e.inert;return l.createElement(l.Fragment,null,h?l.createElement(a,{styles:jt(i)}):null,m?l.createElement(ht,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Pt(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Ft=Xe(Ze,Nt),It=l.forwardRef(function(e,t){return l.createElement(z,I({},e,{ref:t,sideCar:Ft}))});It.classNames=z.classNames;var Lt=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},G=new WeakMap,K=new WeakMap,q={},Rt=0,zt=function(e){return e&&(e.host||zt(e.parentNode))},Bt=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=zt(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})},Vt=function(e,t,n,r){var i=Bt(t,Array.isArray(e)?e:[e]);q[n]||(q[n]=new WeakMap);var a=q[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=(G.get(e)||0)+1,l=(a.get(e)||0)+1;G.set(e,c),a.set(e,l),o.push(e),c===1&&i&&K.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(),Rt++,function(){o.forEach(function(e){var t=G.get(e)-1,i=a.get(e)-1;G.set(e,t),a.set(e,i),t||(K.has(e)||e.removeAttribute(r),K.delete(e)),i||e.removeAttribute(n)}),Rt--,Rt||(G=new WeakMap,G=new WeakMap,K=new WeakMap,q={})}},Ht=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Lt(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Vt(r,i,n,`aria-hidden`)):function(){return null}};function Ut(e){let t=Wt(e),n=l.forwardRef((e,n)=>{let{children:r,...i}=e,a=l.Children.toArray(r),o=a.find(Kt);if(o){let e=o.props.children,r=a.map(t=>t===o?l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null:t);return(0,d.jsx)(t,{...i,ref:n,children:l.isValidElement(e)?l.cloneElement(e,void 0,r):null})}return(0,d.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function Wt(e){let t=l.forwardRef((e,t)=>{let{children:n,...r}=e;if(l.isValidElement(n)){let e=Jt(n),i=qt(r,n.props);return n.type!==l.Fragment&&(i.ref=t?s(t,e):e),l.cloneElement(n,i)}return l.Children.count(n)>1?l.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Gt=Symbol(`radix.slottable`);function Kt(e){return l.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Gt}function qt(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Jt(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var J=`Dialog`,[Yt,Xt]=p(J),[Zt,Y]=Yt(J),Qt=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=l.useRef(null),c=l.useRef(null),[u,f]=b({prop:r,defaultProp:i??!1,onChange:a,caller:J});return(0,d.jsx)(Zt,{scope:t,triggerRef:s,contentRef:c,contentId:v(),titleId:v(),descriptionId:v(),open:u,onOpenChange:f,onOpenToggle:l.useCallback(()=>f(e=>!e),[f]),modal:o,children:n})};Qt.displayName=J;var $t=`DialogTrigger`,en=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Y($t,n),a=o(t,i.triggerRef);return(0,d.jsx)(k.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":yn(i.open),...r,ref:a,onClick:u(e.onClick,i.onOpenToggle)})});en.displayName=$t;var tn=`DialogPortal`,[nn,rn]=Yt(tn,{forceMount:void 0}),an=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Y(tn,t);return(0,d.jsx)(nn,{scope:t,forceMount:n,children:l.Children.map(r,e=>(0,d.jsx)(P,{present:n||a.open,children:(0,d.jsx)(Ae,{asChild:!0,container:i,children:e})}))})};an.displayName=tn;var X=`DialogOverlay`,on=l.forwardRef((e,t)=>{let n=rn(X,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Y(X,e.__scopeDialog);return a.modal?(0,d.jsx)(P,{present:r||a.open,children:(0,d.jsx)(cn,{...i,ref:t})}):null});on.displayName=X;var sn=Ut(`DialogOverlay.RemoveScroll`),cn=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Y(X,n);return(0,d.jsx)(It,{as:sn,allowPinchZoom:!0,shards:[i.contentRef],children:(0,d.jsx)(k.div,{"data-state":yn(i.open),...r,ref:t,style:{pointerEvents:`auto`,...r.style}})})}),Z=`DialogContent`,ln=l.forwardRef((e,t)=>{let n=rn(Z,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Y(Z,e.__scopeDialog);return(0,d.jsx)(P,{present:r||a.open,children:a.modal?(0,d.jsx)(un,{...i,ref:t}):(0,d.jsx)(dn,{...i,ref:t})})});ln.displayName=Z;var un=l.forwardRef((e,t)=>{let n=Y(Z,e.__scopeDialog),r=l.useRef(null),i=o(t,n.contentRef,r);return l.useEffect(()=>{let e=r.current;if(e)return Ht(e)},[]),(0,d.jsx)(fn,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:u(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:u(e.onFocusOutside,e=>e.preventDefault())})}),dn=l.forwardRef((e,t)=>{let n=Y(Z,e.__scopeDialog),r=l.useRef(!1),i=l.useRef(!1);return(0,d.jsx)(fn,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),fn=l.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...s}=e,c=Y(Z,n),u=l.useRef(null),f=o(t,u);return Fe(),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(ve,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,d.jsx)(se,{role:`dialog`,id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":yn(c.open),...s,ref:f,onDismiss:()=>c.onOpenChange(!1)})}),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Cn,{titleId:c.titleId}),(0,d.jsx)(Tn,{contentRef:u,descriptionId:c.descriptionId})]})]})}),pn=`DialogTitle`,mn=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Y(pn,n);return(0,d.jsx)(k.h2,{id:i.titleId,...r,ref:t})});mn.displayName=pn;var hn=`DialogDescription`,gn=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Y(hn,n);return(0,d.jsx)(k.p,{id:i.descriptionId,...r,ref:t})});gn.displayName=hn;var _n=`DialogClose`,vn=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Y(_n,n);return(0,d.jsx)(k.button,{type:`button`,...r,ref:t,onClick:u(e.onClick,()=>i.onOpenChange(!1))})});vn.displayName=_n;function yn(e){return e?`open`:`closed`}var bn=`DialogTitleWarning`,[xn,Sn]=f(bn,{contentName:Z,titleName:pn,docsSlug:`dialog`}),Cn=({titleId:e})=>{let t=Sn(bn),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
42
-
43
- If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
44
-
45
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return l.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},wn=`DialogDescriptionWarning`,Tn=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Sn(wn).contentName}}.`;return l.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},En=Qt,Dn=an,On=on,kn=ln,An=mn,jn=gn,Mn=vn,Nn=[`nw`,`n`,`ne`,`e`,`se`,`s`,`sw`,`w`],Pn={nw:{left:!0,top:!0},n:{top:!0},ne:{right:!0,top:!0},e:{right:!0},se:{right:!0,bottom:!0},s:{bottom:!0},sw:{left:!0,bottom:!0},w:{left:!0}};function Fn(e){return e===`n`||e===`s`?`horizontal`:`vertical`}function In(e,t,n){return Math.min(Math.max(e,t),Math.max(t,n))}function Ln(e,t,n,r){return{w:In(e,r.minWidth,n.width-16),h:In(t,r.minHeight,n.height-16)}}function Q(e,t){let n=In(e.x,120-e.w,t.width-e.w),r=In(e.y,0,Math.max(0,t.height-48));return{...e,x:n,y:r}}function Rn(e,t,n,r){return Q({...e,x:e.x+t,y:e.y+n},r)}function zn(e,t,n,r,i,a){let o=Pn[t],s=e.x+e.w,c=e.y+e.h,l=e.w,u=e.h;o.right&&(l=e.w+n),o.left&&(l=e.w-n),o.bottom&&(u=e.h+r),o.top&&(u=e.h-r);let d=Ln(l,u,i,a),f=e.x,p=e.y;return o.left&&(f=s-d.w),o.top&&(p=c-d.h),Q({x:f,y:p,w:d.w,h:d.h},i)}function Bn(e,t,n,r,i){let a=Pn[t],o=a.left||a.right,s=a.top||a.bottom,c=o?n===`min`?i.minWidth:r.width-16:e.w,l=s?n===`min`?i.minHeight:r.height-16:e.h,u=e.x+e.w,d=e.y+e.h,f=Ln(c,l,r,i);return Q({x:a.left?u-f.w:e.x,y:a.top?d-f.h:e.y,w:f.w,h:f.h},r)}function Vn(e){return{x:e.left,y:e.top,w:e.width,h:e.height}}function Hn(e,t){return{w:e.width,h:e.height,x:Math.round((t.width-e.width)/2),y:Math.round((t.height-e.height)/2)}}function Un(e,t){let{x:n,y:r,w:i,h:a}=t,o=Math.max(0,i-24),s=Math.max(0,a-24);switch(e){case`nw`:return{left:n-14/2,top:r-14/2,width:14,height:14};case`ne`:return{left:n+i-14/2,top:r-14/2,width:14,height:14};case`se`:return{left:n+i-14/2,top:r+a-14/2,width:14,height:14};case`sw`:return{left:n-14/2,top:r+a-14/2,width:14,height:14};case`n`:return{left:n+12,top:r-8/2,width:o,height:8};case`s`:return{left:n+12,top:r+a-8/2,width:o,height:8};case`e`:return{left:n+i-8/2,top:r+12,width:8,height:s};case`w`:return{left:n-8/2,top:r+12,width:8,height:s}}}function Wn(e,t,n){let r=Pn[e],i=r.left||r.right,a=r.top||r.bottom;switch(t){case`ArrowRight`:return i?{dx:n,dy:0}:null;case`ArrowLeft`:return i?{dx:-n,dy:0}:null;case`ArrowDown`:return a?{dx:0,dy:n}:null;case`ArrowUp`:return a?{dx:0,dy:-n}:null;default:return null}}var Gn=64;function $(){return typeof window>`u`?{width:0,height:0}:{width:window.innerWidth,height:window.innerHeight}}var Kn=`button, input, textarea, select, a, [role="button"], [contenteditable="true"]`;function qn(e={}){let{enabled:t=!0,allowMove:n=!0,minWidth:r=320,minHeight:i=200,anchorFromCurrentRect:a=!1,persistKey:o}=e,s=(0,l.useRef)(null),[c,u]=(0,l.useState)(null),d=(0,l.useCallback)(e=>{s.current=e,u(e)},[]),[f,p]=(0,l.useState)(()=>{if(!o||typeof window>`u`)return null;try{let e=window.localStorage.getItem(o);if(!e)return null;let t=JSON.parse(e);if([t?.x,t?.y,t?.w,t?.h].every(e=>typeof e==`number`&&Number.isFinite(e))&&t.w>0&&t.h>0)return Q(t,$())}catch{}return null}),[m,h]=(0,l.useState)(null),[g,_]=(0,l.useState)(()=>typeof window>`u`||window.innerWidth>=900),v=(0,l.useRef)(null),y=(0,l.useRef)(null),b=(0,l.useRef)(!1),x=(0,l.useRef)(null),S=(0,l.useRef)(!1);y.current=f;let C={minWidth:r,minHeight:i},w=t&&g;(0,l.useEffect)(()=>{function e(){let e=window.innerWidth>=900;_(e),e||p(null)}return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,l.useEffect)(()=>{t||p(null)},[t]),(0,l.useEffect)(()=>{if(!(!o||typeof window>`u`||!f))try{window.localStorage.setItem(o,JSON.stringify(f))}catch{}},[f,o]),(0,l.useEffect)(()=>{if(!w||f!==null){h(null);return}let e=s.current;if(!e)return;let t=()=>h(Vn(e.getBoundingClientRect()));t();let n;return typeof ResizeObserver<`u`&&(n=new ResizeObserver(t),n.observe(e)),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{n?.disconnect(),window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[w,f,c]);let T=(0,l.useCallback)(e=>{x.current=e,!b.current&&(b.current=!0,requestAnimationFrame(()=>{b.current=!1,x.current&&p(x.current)}))},[]),E=(0,l.useCallback)(e=>{let t=v.current;if(!t)return;let n=$(),r=e.clientX-t.startX,i=e.clientY-t.startY,a=t.mode===`move`?Rn(t.startGeom,r,i,n):zn(t.startGeom,t.position,r,i,n,C);T(a)},[T,C.minWidth,C.minHeight]),D=(0,l.useCallback)(()=>{let e=v.current;if(e){try{e.element.releasePointerCapture(e.pointerId)}catch{}v.current=null,S.current=!0,setTimeout(()=>{S.current=!1},0),x.current&&p(x.current),window.removeEventListener(`pointermove`,E),window.removeEventListener(`pointerup`,D),window.removeEventListener(`pointercancel`,D)}},[E]),O=(0,l.useCallback)((e,t)=>{if(!w||e.button!==0)return;let n=s.current;if(!n)return;let r=y.current;if(!r){let e=n.getBoundingClientRect();if(e.width<=0||e.height<=0)return;r=Q(a?Vn(e):Hn(e,$()),$())}y.current=r,x.current=r;let i=t(r);v.current=i;try{i.element.setPointerCapture(i.pointerId)}catch{}p(r),window.addEventListener(`pointermove`,E),window.addEventListener(`pointerup`,D),window.addEventListener(`pointercancel`,D)},[w,E,D,a]),ee=(0,l.useCallback)(e=>{if(!n||e.target.closest(Kn))return;let t=s.current;t&&e.clientY-t.getBoundingClientRect().top>Gn||O(e,t=>({mode:`move`,startX:e.clientX,startY:e.clientY,startGeom:t,pointerId:e.pointerId,element:e.currentTarget}))},[n,O]),k=(0,l.useCallback)(e=>t=>{t.stopPropagation(),O(t,n=>({mode:`resize`,position:e,startX:t.clientX,startY:t.clientY,startGeom:n,pointerId:t.pointerId,element:t.currentTarget}))},[O]),te=(0,l.useCallback)(()=>p(null),[]),A=(0,l.useCallback)(e=>(...t)=>{S.current||e(...t)},[]),ne=(0,l.useCallback)(e=>t=>{if(!w)return;if(t.key===`0`){t.preventDefault(),te();return}let n=s.current;if(!n)return;let r=$(),i=y.current??Vn(n.getBoundingClientRect());if(t.key===`Home`||t.key===`End`){t.preventDefault(),p(Bn(i,e,t.key===`Home`?`min`:`max`,r,C));return}let a=t.shiftKey?64:16,o=Wn(e,t.key,a);o&&(t.preventDefault(),p(zn(i,e,o.dx,o.dy,r,C)))},[w,te,C.minWidth,C.minHeight]);(0,l.useEffect)(()=>{if(!f||!g)return;function e(){let e=y.current;e&&p(Q(e,$()))}return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[f,g]),(0,l.useEffect)(()=>()=>{window.removeEventListener(`pointermove`,E),window.removeEventListener(`pointerup`,D),window.removeEventListener(`pointercancel`,D);let e=v.current;if(e){try{e.element.releasePointerCapture(e.pointerId)}catch{}v.current=null}},[E,D]);let j=w&&f!==null,M=j&&f?{position:`fixed`,left:f.x,top:f.y,width:f.w,height:f.h,maxWidth:`none`,maxHeight:`none`,margin:0,transform:`none`,animation:`none`}:{},re=j?f:m,ie=w&&re?Nn.map(e=>({position:e,role:`separator`,"aria-orientation":Fn(e),tabIndex:0,style:{position:`fixed`,...Un(e,re)},onPointerDown:k(e),onKeyDown:ne(e)})):[];return{panelRef:d,panelStyle:M,headerHandleProps:{onPointerDown:ee},resizeHandles:ie,isFloating:j,enabled:w,reset:te,guardBackdrop:A}}var Jn={nw:`cursor-nwse-resize`,n:`cursor-ns-resize`,ne:`cursor-nesw-resize`,e:`cursor-ew-resize`,se:`cursor-nwse-resize`,s:`cursor-ns-resize`,sw:`cursor-nesw-resize`,w:`cursor-ew-resize`};function Yn({handles:e}){let{t}=i(`common`);return e.length===0?null:(0,d.jsx)(d.Fragment,{children:e.map(e=>(0,d.jsx)(`div`,{"data-testid":`modal-resize-${e.position}`,role:e.role,"aria-orientation":e[`aria-orientation`],"aria-label":t(`modal.resize.${e.position}`),tabIndex:e.tabIndex,style:e.style,onPointerDown:e.onPointerDown,onKeyDown:e.onKeyDown,className:c(`z-[51] rounded-full bg-transparent transition-colors duration-150`,`hover:bg-accent-primary/20 focus:outline-none focus-visible:bg-accent-primary/30`,Jn[e.position])},e.position))})}function Xn(...e){return l.useCallback(t=>{for(let n of e)n&&(typeof n==`function`?n(t):n.current=t)},e)}var Zn=En,Qn=Dn,$n=l.forwardRef(({className:e,...t},n)=>(0,d.jsx)(On,{ref:n,className:c(`fixed inset-0 z-50 bg-black/60 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));$n.displayName=On.displayName;var er=()=>{let{t:e}=i(`common`);return(0,d.jsxs)(Mn,{className:`absolute right-4 top-4 z-20 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,d.jsx)(a,{className:`h-4 w-4`}),(0,d.jsx)(`span`,{className:`sr-only`,children:e(`actions.close`)})]})},tr=l.forwardRef(({className:e,children:t,showCloseButton:n=!0,movableResizable:r=!1,style:i,...a},o)=>{let{panelRef:s,panelStyle:l,resizeHandles:u}=qn({enabled:r,allowMove:!1}),f=Xn(o,s);return r?(0,d.jsxs)(Qn,{children:[(0,d.jsx)($n,{}),(0,d.jsxs)(kn,{ref:f,style:{...i,...l},className:c(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...a,children:[t,n&&(0,d.jsx)(er,{})]}),(0,d.jsx)(Yn,{handles:u})]}):(0,d.jsxs)(Qn,{children:[(0,d.jsx)($n,{}),(0,d.jsxs)(kn,{ref:o,style:i,className:c(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...a,children:[t,n&&(0,d.jsx)(er,{})]})]})});tr.displayName=kn.displayName;var nr=({className:e,...t})=>(0,d.jsx)(`div`,{className:c(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});nr.displayName=`DialogHeader`;var rr=({className:e,...t})=>(0,d.jsx)(`div`,{className:c(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});rr.displayName=`DialogFooter`;var ir=l.forwardRef(({className:e,...t},n)=>(0,d.jsx)(An,{ref:n,className:c(`text-lg font-semibold leading-none tracking-tight`,e),...t}));ir.displayName=An.displayName;var ar=l.forwardRef(({className:e,...t},n)=>(0,d.jsx)(jn,{ref:n,className:c(`text-xs text-muted-foreground`,e),...t}));ar.displayName=jn.displayName;export{b as C,u as D,p as E,k as S,h as T,P as _,nr as a,se as b,qn as c,Dn as d,En as f,Fe as g,It as h,rr as i,kn as l,Ht as m,tr as n,ir as o,An as p,ar as r,Yn as s,Zn as t,On as u,Ae as v,v as w,A as x,ve as y};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t}from"./jsx-runtime-zu2_FqZY.js";var n=e(t(),1);function r(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function i(...e){return t=>{let n=!1,i=e.map(e=>{let i=r(e,t);return!n&&typeof i==`function`&&(n=!0),i});if(n)return()=>{for(let t=0;t<i.length;t++){let n=i[t];typeof n==`function`?n():r(e[t],null)}}}}function a(...e){return n.useCallback(i(...e),e)}export{a as n,i as t};
@@ -1 +0,0 @@
1
- import{d as e,u as t}from"./index-C_sdsSZt.js";var n=class{constructor(){this.eventListeners=Object.create(null)}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}on(e,t){return e in this.eventListeners?this.eventListeners[e].push(t):this.eventListeners[e]=[t],this}once(e,t){let n=r=>{this.removeListener(e,n),t(r)};return this.addListener(e,n)}off(e,t){return e in this.eventListeners&&(this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)),this}removeAllListeners(e){return e?delete this.eventListeners[e]:this.eventListeners=Object.create(null),this}emit(e,t){if(e in this.eventListeners){let n=this.eventListeners[e];for(let e of n)e(t);return!0}return!1}listenerCount(e){return e in this.eventListeners?this.eventListeners[e].length:0}prependListener(e,t){return e in this.eventListeners?this.eventListeners[e].unshift(t):this.eventListeners[e]=[t],this}prependOnceListener(e,t){let n=r=>{this.removeListener(e,n),t(r)};return this.prependListener(e,n)}},r=class{constructor(e){this.pid=e}async write(t){await e(`plugin:shell|stdin_write`,{pid:this.pid,buffer:t})}async kill(){await e(`plugin:shell|kill`,{cmd:`killChild`,pid:this.pid})}},i=class i extends n{constructor(e,t=[],r){super(),this.stdout=new n,this.stderr=new n,this.program=e,this.args=typeof t==`string`?[t]:t,this.options=r??{}}static create(e,t=[],n){return new i(e,t,n)}static sidecar(e,t=[],n){let r=new i(e,t,n);return r.options.sidecar=!0,r}async spawn(){let n=this.program,i=this.args,a=this.options;typeof i==`object`&&Object.freeze(i);let o=new t;return o.onmessage=e=>{switch(e.event){case`Error`:this.emit(`error`,e.payload);break;case`Terminated`:this.emit(`close`,e.payload);break;case`Stdout`:this.stdout.emit(`data`,e.payload);break;case`Stderr`:this.stderr.emit(`data`,e.payload);break}},await e(`plugin:shell|spawn`,{program:n,args:i,options:a,onEvent:o}).then(e=>new r(e))}async execute(){let t=this.program,n=this.args,r=this.options;return typeof n==`object`&&Object.freeze(n),await e(`plugin:shell|execute`,{program:t,args:n,options:r})}};async function a(t,n){await e(`plugin:shell|open`,{path:t,with:n})}export{r as Child,i as Command,n as EventEmitter,a as open};
@@ -1 +0,0 @@
1
- import{d as e}from"./index-C_sdsSZt.js";function t(e){if(e!==void 0){if(typeof e==`string`)return e;if(`ok`in e&&`cancel`in e)return{OkCancelCustom:[e.ok,e.cancel]};if(`yes`in e&&`no`in e&&`cancel`in e)return{YesNoCancelCustom:[e.yes,e.no,e.cancel]};if(`ok`in e)return{OkCustom:e.ok}}}async function n(t={}){return typeof t==`object`&&Object.freeze(t),await e(`plugin:dialog|open`,{options:t})}async function r(t={}){return typeof t==`object`&&Object.freeze(t),await e(`plugin:dialog|save`,{options:t})}async function i(n,r){return await e(`plugin:dialog|message`,{message:n,title:r?.title,kind:r?.kind,buttons:t(r?.buttons)})}async function a(e,t){let n=typeof t==`string`?{title:t}:t;return n&&!n.buttons&&n.okLabel&&(n.buttons={ok:n.okLabel}),i(e,n)}async function o(e,t){let n=typeof t==`string`?{title:t}:t,r=n?.okLabel||n?.cancelLabel,a=n?.okLabel??`Yes`;return await i(e,{title:n?.title,kind:n?.kind,buttons:r?{ok:a,cancel:n.cancelLabel??`No`}:`YesNo`})===a}async function s(e,t){let n=typeof t==`string`?{title:t}:t,r=n?.okLabel||n?.cancelLabel,a=n?.okLabel??`Ok`;return await i(e,{title:n?.title,kind:n?.kind,buttons:r?{ok:a,cancel:n.cancelLabel??`Cancel`}:`OkCancel`})===a}export{o as ask,s as confirm,a as message,n as open,r as save};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-Bjbbp_KS.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),n=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]);export{t as n,n as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-Bjbbp_KS.js";var t=e(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]);export{t};