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.
- package/client/dist/assets/ActivityFeedPage-LCBJ5WiD.js +1 -0
- package/client/dist/assets/AgentBrowserCapture-B-xQpyZr.js +1 -0
- package/client/dist/assets/AgentModeAnalyticsPane-BI1Vcf3T.js +2 -0
- package/client/dist/assets/AgentModeCodePane-BTRwCl9h.js +2 -0
- package/client/dist/assets/AgentModeJobsPane-VzeBJLqP.js +1 -0
- package/client/dist/assets/AgentsPage-CJj1K24O.js +87 -0
- package/client/dist/assets/AnalyticsPage-CQpV5_fX.js +1 -0
- package/client/dist/assets/CodePage-9-tFh0jB.js +2 -0
- package/client/dist/assets/DesktopAnalyticsPage-BcZ0_O_C.js +1 -0
- package/client/dist/assets/DocsDialog-BPAzDICW.js +11 -0
- package/client/dist/assets/DocsPage-Dqo4Hn6G.js +11 -0
- package/client/dist/assets/IntegrationsPage-Bhy58lnQ.js +1 -0
- package/client/dist/assets/InteractiveJobComposer-D36fZWai.js +19 -0
- package/client/dist/assets/JobDetailModal-BxsktbkQ.js +1 -0
- package/client/dist/assets/JobDetailPage-WWyCy6Sp.js +1 -0
- package/client/dist/assets/JobsPage-CEbM7uxU.js +1 -0
- package/client/dist/assets/{LoopBuilderPage-WeiofeL6.js → LoopBuilderPage-CYsSN8io.js} +2 -2
- package/client/dist/assets/LoopPreviewModal-BJhgX5wY.js +1 -0
- package/client/dist/assets/LoopsPage-DB4OqMot.js +1 -0
- package/client/dist/assets/MinimizedChatsContext-CcjBHMHd.js +1 -0
- package/client/dist/assets/PluginsPage-CR8K4nM_.js +2 -0
- package/client/dist/assets/{ProjectSettingsDialog-BkCXBQWk.js → ProjectSettingsDialog-C45-qhF4.js} +1 -1
- package/client/dist/assets/ReviewPacketPage-Cz_QQeC3.js +1 -0
- package/client/dist/assets/TemplatePreviewModal-wFBd2vQP.js +1 -0
- package/client/dist/assets/TicketDetailModal-BvZoyDAL.js +14 -0
- package/client/dist/assets/{Trans-CTqw6rr9.js → Trans-DXZ-BLXb.js} +1 -1
- package/client/dist/assets/agent-BQgKv_2F.js +1 -0
- package/client/dist/assets/agent-C1NRDJqL.js +1 -0
- package/client/dist/assets/agent-CLNleiy6.js +1 -0
- package/client/dist/assets/agent-CmceArkQ.js +1 -0
- package/client/dist/assets/agent-D3UxQ3SR.js +1 -0
- package/client/dist/assets/agent-DB1JeE64.js +1 -0
- package/client/dist/assets/agent-DXkHcQ-D.js +1 -0
- package/client/dist/assets/agent-DjJJJ2M8.js +1 -0
- package/client/dist/assets/ban-E4EaZe3a.js +1 -0
- package/client/dist/assets/bot-DzuuuC5R.js +1 -0
- package/client/dist/assets/{browser-DxP-alBK.js → browser-BgqHDMXP.js} +1 -1
- package/client/dist/assets/{browser-CyR1Kp3m.js → browser-CsKJtrpv.js} +1 -1
- package/client/dist/assets/browser-Cu58EpZU.js +1 -0
- package/client/dist/assets/{browser-rRCwi7Y7.js → browser-CvXOJm-j.js} +1 -1
- package/client/dist/assets/{browser-CvgDySd9.js → browser-DOrFh1c7.js} +1 -1
- package/client/dist/assets/{browser-DwZljcRh.js → browser-DQv_Jo7x.js} +1 -1
- package/client/dist/assets/{browser-C25DkQiO.js → browser-LPgxvJu2.js} +1 -1
- package/client/dist/assets/{browser-CiJ7-L32.js → browser-eL-3MIEI.js} +1 -1
- package/client/dist/assets/button-CJqFnUOL.js +1 -0
- package/client/dist/assets/{chunk-KS7C4IRE-Cx5sqopX.js → chunk-KS7C4IRE-DEKu087k.js} +1 -1
- package/client/dist/assets/{commands-DyUZQ1FI.js → commands-6tYQih5m.js} +1 -1
- package/client/dist/assets/{commands-B9RZO4qS.js → commands-BK2QinXN.js} +1 -1
- package/client/dist/assets/{commands-Bbxu8kLU.js → commands-C2Nca76h.js} +1 -1
- package/client/dist/assets/{commands-CDU3qv68.js → commands-CKdLihNX.js} +1 -1
- package/client/dist/assets/{commands-DTQBF_q5.js → commands-CYIBTAlc.js} +1 -1
- package/client/dist/assets/{commands-hOtKuOXc.js → commands-CjUtYJIM.js} +1 -1
- package/client/dist/assets/{commands-BEwbAjtD.js → commands-Cq_u_8y9.js} +1 -1
- package/client/dist/assets/{commands-CzezgtQj.js → commands-D_ZHYQug.js} +1 -1
- package/client/dist/assets/core-B3mKBIh5.js +1 -0
- package/client/dist/assets/dashboard-B9GhC5ku.js +1 -0
- package/client/dist/assets/dashboard-C8WOEiPu.js +1 -0
- package/client/dist/assets/dashboard-CBnv6zOI.js +1 -0
- package/client/dist/assets/dashboard-CaP0fU87.js +1 -0
- package/client/dist/assets/dashboard-D4ZZ4x84.js +1 -0
- package/client/dist/assets/dashboard-DmuTQBX8.js +1 -0
- package/client/dist/assets/dashboard-DynLYj3d.js +1 -0
- package/client/dist/assets/dashboard-zj4gGFJ1.js +1 -0
- package/client/dist/assets/dialog-CdWCb02j.js +45 -0
- package/client/dist/assets/dist-js-CWeUdf5Z.js +1 -0
- package/client/dist/assets/dist-js-Rlh4FLH5.js +1 -0
- package/client/dist/assets/event-Bt7f3wXe.js +1 -0
- package/client/dist/assets/file-text-BcLCfcWZ.js +1 -0
- package/client/dist/assets/{formatDistanceToNow-BOuXgebD.js → formatDistanceToNow-C0ImhVKp.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-EjGOpn4b.js → getTimezoneOffsetInMilliseconds-owhDdTXs.js} +1 -1
- package/client/dist/assets/git-refresh-wTW0rO0Z.js +1 -0
- package/client/dist/assets/i18n-DwgvwTnx.js +2 -0
- package/client/dist/assets/index-DhjjFyU5.js +66 -0
- package/client/dist/assets/index-xBFsOEiJ.css +2 -0
- package/client/dist/assets/jira-api-CcZMcEN5.js +1 -0
- package/client/dist/assets/loops-B7YpGizO.js +1 -0
- package/client/dist/assets/{loops-CMMQOw2P.js → loops-BomD2J-h.js} +1 -1
- package/client/dist/assets/{loops-B2_97D26.js → loops-BrQHSQw3.js} +1 -1
- package/client/dist/assets/{loops-BwxCndZk.js → loops-BvBwvTPA.js} +1 -1
- package/client/dist/assets/{loops-BISOkuCu.js → loops-CODk6Slz.js} +1 -1
- package/client/dist/assets/{loops-CD19kEzq.js → loops-DC6k-Ym-.js} +1 -1
- package/client/dist/assets/{loops-aEb4RxN2.js → loops-DSEg8-uY.js} +1 -1
- package/client/dist/assets/{loops-Bo6w_peZ.js → loops-DhCoXD_v.js} +1 -1
- package/client/dist/assets/narration-4Z2VUhZw.js +1 -0
- package/client/dist/assets/narration-BGuiEDj3.js +1 -0
- package/client/dist/assets/narration-BuSoqRmv.js +1 -0
- package/client/dist/assets/narration-CB9t29fy.js +1 -0
- package/client/dist/assets/narration-CU3x8FHD.js +1 -0
- package/client/dist/assets/narration-CWeXhfP5.js +1 -0
- package/client/dist/assets/narration-DRaDnhT5.js +1 -0
- package/client/dist/assets/narration-DtEbQgCw.js +1 -0
- package/client/dist/assets/packet-B1IxaL5f.js +1 -0
- package/client/dist/assets/packet-Bh5kkbiB.js +1 -0
- package/client/dist/assets/packet-By8fqYxW.js +1 -0
- package/client/dist/assets/packet-CZdvA44E.js +1 -0
- package/client/dist/assets/packet-CrjHRQCP.js +1 -0
- package/client/dist/assets/packet-Dwi2pTtx.js +1 -0
- package/client/dist/assets/packet-_-ZIa0IR.js +1 -0
- package/client/dist/assets/packet-n0W6E1Hn.js +1 -0
- package/client/dist/assets/save-B6wGWwBR.js +1 -0
- package/client/dist/assets/settings-Bd0x4TBa.js +1 -0
- package/client/dist/assets/settings-C1-7cXzC.js +1 -0
- package/client/dist/assets/settings-CAFaT38b.js +1 -0
- package/client/dist/assets/settings-Ct3v1nW2.js +1 -0
- package/client/dist/assets/settings-DHh7_IF5.js +1 -0
- package/client/dist/assets/settings-DQXAmdcv.js +1 -0
- package/client/dist/assets/settings-guzlhpup.js +1 -0
- package/client/dist/assets/settings-sZfTPMEH.js +1 -0
- package/client/dist/assets/{spending-BpYPsevQ.js → spending-BQX3P7Cq.js} +1 -1
- package/client/dist/assets/useDesktop-BzX769yH.js +1 -0
- package/client/dist/index.html +29 -31
- package/docs/internals/embedded-browser-native-webview-evaluation.md +161 -0
- package/docs/internals/review-packet.md +212 -0
- package/package.json +1 -1
- package/server/dist/accept-ladder.js +61 -0
- package/server/dist/agent-chat-manager.js +22 -1
- package/server/dist/agent-defaults.js +359 -0
- package/server/dist/agent-operator-prompt.js +13 -5
- package/server/dist/browser-playwright.js +39 -2
- package/server/dist/db.js +38 -0
- package/server/dist/delivery-evidence.js +242 -0
- package/server/dist/desktop-router.js +23 -0
- package/server/dist/feature-flags.js +23 -0
- package/server/dist/loop-command-catalog.js +33 -0
- package/server/dist/loop-executors.js +12 -2
- package/server/dist/loop-factory.js +16 -1
- package/server/dist/loops-router.js +2 -0
- package/server/dist/mcp/tools/rails.js +16 -0
- package/server/dist/project-registry.js +33 -1
- package/server/dist/project-router-loop-runs.js +27 -2
- package/server/dist/providers/claude-adapter.js +60 -3
- package/server/dist/queue-manager.js +47 -4
- package/server/dist/rail-isolated-launch.js +119 -5
- package/server/dist/rail-pr-store.js +40 -3
- package/server/dist/rail-worktree-release.js +17 -1
- package/server/dist/rails-router.js +124 -3
- package/server/dist/review-packet.js +327 -0
- package/server/dist/revision-seed.js +73 -0
- package/server/dist/run-duration-stats.js +71 -0
- package/server/dist/stuck-run-detector.js +153 -0
- package/server/dist/telemetry-receiver.js +22 -0
- package/server/dist/worktree-node-modules.js +138 -16
- package/client/dist/assets/ActivityFeedPage-DIDxNsDj.js +0 -1
- package/client/dist/assets/AgentBrowserCapture-7pJ2G5VY.js +0 -1
- package/client/dist/assets/AgentModeAnalyticsPane-BSSyTnTM.js +0 -2
- package/client/dist/assets/AgentModeCodePane-DzW6gvDw.js +0 -2
- package/client/dist/assets/AgentModeJobsPane-9wJff15f.js +0 -1
- package/client/dist/assets/AgentsPage-CIA67psb.js +0 -87
- package/client/dist/assets/AnalyticsPage-C0LwYELz.js +0 -1
- package/client/dist/assets/CodePage-RtKvHmAO.js +0 -2
- package/client/dist/assets/DesktopAnalyticsPage-BU8Y_Ts1.js +0 -1
- package/client/dist/assets/DocsDialog-DIpoaGlQ.js +0 -11
- package/client/dist/assets/DocsPage-ME47KZpK.js +0 -11
- package/client/dist/assets/IntegrationsPage-Bs00_tl4.js +0 -1
- package/client/dist/assets/InteractiveJobComposer-BGjIe9R6.js +0 -19
- package/client/dist/assets/JobDetailModal-1UZkqH4I.js +0 -1
- package/client/dist/assets/JobDetailPage-CN65sAf1.js +0 -1
- package/client/dist/assets/JobsPage-f-4dqys7.js +0 -1
- package/client/dist/assets/LoopPreviewModal-DDTnTyH0.js +0 -1
- package/client/dist/assets/LoopsPage-BVNchIex.js +0 -1
- package/client/dist/assets/MinimizedChatsContext-CHsu3NCX.js +0 -1
- package/client/dist/assets/PluginsPage-CdFzGEfQ.js +0 -2
- package/client/dist/assets/TemplatePreviewModal-RDi0khFG.js +0 -1
- package/client/dist/assets/TicketDetailModal-MhJzrqbi.js +0 -14
- package/client/dist/assets/agent-Bd-q3Wqp.js +0 -1
- package/client/dist/assets/agent-BlvdW4Hv.js +0 -1
- package/client/dist/assets/agent-C-KQhxeM.js +0 -1
- package/client/dist/assets/agent-Ca15w5eu.js +0 -1
- package/client/dist/assets/agent-D6fKaoMd.js +0 -1
- package/client/dist/assets/agent-HFMYMTbB.js +0 -1
- package/client/dist/assets/agent-QIEbkBjg.js +0 -1
- package/client/dist/assets/agent-mTCsAbCl.js +0 -1
- package/client/dist/assets/api-B2M7CtDw.js +0 -1
- package/client/dist/assets/arrow-left-CpIR4j7G.js +0 -1
- package/client/dist/assets/arrow-up-right-9DoMn7fD.js +0 -1
- package/client/dist/assets/browser-CXUcnTMI.js +0 -1
- package/client/dist/assets/button-BUIIBQPT.js +0 -1
- package/client/dist/assets/chevron-right-CViMxucY.js +0 -1
- package/client/dist/assets/dashboard-BHRqsGCV.js +0 -1
- package/client/dist/assets/dashboard-Bfr90vOl.js +0 -1
- package/client/dist/assets/dashboard-CTsM8x3m.js +0 -1
- package/client/dist/assets/dashboard-CqC6wX0h.js +0 -1
- package/client/dist/assets/dashboard-CuZtAszc.js +0 -1
- package/client/dist/assets/dashboard-DAcqIc-n.js +0 -1
- package/client/dist/assets/dashboard-DekiV-86.js +0 -1
- package/client/dist/assets/dashboard-DoDczc5S.js +0 -1
- package/client/dist/assets/dialog-CzIekCw0.js +0 -45
- package/client/dist/assets/dist-Cez5CRkX.js +0 -1
- package/client/dist/assets/dist-js-BmsFWRly.js +0 -1
- package/client/dist/assets/dist-js-J5W_N5ng.js +0 -1
- package/client/dist/assets/external-link-BcU5EWZp.js +0 -1
- package/client/dist/assets/file-text-CFT-xXKN.js +0 -1
- package/client/dist/assets/i18n-nJQvD5zJ.js +0 -2
- package/client/dist/assets/index-C_sdsSZt.js +0 -63
- package/client/dist/assets/index-DCN5QbDm.css +0 -2
- package/client/dist/assets/jira-api-Bhixwn-d.js +0 -1
- package/client/dist/assets/loops-CnxqL8IL.js +0 -1
- package/client/dist/assets/save-28sIlCdr.js +0 -1
- package/client/dist/assets/settings-BveOJoaI.js +0 -1
- package/client/dist/assets/settings-Cj1C6F5k.js +0 -1
- package/client/dist/assets/settings-CuVwOpe0.js +0 -1
- package/client/dist/assets/settings-D5X4DfRc.js +0 -1
- package/client/dist/assets/settings-DXwxe-BW.js +0 -1
- package/client/dist/assets/settings-Di81Ba_V.js +0 -1
- package/client/dist/assets/settings-jbLjCYC_.js +0 -1
- package/client/dist/assets/settings-wIZNPFnn.js +0 -1
- package/client/dist/assets/useBrowserCaptureSession-BBXBN0Na.js +0 -1
- package/client/dist/assets/useDesktop-B6Du2N83.js +0 -1
- package/client/dist/assets/useSharedWebSocket-DK96ctb7.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={dialogLabel:`Captura de navegador`,nav:{forward:`Adelante`,reload:`Recargar`},address:{placeholder:`Escribe una URL y pulsa Ir…`,label:`Barra de direcciones`,go:`Ir`},viewport:{groupLabel:`Tamaño del viewport`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport: {{preset}}`,fit:`ajustar`,desktop:`escritorio`,tablet:`tableta`,mobile:`móvil`},network:{ariaLabel:`Capturar peticiones de red`,titleOn:`Capturando las peticiones de red de la página (clic para desactivar)`,titleOff:`Captura de red desactivada (clic para activar)`,button:`Red`},allSizes:{ariaLabel:`Capturar en todos los tamaños de pantalla`,titleOn:`Capturará este elemento en escritorio, tableta y móvil (clic para desactivar)`,titleOff:`Capturar en todos los tamaños: escritorio, tableta y móvil`,button:`Todos los tamaños`},select:{active:`Haz clic en un elemento o arrastra…`,start:`Seleccionar para crear spec`,hint:`Haz clic en un elemento resaltado para capturarlo, o arrastra un rectángulo a medida. Usa el breadcrumb (o ↑/↓) para afinar. Pulsa Esc para cancelar.`},closeBrowser:`Cerrar navegador`,status:{connecting:`Conectando navegador…`,unavailable:`Navegador no disponible`,opening:`Abriendo navegador…`,capturing:`Capturando…`},error:{unavailable:`El navegador no está disponible.`,devHint:`En desarrollo, ejecuta <cmd>npx playwright install chromium</cmd> una vez. En la app de escritorio, Chromium viene incluido.`},breadcrumb:{hint:`↑ padre · ↓ hijo`},toast:{captured:`Selección de página capturada`,captureFailed:`Error en la captura`}},t={tools:{arrow:`Flecha (A)`,box:`Recuadro (R)`,text:`Texto (T)`,blur:`Difuminar / censurar (B)`,step:`Número de paso (N)`},notePrompt:`Texto de la nota:`,colorLabel:`Color {{color}}`,undo:`Deshacer`,undoTitle:`Deshacer (⌘Z)`,redo:`Rehacer`,redoTitle:`Rehacer (⌘⇧Z)`,capturedAlt:`Selección capturada`,discardConfirm:`¿Descartar las anotaciones?`,reselect:`Volver a seleccionar`,createSpec:`Crear spec`,skipContinue:`Omitir y continuar`},n={header:`Página capturada · {{title}}`,badge:{elements_one:`{{count}} elemento`,elements_other:`{{count}} elementos`,tokens:`tokens`,requests:`{{count}} pet.`,truncated:`truncado`},removeLabel:`Quitar el contexto de la página capturada`,noMarkup:`(sin marcado capturado)`,appliedCss:`CSS aplicado`,appliedCssTruncated:`CSS aplicado (truncado)`,designTokens:`Design tokens`,fonts:`Fuentes:`,copyJson:`Copiar como JSON`,copied:`¡Copiado!`,network_one:`Red · {{count}} petición`,network_other:`Red · {{count}} peticiones`},r={connectionError:`Error de conexión`,lostConnection:`Se perdió la conexión con el navegador. Cierra y vuelve a abrir “Desde una web”.`,tooManySessions:`Demasiadas sesiones de navegador abiertas. Cierra una y reinténtalo.`,launchFailed:`El navegador no pudo iniciarse en el servidor.`,openFailed:`No se pudo abrir el navegador.`},i={loginWindow:`Ventana de inicio de sesión — {{origin}}`,stacked:`+{{count}} más`,backToPage:`Volver a la página`,show:`Mostrar ventana de inicio de sesión`},a={modal:e,editor:t,domPanel:n,session:r,popup:i};export{
|
|
1
|
+
var e={dialogLabel:`Captura de navegador`,nav:{forward:`Adelante`,reload:`Recargar`},address:{placeholder:`Escribe una URL y pulsa Ir…`,label:`Barra de direcciones`,go:`Ir`},viewport:{groupLabel:`Tamaño del viewport`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport: {{preset}}`,fit:`ajustar`,desktop:`escritorio`,tablet:`tableta`,mobile:`móvil`},network:{ariaLabel:`Capturar peticiones de red`,titleOn:`Capturando las peticiones de red de la página (clic para desactivar)`,titleOff:`Captura de red desactivada (clic para activar)`,button:`Red`},allSizes:{ariaLabel:`Capturar en todos los tamaños de pantalla`,titleOn:`Capturará este elemento en escritorio, tableta y móvil (clic para desactivar)`,titleOff:`Capturar en todos los tamaños: escritorio, tableta y móvil`,button:`Todos los tamaños`},select:{active:`Haz clic en un elemento o arrastra…`,start:`Seleccionar para crear spec`,hint:`Haz clic en un elemento resaltado para capturarlo, o arrastra un rectángulo a medida. Usa el breadcrumb (o ↑/↓) para afinar. Pulsa Esc para cancelar.`},closeBrowser:`Cerrar navegador`,status:{connecting:`Conectando navegador…`,unavailable:`Navegador no disponible`,opening:`Abriendo navegador…`,capturing:`Capturando…`},error:{unavailable:`El navegador no está disponible.`,devHint:`En desarrollo, ejecuta <cmd>npx playwright install chromium</cmd> una vez. En la app de escritorio, Chromium viene incluido.`},breadcrumb:{hint:`↑ padre · ↓ hijo`},toast:{captured:`Selección de página capturada`,captureFailed:`Error en la captura`}},t={tools:{arrow:`Flecha (A)`,box:`Recuadro (R)`,text:`Texto (T)`,blur:`Difuminar / censurar (B)`,step:`Número de paso (N)`},notePrompt:`Texto de la nota:`,colorLabel:`Color {{color}}`,undo:`Deshacer`,undoTitle:`Deshacer (⌘Z)`,redo:`Rehacer`,redoTitle:`Rehacer (⌘⇧Z)`,capturedAlt:`Selección capturada`,discardConfirm:`¿Descartar las anotaciones?`,reselect:`Volver a seleccionar`,createSpec:`Crear spec`,skipContinue:`Omitir y continuar`},n={header:`Página capturada · {{title}}`,badge:{elements_one:`{{count}} elemento`,elements_other:`{{count}} elementos`,tokens:`tokens`,requests:`{{count}} pet.`,truncated:`truncado`},removeLabel:`Quitar el contexto de la página capturada`,noMarkup:`(sin marcado capturado)`,appliedCss:`CSS aplicado`,appliedCssTruncated:`CSS aplicado (truncado)`,designTokens:`Design tokens`,fonts:`Fuentes:`,copyJson:`Copiar como JSON`,copied:`¡Copiado!`,network_one:`Red · {{count}} petición`,network_other:`Red · {{count}} peticiones`},r={connectionError:`Error de conexión`,lostConnection:`Se perdió la conexión con el navegador. Cierra y vuelve a abrir “Desde una web”.`,tooManySessions:`Demasiadas sesiones de navegador abiertas. Cierra una y reinténtalo.`,launchFailed:`El navegador no pudo iniciarse en el servidor.`,openFailed:`No se pudo abrir el navegador.`},i={loginWindow:`Ventana de inicio de sesión — {{origin}}`,stacked:`+{{count}} más`,backToPage:`Volver a la página`,show:`Mostrar ventana de inicio de sesión`},a={devtools:`DevTools`,zoomIn:`Acercar`,zoomOut:`Alejar`,openExternal:`Abrir en el navegador del sistema`,badge:`Nativo`},o={modal:e,editor:t,domPanel:n,session:r,popup:i,native:a};export{o as default,n as domPanel,t as editor,e as modal,a as native,i as popup,r as session};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={dialogLabel:`Capture navigateur`,nav:{forward:`Avancer`,reload:`Recharger`},address:{placeholder:`Saisissez une URL puis appuyez sur Aller…`,label:`Barre d'adresse`,go:`Aller`},viewport:{groupLabel:`Taille du viewport`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport : {{preset}}`,fit:`ajusté`,desktop:`bureau`,tablet:`tablette`,mobile:`mobile`},network:{ariaLabel:`Capturer les requêtes réseau`,titleOn:`Capture des requêtes réseau de la page activée (cliquez pour désactiver)`,titleOff:`Capture réseau désactivée (cliquez pour activer)`,button:`Réseau`},allSizes:{ariaLabel:`Capturer à toutes les tailles d'écran`,titleOn:`Capturera cet élément en bureau, tablette et mobile (cliquez pour désactiver)`,titleOff:`Capturer à toutes les tailles : bureau, tablette et mobile`,button:`Toutes tailles`},select:{active:`Cliquez sur un élément ou faites glisser…`,start:`Sélectionner pour créer une spec`,hint:`Cliquez sur un élément en surbrillance pour le capturer, ou tracez un rectangle personnalisé. Utilisez le fil d'Ariane (ou ↑/↓) pour affiner. Appuyez sur Échap pour annuler.`},closeBrowser:`Fermer le navigateur`,status:{connecting:`Connexion du navigateur…`,unavailable:`Navigateur indisponible`,opening:`Ouverture du navigateur…`,capturing:`Capture…`},error:{unavailable:`Le navigateur est indisponible.`,devHint:`En dev, exécutez <cmd>npx playwright install chromium</cmd> une fois. Dans l'app de bureau, Chromium est intégré.`},breadcrumb:{hint:`↑ parent · ↓ enfant`},toast:{captured:`Sélection de la page capturée`,captureFailed:`Échec de la capture`}},t={tools:{arrow:`Flèche (A)`,box:`Rectangle (R)`,text:`Texte (T)`,blur:`Flouter / caviarder (B)`,step:`Numéro d'étape (N)`},notePrompt:`Texte de la note :`,colorLabel:`Couleur {{color}}`,undo:`Annuler`,undoTitle:`Annuler (⌘Z)`,redo:`Rétablir`,redoTitle:`Rétablir (⌘⇧Z)`,capturedAlt:`Sélection capturée`,discardConfirm:`Abandonner les annotations ?`,reselect:`Resélectionner`,createSpec:`Créer une spec`,skipContinue:`Passer et continuer`},n={header:`Page capturée · {{title}}`,badge:{elements_one:`{{count}} élément`,elements_other:`{{count}} éléments`,tokens:`tokens`,requests:`{{count}} req`,truncated:`tronqué`},removeLabel:`Retirer le contexte de la page capturée`,noMarkup:`(aucun balisage capturé)`,appliedCss:`CSS appliqué`,appliedCssTruncated:`CSS appliqué (tronqué)`,designTokens:`Design tokens`,fonts:`Polices :`,copyJson:`Copier en JSON`,copied:`Copié !`,network_one:`Réseau · {{count}} requête`,network_other:`Réseau · {{count}} requêtes`},r={connectionError:`Erreur de connexion`,lostConnection:`Connexion au navigateur perdue. Fermez puis rouvrez « Depuis un site web ».`,tooManySessions:`Trop de sessions de navigateur ouvertes. Fermez-en une et réessayez.`,launchFailed:`Le navigateur n'a pas pu démarrer sur le serveur.`,openFailed:`Impossible d'ouvrir le navigateur.`},i={loginWindow:`Fenêtre de connexion — {{origin}}`,stacked:`+{{count}} de plus`,backToPage:`Retour à la page`,show:`Afficher la fenêtre de connexion`},a={modal:e,editor:t,domPanel:n,session:r,popup:i};export{
|
|
1
|
+
var e={dialogLabel:`Capture navigateur`,nav:{forward:`Avancer`,reload:`Recharger`},address:{placeholder:`Saisissez une URL puis appuyez sur Aller…`,label:`Barre d'adresse`,go:`Aller`},viewport:{groupLabel:`Taille du viewport`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport : {{preset}}`,fit:`ajusté`,desktop:`bureau`,tablet:`tablette`,mobile:`mobile`},network:{ariaLabel:`Capturer les requêtes réseau`,titleOn:`Capture des requêtes réseau de la page activée (cliquez pour désactiver)`,titleOff:`Capture réseau désactivée (cliquez pour activer)`,button:`Réseau`},allSizes:{ariaLabel:`Capturer à toutes les tailles d'écran`,titleOn:`Capturera cet élément en bureau, tablette et mobile (cliquez pour désactiver)`,titleOff:`Capturer à toutes les tailles : bureau, tablette et mobile`,button:`Toutes tailles`},select:{active:`Cliquez sur un élément ou faites glisser…`,start:`Sélectionner pour créer une spec`,hint:`Cliquez sur un élément en surbrillance pour le capturer, ou tracez un rectangle personnalisé. Utilisez le fil d'Ariane (ou ↑/↓) pour affiner. Appuyez sur Échap pour annuler.`},closeBrowser:`Fermer le navigateur`,status:{connecting:`Connexion du navigateur…`,unavailable:`Navigateur indisponible`,opening:`Ouverture du navigateur…`,capturing:`Capture…`},error:{unavailable:`Le navigateur est indisponible.`,devHint:`En dev, exécutez <cmd>npx playwright install chromium</cmd> une fois. Dans l'app de bureau, Chromium est intégré.`},breadcrumb:{hint:`↑ parent · ↓ enfant`},toast:{captured:`Sélection de la page capturée`,captureFailed:`Échec de la capture`}},t={tools:{arrow:`Flèche (A)`,box:`Rectangle (R)`,text:`Texte (T)`,blur:`Flouter / caviarder (B)`,step:`Numéro d'étape (N)`},notePrompt:`Texte de la note :`,colorLabel:`Couleur {{color}}`,undo:`Annuler`,undoTitle:`Annuler (⌘Z)`,redo:`Rétablir`,redoTitle:`Rétablir (⌘⇧Z)`,capturedAlt:`Sélection capturée`,discardConfirm:`Abandonner les annotations ?`,reselect:`Resélectionner`,createSpec:`Créer une spec`,skipContinue:`Passer et continuer`},n={header:`Page capturée · {{title}}`,badge:{elements_one:`{{count}} élément`,elements_other:`{{count}} éléments`,tokens:`tokens`,requests:`{{count}} req`,truncated:`tronqué`},removeLabel:`Retirer le contexte de la page capturée`,noMarkup:`(aucun balisage capturé)`,appliedCss:`CSS appliqué`,appliedCssTruncated:`CSS appliqué (tronqué)`,designTokens:`Design tokens`,fonts:`Polices :`,copyJson:`Copier en JSON`,copied:`Copié !`,network_one:`Réseau · {{count}} requête`,network_other:`Réseau · {{count}} requêtes`},r={connectionError:`Erreur de connexion`,lostConnection:`Connexion au navigateur perdue. Fermez puis rouvrez « Depuis un site web ».`,tooManySessions:`Trop de sessions de navigateur ouvertes. Fermez-en une et réessayez.`,launchFailed:`Le navigateur n'a pas pu démarrer sur le serveur.`,openFailed:`Impossible d'ouvrir le navigateur.`},i={loginWindow:`Fenêtre de connexion — {{origin}}`,stacked:`+{{count}} de plus`,backToPage:`Retour à la page`,show:`Afficher la fenêtre de connexion`},a={devtools:`DevTools`,zoomIn:`Zoom avant`,zoomOut:`Zoom arrière`,openExternal:`Ouvrir dans le navigateur système`,badge:`Natif`},o={modal:e,editor:t,domPanel:n,session:r,popup:i,native:a};export{o as default,n as domPanel,t as editor,e as modal,a as native,i as popup,r as session};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={dialogLabel:`Captura do browser`,nav:{forward:`Avançar`,reload:`Recarregar`},address:{placeholder:`Introduza um URL e prima Ir…`,label:`Barra de endereço`,go:`Ir`},viewport:{groupLabel:`Tamanho do viewport`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport: {{preset}}`,fit:`ajustar`,desktop:`desktop`,tablet:`tablet`,mobile:`móvel`},network:{ariaLabel:`Capturar pedidos de rede`,titleOn:`A capturar os pedidos de rede da página (clique para desativar)`,titleOff:`Captura de rede desativada (clique para ativar)`,button:`Rede`},allSizes:{ariaLabel:`Capturar em todos os tamanhos de ecrã`,titleOn:`Vai capturar este elemento em desktop, tablet e móvel (clique para desativar)`,titleOff:`Capturar em todos os tamanhos: desktop, tablet e móvel`,button:`Todos os tamanhos`},select:{active:`Clique num elemento ou arraste…`,start:`Selecionar para criar spec`,hint:`Clique num elemento destacado para o capturar, ou arraste um retângulo personalizado. Use o breadcrumb (ou ↑/↓) para refinar. Prima Esc para cancelar.`},closeBrowser:`Fechar browser`,status:{connecting:`A ligar ao browser…`,unavailable:`Browser indisponível`,opening:`A abrir o browser…`,capturing:`A capturar…`},error:{unavailable:`O browser está indisponível.`,devHint:`Em dev, execute <cmd>npx playwright install chromium</cmd> uma vez. Na app desktop, o Chromium vem incluído.`},breadcrumb:{hint:`↑ pai · ↓ filho`},toast:{captured:`Seleção da página capturada`,captureFailed:`Falha na captura`}},t={tools:{arrow:`Seta (A)`,box:`Caixa (R)`,text:`Texto (T)`,blur:`Desfocar / ocultar (B)`,step:`Número de passo (N)`},notePrompt:`Texto da nota:`,colorLabel:`Cor {{color}}`,undo:`Anular`,undoTitle:`Anular (⌘Z)`,redo:`Refazer`,redoTitle:`Refazer (⌘⇧Z)`,capturedAlt:`Seleção capturada`,discardConfirm:`Descartar anotações?`,reselect:`Selecionar novamente`,createSpec:`Criar spec`,skipContinue:`Ignorar e continuar`},n={header:`Página capturada · {{title}}`,badge:{elements_one:`{{count}} elemento`,elements_other:`{{count}} elementos`,tokens:`tokens`,requests:`{{count}} ped.`,truncated:`truncado`},removeLabel:`Remover contexto da página capturada`,noMarkup:`(nenhum markup capturado)`,appliedCss:`CSS aplicado`,appliedCssTruncated:`CSS aplicado (truncado)`,designTokens:`Design tokens`,fonts:`Fontes:`,copyJson:`Copiar como JSON`,copied:`Copiado!`,network_one:`Rede · {{count}} pedido`,network_other:`Rede · {{count}} pedidos`},r={connectionError:`Erro de ligação`,lostConnection:`Perdeu-se a ligação ao browser. Feche e reabra «A partir de um website».`,tooManySessions:`Demasiadas sessões de browser abertas. Feche uma e tente novamente.`,launchFailed:`O browser não conseguiu arrancar no servidor.`,openFailed:`Não foi possível abrir o browser.`},i={loginWindow:`Janela de início de sessão — {{origin}}`,stacked:`+{{count}} mais`,backToPage:`Voltar à página`,show:`Mostrar janela de início de sessão`},a={modal:e,editor:t,domPanel:n,session:r,popup:i};export{
|
|
1
|
+
var e={dialogLabel:`Captura do browser`,nav:{forward:`Avançar`,reload:`Recarregar`},address:{placeholder:`Introduza um URL e prima Ir…`,label:`Barra de endereço`,go:`Ir`},viewport:{groupLabel:`Tamanho do viewport`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport: {{preset}}`,fit:`ajustar`,desktop:`desktop`,tablet:`tablet`,mobile:`móvel`},network:{ariaLabel:`Capturar pedidos de rede`,titleOn:`A capturar os pedidos de rede da página (clique para desativar)`,titleOff:`Captura de rede desativada (clique para ativar)`,button:`Rede`},allSizes:{ariaLabel:`Capturar em todos os tamanhos de ecrã`,titleOn:`Vai capturar este elemento em desktop, tablet e móvel (clique para desativar)`,titleOff:`Capturar em todos os tamanhos: desktop, tablet e móvel`,button:`Todos os tamanhos`},select:{active:`Clique num elemento ou arraste…`,start:`Selecionar para criar spec`,hint:`Clique num elemento destacado para o capturar, ou arraste um retângulo personalizado. Use o breadcrumb (ou ↑/↓) para refinar. Prima Esc para cancelar.`},closeBrowser:`Fechar browser`,status:{connecting:`A ligar ao browser…`,unavailable:`Browser indisponível`,opening:`A abrir o browser…`,capturing:`A capturar…`},error:{unavailable:`O browser está indisponível.`,devHint:`Em dev, execute <cmd>npx playwright install chromium</cmd> uma vez. Na app desktop, o Chromium vem incluído.`},breadcrumb:{hint:`↑ pai · ↓ filho`},toast:{captured:`Seleção da página capturada`,captureFailed:`Falha na captura`}},t={tools:{arrow:`Seta (A)`,box:`Caixa (R)`,text:`Texto (T)`,blur:`Desfocar / ocultar (B)`,step:`Número de passo (N)`},notePrompt:`Texto da nota:`,colorLabel:`Cor {{color}}`,undo:`Anular`,undoTitle:`Anular (⌘Z)`,redo:`Refazer`,redoTitle:`Refazer (⌘⇧Z)`,capturedAlt:`Seleção capturada`,discardConfirm:`Descartar anotações?`,reselect:`Selecionar novamente`,createSpec:`Criar spec`,skipContinue:`Ignorar e continuar`},n={header:`Página capturada · {{title}}`,badge:{elements_one:`{{count}} elemento`,elements_other:`{{count}} elementos`,tokens:`tokens`,requests:`{{count}} ped.`,truncated:`truncado`},removeLabel:`Remover contexto da página capturada`,noMarkup:`(nenhum markup capturado)`,appliedCss:`CSS aplicado`,appliedCssTruncated:`CSS aplicado (truncado)`,designTokens:`Design tokens`,fonts:`Fontes:`,copyJson:`Copiar como JSON`,copied:`Copiado!`,network_one:`Rede · {{count}} pedido`,network_other:`Rede · {{count}} pedidos`},r={connectionError:`Erro de ligação`,lostConnection:`Perdeu-se a ligação ao browser. Feche e reabra «A partir de um website».`,tooManySessions:`Demasiadas sessões de browser abertas. Feche uma e tente novamente.`,launchFailed:`O browser não conseguiu arrancar no servidor.`,openFailed:`Não foi possível abrir o browser.`},i={loginWindow:`Janela de início de sessão — {{origin}}`,stacked:`+{{count}} mais`,backToPage:`Voltar à página`,show:`Mostrar janela de início de sessão`},a={devtools:`DevTools`,zoomIn:`Aumentar zoom`,zoomOut:`Diminuir zoom`,openExternal:`Abrir no navegador do sistema`,badge:`Nativo`},o={modal:e,editor:t,domPanel:n,session:r,popup:i,native:a};export{o as default,n as domPanel,t as editor,e as modal,a as native,i as popup,r as session};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={dialogLabel:`Browser-Aufnahme`,nav:{forward:`Vorwärts`,reload:`Neu laden`},address:{placeholder:`URL eingeben und „Los“ drücken…`,label:`Adressleiste`,go:`Los`},viewport:{groupLabel:`Viewport-Größe`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport: {{preset}}`,fit:`Anpassen`,desktop:`Desktop`,tablet:`Tablet`,mobile:`Mobil`},network:{ariaLabel:`Netzwerk-Requests aufzeichnen`,titleOn:`Netzwerk-Requests der Seite werden aufgezeichnet (zum Deaktivieren klicken)`,titleOff:`Netzwerkaufzeichnung aus (zum Aktivieren klicken)`,button:`Netzwerk`},allSizes:{ariaLabel:`In allen Bildschirmgrößen aufnehmen`,titleOn:`Dieses Element wird in Desktop, Tablet und Mobil aufgenommen (zum Deaktivieren klicken)`,titleOff:`In allen Größen aufnehmen: Desktop, Tablet und Mobil`,button:`Alle Größen`},select:{active:`Element anklicken oder ziehen…`,start:`Auswählen, um Spec zu erstellen`,hint:`Klicke ein hervorgehobenes Element an, um es aufzunehmen, oder ziehe ein eigenes Rechteck. Nutze die Breadcrumb (oder ↑/↓) zum Verfeinern. Esc zum Abbrechen.`},closeBrowser:`Browser schließen`,status:{connecting:`Browser wird verbunden…`,unavailable:`Browser nicht verfügbar`,opening:`Browser wird geöffnet…`,capturing:`Aufnahme läuft…`},error:{unavailable:`Der Browser ist nicht verfügbar.`,devHint:`Führe in der Entwicklung einmal <cmd>npx playwright install chromium</cmd> aus. In der Desktop-App ist Chromium gebündelt.`},breadcrumb:{hint:`↑ Elternelement · ↓ Kindelement`},toast:{captured:`Seitenauswahl aufgenommen`,captureFailed:`Aufnahme fehlgeschlagen`}},t={tools:{arrow:`Pfeil (A)`,box:`Rechteck (R)`,text:`Text (T)`,blur:`Weichzeichnen / Schwärzen (B)`,step:`Schrittnummer (N)`},notePrompt:`Notiztext:`,colorLabel:`Farbe {{color}}`,undo:`Rückgängig`,undoTitle:`Rückgängig (⌘Z)`,redo:`Wiederholen`,redoTitle:`Wiederholen (⌘⇧Z)`,capturedAlt:`Aufgenommene Auswahl`,discardConfirm:`Anmerkungen verwerfen?`,reselect:`Neu auswählen`,createSpec:`Spec erstellen`,skipContinue:`Überspringen & weiter`},n={header:`Aufgenommene Seite · {{title}}`,badge:{elements_one:`{{count}} Element`,elements_other:`{{count}} Elemente`,tokens:`Tokens`,requests:`{{count}} Req.`,truncated:`gekürzt`},removeLabel:`Aufgenommenen Seitenkontext entfernen`,noMarkup:`(kein Markup aufgenommen)`,appliedCss:`Angewendetes CSS`,appliedCssTruncated:`Angewendetes CSS (gekürzt)`,designTokens:`Design-Tokens`,fonts:`Schriften:`,copyJson:`Als JSON kopieren`,copied:`Kopiert!`,network_one:`Netzwerk · {{count}} Request`,network_other:`Netzwerk · {{count}} Requests`},r={connectionError:`Verbindungsfehler`,lostConnection:`Verbindung zum Browser verloren. Schließe „Von einer Website“ und öffne es erneut.`,tooManySessions:`Zu viele offene Browser-Sessions. Schließe eine und versuche es erneut.`,launchFailed:`Der Browser konnte auf dem Server nicht gestartet werden.`,openFailed:`Browser konnte nicht geöffnet werden.`},i={loginWindow:`Anmeldefenster — {{origin}}`,stacked:`+{{count}} weitere`,backToPage:`Zurück zur Seite`,show:`Anmeldefenster anzeigen`},a={modal:e,editor:t,domPanel:n,session:r,popup:i};export{
|
|
1
|
+
var e={dialogLabel:`Browser-Aufnahme`,nav:{forward:`Vorwärts`,reload:`Neu laden`},address:{placeholder:`URL eingeben und „Los“ drücken…`,label:`Adressleiste`,go:`Los`},viewport:{groupLabel:`Viewport-Größe`,presetLabel:`Viewport {{preset}}`,presetTitle:`Viewport: {{preset}}`,fit:`Anpassen`,desktop:`Desktop`,tablet:`Tablet`,mobile:`Mobil`},network:{ariaLabel:`Netzwerk-Requests aufzeichnen`,titleOn:`Netzwerk-Requests der Seite werden aufgezeichnet (zum Deaktivieren klicken)`,titleOff:`Netzwerkaufzeichnung aus (zum Aktivieren klicken)`,button:`Netzwerk`},allSizes:{ariaLabel:`In allen Bildschirmgrößen aufnehmen`,titleOn:`Dieses Element wird in Desktop, Tablet und Mobil aufgenommen (zum Deaktivieren klicken)`,titleOff:`In allen Größen aufnehmen: Desktop, Tablet und Mobil`,button:`Alle Größen`},select:{active:`Element anklicken oder ziehen…`,start:`Auswählen, um Spec zu erstellen`,hint:`Klicke ein hervorgehobenes Element an, um es aufzunehmen, oder ziehe ein eigenes Rechteck. Nutze die Breadcrumb (oder ↑/↓) zum Verfeinern. Esc zum Abbrechen.`},closeBrowser:`Browser schließen`,status:{connecting:`Browser wird verbunden…`,unavailable:`Browser nicht verfügbar`,opening:`Browser wird geöffnet…`,capturing:`Aufnahme läuft…`},error:{unavailable:`Der Browser ist nicht verfügbar.`,devHint:`Führe in der Entwicklung einmal <cmd>npx playwright install chromium</cmd> aus. In der Desktop-App ist Chromium gebündelt.`},breadcrumb:{hint:`↑ Elternelement · ↓ Kindelement`},toast:{captured:`Seitenauswahl aufgenommen`,captureFailed:`Aufnahme fehlgeschlagen`}},t={tools:{arrow:`Pfeil (A)`,box:`Rechteck (R)`,text:`Text (T)`,blur:`Weichzeichnen / Schwärzen (B)`,step:`Schrittnummer (N)`},notePrompt:`Notiztext:`,colorLabel:`Farbe {{color}}`,undo:`Rückgängig`,undoTitle:`Rückgängig (⌘Z)`,redo:`Wiederholen`,redoTitle:`Wiederholen (⌘⇧Z)`,capturedAlt:`Aufgenommene Auswahl`,discardConfirm:`Anmerkungen verwerfen?`,reselect:`Neu auswählen`,createSpec:`Spec erstellen`,skipContinue:`Überspringen & weiter`},n={header:`Aufgenommene Seite · {{title}}`,badge:{elements_one:`{{count}} Element`,elements_other:`{{count}} Elemente`,tokens:`Tokens`,requests:`{{count}} Req.`,truncated:`gekürzt`},removeLabel:`Aufgenommenen Seitenkontext entfernen`,noMarkup:`(kein Markup aufgenommen)`,appliedCss:`Angewendetes CSS`,appliedCssTruncated:`Angewendetes CSS (gekürzt)`,designTokens:`Design-Tokens`,fonts:`Schriften:`,copyJson:`Als JSON kopieren`,copied:`Kopiert!`,network_one:`Netzwerk · {{count}} Request`,network_other:`Netzwerk · {{count}} Requests`},r={connectionError:`Verbindungsfehler`,lostConnection:`Verbindung zum Browser verloren. Schließe „Von einer Website“ und öffne es erneut.`,tooManySessions:`Zu viele offene Browser-Sessions. Schließe eine und versuche es erneut.`,launchFailed:`Der Browser konnte auf dem Server nicht gestartet werden.`,openFailed:`Browser konnte nicht geöffnet werden.`},i={loginWindow:`Anmeldefenster — {{origin}}`,stacked:`+{{count}} weitere`,backToPage:`Zurück zur Seite`,show:`Anmeldefenster anzeigen`},a={devtools:`DevTools`,zoomIn:`Vergrößern`,zoomOut:`Verkleinern`,openExternal:`Im Systembrowser öffnen`,badge:`Nativ`},o={modal:e,editor:t,domPanel:n,session:r,popup:i,native:a};export{o as default,n as domPanel,t as editor,e as modal,a as native,i as popup,r as session};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{O as r}from"./dialog-CdWCb02j.js";import{t as i}from"./clsx-CjueKrWZ.js";import{t as a}from"./utils-BC4DHlz2.js";var o=e(t(),1),s=n(),c=Symbol.for(`react.lazy`),l=o.use;function u(e){return typeof e==`object`&&!!e&&`then`in e}function d(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===c&&`_payload`in e&&u(e._payload)}function f(e){let t=m(e),n=o.forwardRef((e,n)=>{let{children:r,...i}=e;d(r)&&typeof l==`function`&&(r=l(r._payload));let a=o.Children.toArray(r),c=a.find(g);if(c){let e=c.props.children,r=a.map(t=>t===c?o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null:t);return(0,s.jsx)(t,{...i,ref:n,children:o.isValidElement(e)?o.cloneElement(e,void 0,r):null})}return(0,s.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var p=f(`Slot`);function m(e){let t=o.forwardRef((e,t)=>{let{children:n,...i}=e;if(d(n)&&typeof l==`function`&&(n=l(n._payload)),o.isValidElement(n)){let e=v(n),a=_(i,n.props);return n.type!==o.Fragment&&(a.ref=t?r(t,e):e),o.cloneElement(n,a)}return o.Children.count(n)>1?o.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var h=Symbol(`radix.slottable`);function g(e){return o.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===h}function _(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 v(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 y=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,b=i,x=(e,t)=>n=>{if(t?.variants==null)return b(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=y(t)||y(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return b(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},S=x(`inline-flex items-center justify-center whitespace-nowrap rounded-md text-xs font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 px-3 py-1.5`,sm:`h-7 rounded-md px-2`,lg:`h-10 rounded-md px-6`,icon:`h-8 w-8`}},defaultVariants:{variant:`default`,size:`default`}}),C=o.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},o)=>(0,s.jsx)(r?p:`button`,{className:a(S({variant:t,size:n,className:e})),ref:o,...i}));C.displayName=`Button`;export{x as n,C as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t}from"./jsx-runtime-zu2_FqZY.js";import{t as n}from"./preload-helper-Czpn1I53.js";var r=e(t(),1),i=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,a=/^[\\/]{2}/;function o(e,t){return t+e.replace(/\\/g,`/`)}var s=`popstate`;function c(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function l(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return m(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:h(t)}return _(t,n,null,e)}function u(e,t){if(e===!1||e==null)throw Error(t)}function d(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function f(){return Math.random().toString(36).substring(2,10)}function p(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function m(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?g(t):t,state:n,key:t&&t.key||r||f(),mask:i}}function h({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function g(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function _(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,l=`POP`,u=null,d=f();d??(d=0,o.replaceState({...o.state,idx:d},``));function f(){return(o.state||{idx:null}).idx}function h(){l=`POP`;let e=f(),t=e==null?null:e-d;d=e,u&&u({action:l,location:b.location,delta:t})}function g(e,t){l=`PUSH`;let r=c(e)?e:m(b.location,e,t);n&&n(r,e),d=f()+1;let s=p(r,d),h=b.createHref(r.mask||r);try{o.pushState(s,``,h)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(h)}a&&u&&u({action:l,location:b.location,delta:1})}function _(e,t){l=`REPLACE`;let r=c(e)?e:m(b.location,e,t);n&&n(r,e),d=f();let i=p(r,d),s=b.createHref(r.mask||r);o.replaceState(i,``,s),a&&u&&u({action:l,location:b.location,delta:0})}function y(e){return v(i,e)}let b={get action(){return l},get location(){return e(i,o)},listen(e){if(u)throw Error(`A history only accepts one active listener`);return i.addEventListener(s,h),u=e,()=>{i.removeEventListener(s,h),u=null}},createHref(e){return t(i,e)},createURL:y,encodeLocation(e){let t=y(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:g,replace:_,go(e){return o.go(e)}};return b}function v(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),u(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:h(t);return i=i.replace(/ $/,`%20`),!n&&a.test(i)&&(i=r+i),new URL(i,r)}function y(e,t,n=`/`){return b(e,t,n,!1)}function b(e,t,n,r,i){let a=A((typeof t==`string`?g(t):t).pathname||`/`,n);if(a==null)return null;let o=i??S(e),s=null,c=le(a);for(let e=0;s==null&&e<o.length;++e)s=oe(o[e],c,r);return s}function x(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function S(e){let t=C(e);return T(t),t}function C(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;u(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=M([r,c.relativePath]),d=n.concat(c);e.children&&e.children.length>0&&(u(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),C(e.children,t,d,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:ie(l,e.index),routesMeta:d.map((e,t)=>{let[n,r]=ce(e.relativePath,e.caseSensitive,t===d.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of w(e.path))a(e,t,!0,n)}),t}function w(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=w(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function T(e){e.sort((e,t)=>e.score===t.score?ae(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var E=/^:[\w-]+$/,ee=3,te=2,ne=1,D=10,O=-2,re=e=>e===`*`;function ie(e,t){let n=e.split(`/`),r=n.length;return n.some(re)&&(r+=O),t&&(r+=te),n.filter(e=>!re(e)).reduce((e,t)=>e+(E.test(t)?ee:t===``?ne:D),r)}function ae(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function oe(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?se(u,l,s.matcher,s.compiledParams):k(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=k({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:M([a,d.pathname]),pathnameBase:ge(M([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=M([a,d.pathnameBase]))}return o}function k(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=ce(e.path,e.caseSensitive,e.end);return se(e,t,n,r)}function se(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function ce(e,t=!1,n=!0){d(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function le(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return d(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function A(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function ue(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?g(e):e,a;return n?(n=he(n),a=n.startsWith(`/`)?de(n.substring(1),`/`):de(n,t)):a=t,{pathname:a,search:_e(r),hash:ve(i)}}function de(e,t){let n=N(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function fe(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function pe(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function me(e){let t=pe(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function j(e,t,n,r=!1){let i;typeof e==`string`?i=g(e):(i={...e},u(!i.pathname||!i.pathname.includes(`?`),fe(`?`,`pathname`,`search`,i)),u(!i.pathname||!i.pathname.includes(`#`),fe(`#`,`pathname`,`hash`,i)),u(!i.search||!i.search.includes(`#`),fe(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=ue(i,s),l=o&&o!==`/`&&o.endsWith(`/`),d=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||d)&&(c.pathname+=`/`),c}var he=e=>e.replace(/[\\/]{2,}/g,`/`),M=e=>he(e.join(`/`)),N=e=>e.replace(/\/+$/,``),ge=e=>N(e).replace(/^\/*/,`/`),_e=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,ve=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,ye=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function be(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function xe(e){return M(e.map(e=>e.route.path).filter(Boolean))||`/`}var Se=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Ce(e,t){let n=e;if(typeof n!=`string`||!i.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,s=!1;if(Se)try{let e=new URL(window.location.href),r=a.test(n)?new URL(o(n,e.protocol)):new URL(n),i=A(r.pathname,t);r.origin===e.origin&&i!=null?n=i+r.search+r.hash:s=!0}catch{d(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:s,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var we=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(we);var Te=[`GET`,...we];new Set(Te);var Ee=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function De(e){try{return Ee.includes(new URL(e).protocol)}catch{return!1}}var P=r.createContext(null);P.displayName=`DataRouter`;var F=r.createContext(null);F.displayName=`DataRouterState`;var Oe=r.createContext(!1);function ke(){return r.useContext(Oe)}var Ae=r.createContext({isTransitioning:!1});Ae.displayName=`ViewTransition`;var je=r.createContext(new Map);je.displayName=`Fetchers`;var Me=r.createContext(null);Me.displayName=`Await`;var I=r.createContext(null);I.displayName=`Navigation`;var L=r.createContext(null);L.displayName=`Location`;var R=r.createContext({outlet:null,matches:[],isDataRoute:!1});R.displayName=`Route`;var z=r.createContext(null);z.displayName=`RouteError`;var Ne=`REACT_ROUTER_ERROR`,Pe=`REDIRECT`,Fe=`ROUTE_ERROR_RESPONSE`;function Ie(e){if(e.startsWith(`${Ne}:${Pe}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Le(e){if(e.startsWith(`${Ne}:${Fe}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new ye(t.status,t.statusText,t.data)}catch{}}function Re(e,{relative:t}={}){u(B(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:i}=r.useContext(I),{hash:a,pathname:o,search:s}=U(e,{relative:t}),c=o;return n!==`/`&&(c=o===`/`?n:M([n,o])),i.createHref({pathname:c,search:s,hash:a})}function B(){return r.useContext(L)!=null}function V(){return u(B(),`useLocation() may be used only in the context of a <Router> component.`),r.useContext(L).location}var ze=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Be(e){r.useContext(I).static||r.useLayoutEffect(e)}function H(){let{isDataRoute:e}=r.useContext(R);return e?ct():Ve()}function Ve(){u(B(),`useNavigate() may be used only in the context of a <Router> component.`);let e=r.useContext(P),{basename:t,navigator:n}=r.useContext(I),{matches:i}=r.useContext(R),{pathname:a}=V(),o=JSON.stringify(me(i)),s=r.useRef(!1);return Be(()=>{s.current=!0}),r.useCallback((r,i={})=>{if(d(s.current,ze),!s.current)return;if(typeof r==`number`){n.go(r);return}let c=j(r,JSON.parse(o),a,i.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:M([t,c.pathname])),(i.replace?n.replace:n.push)(c,i.state,i)},[t,n,o,a,e])}var He=r.createContext(null);function Ue(e){let t=r.useContext(R).outlet;return r.useMemo(()=>t&&r.createElement(He.Provider,{value:e},t),[t,e])}function We(){let{matches:e}=r.useContext(R);return e[e.length-1]?.params??{}}function U(e,{relative:t}={}){let{matches:n}=r.useContext(R),{pathname:i}=V(),a=JSON.stringify(me(n));return r.useMemo(()=>j(e,JSON.parse(a),i,t===`path`),[e,a,i,t])}function Ge(e,t){return Ke(e,t)}function Ke(e,t,n){u(B(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:i}=r.useContext(I),{matches:a}=r.useContext(R),o=a[a.length-1],s=o?o.params:{},c=o?o.pathname:`/`,l=o?o.pathnameBase:`/`,f=o&&o.route;{let e=f&&f.path||``;ut(c,!f||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${c}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
2
2
|
|
|
3
|
-
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let p=V(),m;if(t){let e=typeof t==`string`?g(t):t;u(l===`/`||e.pathname?.startsWith(l),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${l}" but pathname "${e.pathname}" was given in the \`location\` prop.`),m=e}else m=p;let h=m.pathname||`/`,_=h;if(l!==`/`){let e=l.replace(/^\//,``).split(`/`);_=`/`+h.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let v=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):y(e,{pathname:_});d(f||v!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),d(v==null||v[v.length-1].route.element!==void 0||v[v.length-1].route.Component!==void 0||v[v.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let b=$e(v&&v.map(e=>Object.assign({},e,{params:Object.assign({},s,e.params),pathname:M([l,i.encodeLocation?i.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?l:M([l,i.encodeLocation?i.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),a,n);return t&&b?r.createElement(L.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...m},navigationType:`POP`}},b):b}function qe(){let e=st(),t=be(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i=`rgba(200,200,200, 0.5)`,a={padding:`0.5rem`,backgroundColor:i},o={padding:`2px 4px`,backgroundColor:i},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=r.createElement(r.Fragment,null,r.createElement(`p`,null,`💿 Hey developer 👋`),r.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,r.createElement(`code`,{style:o},`ErrorBoundary`),` or`,` `,r.createElement(`code`,{style:o},`errorElement`),` prop on your route.`)),r.createElement(r.Fragment,null,r.createElement(`h2`,null,`Unexpected Application Error!`),r.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?r.createElement(`pre`,{style:a},n):null,s)}var Je=r.createElement(qe,null),Ye=class extends r.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Le(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:r.createElement(R.Provider,{value:this.props.routeContext},r.createElement(z.Provider,{value:e,children:this.props.component}));return this.context?r.createElement(Ze,{error:e},t):t}};Ye.contextType=Oe;var Xe=new WeakMap;function Ze({children:e,error:t}){let{basename:n}=r.useContext(I);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Ie(t.digest);if(e){let i=Xe.get(t);if(i)throw i;let a=Ce(e.location,n),o=a.absoluteURL||a.to;if(De(o))throw Error(`Invalid redirect location`);if(Se&&!Xe.get(t))if(a.isExternal||e.reloadDocument)window.location.href=o;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Xe.set(t,n),n}return r.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function Qe({routeContext:e,match:t,children:n}){let i=r.useContext(P);return i&&i.static&&i.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=t.route.id),r.createElement(R.Provider,{value:e},n)}function $e(e,t=[],n){let i=n?.state;if(e==null){if(!i)return null;if(i.errors)e=i.matches;else if(t.length===0&&!i.initialized&&i.matches.length>0)e=i.matches;else return null}let a=e,o=i?.errors;if(o!=null){let e=a.findIndex(e=>e.route.id&&o?.[e.route.id]!==void 0);u(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(`,`)}`),a=a.slice(0,Math.min(a.length,e+1))}let s=!1,c=-1;if(n&&i){s=i.renderFallback;for(let e=0;e<a.length;e++){let t=a[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(c=e),t.route.id){let{loaderData:e,errors:r}=i,o=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||o){n.isStatic&&(s=!0),a=c>=0?a.slice(0,c+1):[a[0]];break}}}}let l=n?.onError,d=i&&l?(e,t)=>{l(e,{location:i.location,params:i.matches?.[0]?.params??{},pattern:xe(i.matches),errorInfo:t})}:void 0;return a.reduceRight((e,n,l)=>{let u,f=!1,p=null,m=null;i&&(u=o&&n.route.id?o[n.route.id]:void 0,p=n.route.errorElement||Je,s&&(c<0&&l===0?(ut(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):c===l&&(f=!0,m=n.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,l+1)),g=()=>{let t;return t=u?p:f?m:n.route.Component?r.createElement(n.route.Component,null):n.route.element?n.route.element:e,r.createElement(Qe,{match:n,routeContext:{outlet:e,matches:h,isDataRoute:i!=null},children:t})};return i&&(n.route.ErrorBoundary||n.route.errorElement||l===0)?r.createElement(Ye,{location:i.location,revalidation:i.revalidation,component:p,error:u,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:d}):g()},null)}function et(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tt(e){let t=r.useContext(P);return u(t,et(e)),t}function nt(e){let t=r.useContext(F);return u(t,et(e)),t}function rt(e){let t=r.useContext(R);return u(t,et(e)),t}function W(e){let t=rt(e),n=t.matches[t.matches.length-1];return u(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function it(){return W(`useRouteId`)}function at(){let e=nt(`useNavigation`);return r.useMemo(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function ot(){let{matches:e,loaderData:t}=nt(`useMatches`);return r.useMemo(()=>e.map(e=>x(e,t)),[e,t])}function st(){let e=r.useContext(z),t=nt(`useRouteError`),n=W(`useRouteError`);return e===void 0?t.errors?.[n]:e}function ct(){let{router:e}=tt(`useNavigate`),t=W(`useNavigate`),n=r.useRef(!1);return Be(()=>{n.current=!0}),r.useCallback(async(r,i={})=>{d(n.current,ze),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var lt={};function ut(e,t,n){!t&&!lt[e]&&(lt[e]=!0,d(!1,n))}r.memo(dt);function dt({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Ke(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function ft({to:e,replace:t,state:n,relative:i}){u(B(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:a}=r.useContext(I);d(!a,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=r.useContext(R),{pathname:s}=V(),c=H(),l=j(e,me(o),s,i===`path`),f=JSON.stringify(l);return r.useEffect(()=>{c(JSON.parse(f),{replace:t,state:n,relative:i})},[c,f,i,t,n]),null}function pt(e){return Ue(e.context)}function mt(e){u(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function ht({basename:e=`/`,children:t=null,location:n,navigationType:i=`POP`,navigator:a,static:o=!1,useTransitions:s}){u(!B(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=r.useMemo(()=>({basename:c,navigator:a,static:o,useTransitions:s,future:{}}),[c,a,o,s]);typeof n==`string`&&(n=g(n));let{pathname:f=`/`,search:p=``,hash:m=``,state:h=null,key:_=`default`,mask:v}=n,y=r.useMemo(()=>{let e=A(f,c);return e==null?null:{location:{pathname:e,search:p,hash:m,state:h,key:_,mask:v},navigationType:i}},[c,f,p,m,h,_,i,v]);return d(y!=null,`<Router basename="${c}"> is not able to match the URL "${f}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:r.createElement(I.Provider,{value:l},r.createElement(L.Provider,{children:t,value:y}))}function gt({children:e,location:t}){return Ge(_t(e),t)}r.Component;function _t(e,t=[]){let n=[];return r.Children.forEach(e,(e,i)=>{if(!r.isValidElement(e))return;let a=[...t,i];if(e.type===r.Fragment){n.push.apply(n,_t(e.props.children,a));return}u(e.type===mt,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),u(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let o={id:e.props.id||a.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=_t(e.props.children,a)),n.push(o)}),n}var G=`get`,K=`application/x-www-form-urlencoded`;function q(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function vt(e){return q(e)&&e.tagName.toLowerCase()===`button`}function yt(e){return q(e)&&e.tagName.toLowerCase()===`form`}function bt(e){return q(e)&&e.tagName.toLowerCase()===`input`}function xt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function St(e,t){return e.button===0&&(!t||t===`_self`)&&!xt(e)}function Ct(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function wt(e,t){let n=Ct(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var J=null;function Tt(){if(J===null)try{new FormData(document.createElement(`form`),0),J=!1}catch{J=!0}return J}var Et=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Dt(e){return e!=null&&!Et.has(e)?(d(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${K}"`),null):e}function Ot(e,t){let n,r,i,a,o;if(yt(e)){let o=e.getAttribute(`action`);r=o?A(o,t):null,n=e.getAttribute(`method`)||G,i=Dt(e.getAttribute(`enctype`))||K,a=new FormData(e)}else if(vt(e)||bt(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?A(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||G,i=Dt(e.getAttribute(`formenctype`))||Dt(o.getAttribute(`enctype`))||K,a=new FormData(o,e),!Tt()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(q(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=G,r=null,i=K,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var kt={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},At=/[&><\u2028\u2029]/g;function jt(e){return e.replace(At,e=>kt[e])}function Mt(e,t){if(e===!1||e==null)throw Error(t)}function Nt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&A(i.pathname,t)===`/`?i.pathname=`${N(t)}/_root.${r}`:i.pathname=`${N(i.pathname)}.${r}`,i}async function Pt(e,t){if(e.id in t)return t[e.id];try{let r=await n(()=>import(e.module),[]);return t[e.id]=r,r}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Ft(e){return e!=null&&typeof e.page==`string`}function It(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Lt(e,t,n){return Ht((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Pt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(It).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Rt(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function zt(e,t,{includeHydrateFallback:n}={}){return Bt(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Bt(e){return[...new Set(e)]}function Vt(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Ht(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Ft(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Vt(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Ut(){let e=r.useContext(P);return Mt(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Wt(){let e=r.useContext(F);return Mt(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Y=r.createContext(void 0);Y.displayName=`FrameworkContext`;function X(){let e=r.useContext(Y);return Mt(e,`You must render this element inside a <HydratedRouter> element`),e}function Gt(e,t){let n=r.useContext(Y),[i,a]=r.useState(!1),[o,s]=r.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=r.useRef(null);r.useEffect(()=>{if(e===`render`&&s(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{s(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),r.useEffect(()=>{if(i){let e=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(e)}}},[i]);let m=()=>{a(!0)},h=()=>{a(!1),s(!1)};return n?e===`intent`?[o,p,{onFocus:Z(c,m),onBlur:Z(l,h),onMouseEnter:Z(u,m),onMouseLeave:Z(d,h),onTouchStart:Z(f,m)}]:[o,p,{}]:[!1,p,{}]}function Z(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Kt({page:e,...t}){let n=ke(),{nonce:i}=X(),{router:a}=Ut(),o=r.useMemo(()=>y(a.routes,e,a.basename),[a.routes,e,a.basename]);return o?(t.nonce==null&&i&&(t={...t,nonce:i}),n?r.createElement(Jt,{page:e,matches:o,...t}):r.createElement(Yt,{page:e,matches:o,...t})):null}function qt(e){let{manifest:t,routeModules:n}=X(),[i,a]=r.useState([]);return r.useEffect(()=>{let r=!1;return Lt(e,t,n).then(e=>{r||a(e)}),()=>{r=!0}},[e,t,n]),i}function Jt({page:e,matches:t,...n}){let i=V(),{future:a}=X(),{basename:o}=Ut(),s=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=Nt(e,o,a.v8_trailingSlashAwareDataRequests,`rsc`),r=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?r=!0:s.push(e.route.id);return r&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[o,a.v8_trailingSlashAwareDataRequests,e,i,t]);return r.createElement(r.Fragment,null,s.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Yt({page:e,matches:t,...n}){let i=V(),{future:a,manifest:o,routeModules:s}=X(),{basename:c}=Ut(),{loaderData:l,matches:u}=Wt(),d=r.useMemo(()=>Rt(e,t,u,o,i,`data`),[e,t,u,o,i]),f=r.useMemo(()=>Rt(e,t,u,o,i,`assets`),[e,t,u,o,i]),p=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=new Set,r=!1;if(t.forEach(e=>{let t=o.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?r=!0:n.add(e.route.id))}),n.size===0)return[];let u=Nt(e,c,a.v8_trailingSlashAwareDataRequests,`data`);return r&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,a.v8_trailingSlashAwareDataRequests,l,i,o,d,t,e,s]),m=r.useMemo(()=>zt(f,o),[f,o]),h=qt(f);return r.createElement(r.Fragment,null,p.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>r.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>r.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Xt(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}r.Component;var Zt=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Zt&&(window.__reactRouterVersion=`7.18.1`)}catch{}function Qt({basename:e,children:t,useTransitions:n,window:i}){let a=r.useRef();a.current??=l({window:i,v5Compat:!0});let o=a.current,[s,c]=r.useState({action:o.action,location:o.location}),u=r.useCallback(e=>{n===!1?c(e):r.startTransition(()=>c(e))},[n]);return r.useLayoutEffect(()=>o.listen(u),[o,u]),r.createElement(ht,{basename:e,children:t,location:s.location,navigationType:s.action,navigator:o,useTransitions:n})}function $t({basename:e,children:t,history:n,useTransitions:i}){let[a,o]=r.useState({action:n.action,location:n.location}),s=r.useCallback(e=>{i===!1?o(e):r.startTransition(()=>o(e))},[i]);return r.useLayoutEffect(()=>n.listen(s),[n,s]),r.createElement(ht,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:n,useTransitions:i})}$t.displayName=`unstable_HistoryRouter`;var en=r.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:a,reloadDocument:o,replace:s,mask:c,state:l,target:u,to:d,preventScrollReset:f,viewTransition:p,defaultShouldRevalidate:m,...h},g){let{basename:_,navigator:v,useTransitions:y}=r.useContext(I),b=typeof d==`string`&&i.test(d),x=Ce(d,_);d=x.to;let S=Re(d,{relative:a}),C=V(),w=null;if(c){let e=j(c,[],C.mask?C.mask.pathname:`/`,!0);_!==`/`&&(e.pathname=e.pathname===`/`?_:M([_,e.pathname])),w=v.createHref(e)}let[T,E,ee]=Gt(n,h),te=cn(d,{replace:s,mask:c,state:l,target:u,preventScrollReset:f,relative:a,viewTransition:p,defaultShouldRevalidate:m,useTransitions:y});function ne(t){e&&e(t),t.defaultPrevented||te(t)}let D=!(x.isExternal||o),O=r.createElement(`a`,{...h,...ee,href:(D?w:void 0)||x.absoluteURL||S,onClick:D?ne:e,ref:Xt(g,E),target:u,"data-discover":!b&&t===`render`?`true`:void 0});return T&&!b?r.createElement(r.Fragment,null,O,r.createElement(Kt,{page:S})):O});en.displayName=`Link`;var tn=r.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:i=!1,style:a,to:o,viewTransition:s,children:c,...l},u){let d=U(o,{relative:l.relative}),f=V(),p=r.useContext(F),{navigator:m,basename:h}=r.useContext(I),g=p!=null&&_n(d)&&s===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=A(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!i&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!i&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let E=typeof a==`function`?a(C):a;return r.createElement(en,{...l,"aria-current":w,className:T,ref:u,style:E,to:o,viewTransition:s},typeof c==`function`?c(C):c)});tn.displayName=`NavLink`;var nn=r.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:a,replace:o,state:s,method:c=G,action:l,onSubmit:u,relative:d,preventScrollReset:f,viewTransition:p,defaultShouldRevalidate:m,...h},g)=>{let{useTransitions:_}=r.useContext(I),v=fn(),y=pn(l,{relative:d}),b=c.toLowerCase()===`get`?`get`:`post`,x=typeof l==`string`&&i.test(l);return r.createElement(`form`,{ref:g,method:b,action:y,onSubmit:a?u:e=>{if(u&&u(e),e.defaultPrevented)return;e.preventDefault();let i=e.nativeEvent.submitter,a=i?.getAttribute(`formmethod`)||c,l=()=>v(i||e.currentTarget,{fetcherKey:t,method:a,navigate:n,replace:o,state:s,relative:d,preventScrollReset:f,viewTransition:p,defaultShouldRevalidate:m});_&&n!==!1?r.startTransition(()=>l()):l()},...h,"data-discover":!x&&e===`render`?`true`:void 0})});nn.displayName=`Form`;function rn({getKey:e,storageKey:t,...n}){let i=r.useContext(Y),{basename:a}=r.useContext(I),o=V(),s=ot();hn({getKey:e,storageKey:t});let c=r.useMemo(()=>{if(!i||!e)return null;let t=$(o,s,a,e);return t===o.key?null:t},[]);if(!i||i.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return n.nonce==null&&i?.nonce&&(n.nonce=i.nonce),r.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${jt(JSON.stringify(t||mn))}, ${jt(JSON.stringify(c))})`}})}rn.displayName=`ScrollRestoration`;function an(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function on(e){let t=r.useContext(P);return u(t,an(e)),t}function sn(e){let t=r.useContext(F);return u(t,an(e)),t}function cn(e,{target:t,replace:n,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l,useTransitions:u}={}){let d=H(),f=V(),p=U(e,{relative:s});return r.useCallback(m=>{if(St(m,t)){m.preventDefault();let t=n===void 0?h(f)===h(p):n,g=()=>d(e,{replace:t,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l});u?r.startTransition(()=>g()):g()}},[f,d,p,n,i,a,t,e,o,s,c,l,u])}function ln(e){d(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=r.useRef(Ct(e)),n=r.useRef(!1),i=V(),a=r.useMemo(()=>wt(i.search,n.current?null:t.current),[i.search]),o=H();return[a,r.useCallback((e,t)=>{let r=Ct(typeof e==`function`?e(new URLSearchParams(a)):e);n.current=!0,o(`?`+r,t)},[o,a])]}var un=0,dn=()=>`__${String(++un)}__`;function fn(){let{router:e}=on(`useSubmit`),{basename:t}=r.useContext(I),n=it(),i=e.fetch,a=e.navigate;return r.useCallback(async(e,r={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Ot(e,t);if(r.navigate===!1){let e=r.fetcherKey||dn();await i(e,n,r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,flushSync:r.flushSync})}else await a(r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,replace:r.replace,state:r.state,fromRouteId:n,flushSync:r.flushSync,viewTransition:r.viewTransition})},[i,a,t,n])}function pn(e,{relative:t}={}){let{basename:n}=r.useContext(I),i=r.useContext(R);u(i,`useFormAction must be used inside a RouteContext`);let[a]=i.matches.slice(-1),o={...U(e||`.`,{relative:t})},s=V();if(e==null){o.search=s.search;let e=new URLSearchParams(o.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();o.search=n?`?${n}`:``}}return(!e||e===`.`)&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(o.pathname=o.pathname===`/`?n:M([n,o.pathname])),h(o)}var mn=`react-router-scroll-positions`,Q={};function $(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:A(e.pathname,n)||e.pathname},t)),i??=e.key,i}function hn({getKey:e,storageKey:t}={}){let{router:n}=on(`useScrollRestoration`),{restoreScrollPosition:i,preventScrollReset:a}=sn(`useScrollRestoration`),{basename:o}=r.useContext(I),s=V(),c=ot(),l=at();r.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),gn(r.useCallback(()=>{if(l.state===`idle`){let t=$(s,c,o,e);Q[t]=window.scrollY}try{sessionStorage.setItem(t||mn,JSON.stringify(Q))}catch(e){d(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,o,s,c,t])),typeof document<`u`&&(r.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||mn);e&&(Q=JSON.parse(e))}catch{}},[t]),r.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(Q,()=>window.scrollY,e?(t,n)=>$(t,n,o,e):void 0);return()=>t&&t()},[n,o,e]),r.useLayoutEffect(()=>{if(i!==!1){if(typeof i==`number`){window.scrollTo(0,i);return}try{if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{d(!1,`"${s.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[s,i,a]))}function gn(e,t){let{capture:n}=t||{};r.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function _n(e,{relative:t}={}){let n=r.useContext(Ae);u(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=on(`useViewTransitionState`),a=U(e,{relative:t});if(!n.isTransitioning)return!1;let o=A(n.currentLocation.pathname,i)||n.currentLocation.pathname,s=A(n.nextLocation.pathname,i)||n.nextLocation.pathname;return k(a.pathname,s)!=null||k(a.pathname,o)!=null}export{pt as a,V as c,ln as d,ft as i,H as l,en as n,mt as o,tn as r,gt as s,Qt as t,We as u};
|
|
3
|
+
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let p=V(),m;if(t){let e=typeof t==`string`?g(t):t;u(l===`/`||e.pathname?.startsWith(l),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${l}" but pathname "${e.pathname}" was given in the \`location\` prop.`),m=e}else m=p;let h=m.pathname||`/`,_=h;if(l!==`/`){let e=l.replace(/^\//,``).split(`/`);_=`/`+h.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let v=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):y(e,{pathname:_});d(f||v!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),d(v==null||v[v.length-1].route.element!==void 0||v[v.length-1].route.Component!==void 0||v[v.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let b=$e(v&&v.map(e=>Object.assign({},e,{params:Object.assign({},s,e.params),pathname:M([l,i.encodeLocation?i.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?l:M([l,i.encodeLocation?i.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),a,n);return t&&b?r.createElement(L.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...m},navigationType:`POP`}},b):b}function qe(){let e=st(),t=be(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i=`rgba(200,200,200, 0.5)`,a={padding:`0.5rem`,backgroundColor:i},o={padding:`2px 4px`,backgroundColor:i},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=r.createElement(r.Fragment,null,r.createElement(`p`,null,`💿 Hey developer 👋`),r.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,r.createElement(`code`,{style:o},`ErrorBoundary`),` or`,` `,r.createElement(`code`,{style:o},`errorElement`),` prop on your route.`)),r.createElement(r.Fragment,null,r.createElement(`h2`,null,`Unexpected Application Error!`),r.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?r.createElement(`pre`,{style:a},n):null,s)}var Je=r.createElement(qe,null),Ye=class extends r.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Le(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:r.createElement(R.Provider,{value:this.props.routeContext},r.createElement(z.Provider,{value:e,children:this.props.component}));return this.context?r.createElement(Ze,{error:e},t):t}};Ye.contextType=Oe;var Xe=new WeakMap;function Ze({children:e,error:t}){let{basename:n}=r.useContext(I);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Ie(t.digest);if(e){let i=Xe.get(t);if(i)throw i;let a=Ce(e.location,n),o=a.absoluteURL||a.to;if(De(o))throw Error(`Invalid redirect location`);if(Se&&!Xe.get(t))if(a.isExternal||e.reloadDocument)window.location.href=o;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Xe.set(t,n),n}return r.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function Qe({routeContext:e,match:t,children:n}){let i=r.useContext(P);return i&&i.static&&i.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=t.route.id),r.createElement(R.Provider,{value:e},n)}function $e(e,t=[],n){let i=n?.state;if(e==null){if(!i)return null;if(i.errors)e=i.matches;else if(t.length===0&&!i.initialized&&i.matches.length>0)e=i.matches;else return null}let a=e,o=i?.errors;if(o!=null){let e=a.findIndex(e=>e.route.id&&o?.[e.route.id]!==void 0);u(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(`,`)}`),a=a.slice(0,Math.min(a.length,e+1))}let s=!1,c=-1;if(n&&i){s=i.renderFallback;for(let e=0;e<a.length;e++){let t=a[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(c=e),t.route.id){let{loaderData:e,errors:r}=i,o=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||o){n.isStatic&&(s=!0),a=c>=0?a.slice(0,c+1):[a[0]];break}}}}let l=n?.onError,d=i&&l?(e,t)=>{l(e,{location:i.location,params:i.matches?.[0]?.params??{},pattern:xe(i.matches),errorInfo:t})}:void 0;return a.reduceRight((e,n,l)=>{let u,f=!1,p=null,m=null;i&&(u=o&&n.route.id?o[n.route.id]:void 0,p=n.route.errorElement||Je,s&&(c<0&&l===0?(ut(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):c===l&&(f=!0,m=n.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,l+1)),g=()=>{let t;return t=u?p:f?m:n.route.Component?r.createElement(n.route.Component,null):n.route.element?n.route.element:e,r.createElement(Qe,{match:n,routeContext:{outlet:e,matches:h,isDataRoute:i!=null},children:t})};return i&&(n.route.ErrorBoundary||n.route.errorElement||l===0)?r.createElement(Ye,{location:i.location,revalidation:i.revalidation,component:p,error:u,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:d}):g()},null)}function et(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tt(e){let t=r.useContext(P);return u(t,et(e)),t}function nt(e){let t=r.useContext(F);return u(t,et(e)),t}function rt(e){let t=r.useContext(R);return u(t,et(e)),t}function W(e){let t=rt(e),n=t.matches[t.matches.length-1];return u(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function it(){return W(`useRouteId`)}function at(){let e=nt(`useNavigation`);return r.useMemo(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function ot(){let{matches:e,loaderData:t}=nt(`useMatches`);return r.useMemo(()=>e.map(e=>x(e,t)),[e,t])}function st(){let e=r.useContext(z),t=nt(`useRouteError`),n=W(`useRouteError`);return e===void 0?t.errors?.[n]:e}function ct(){let{router:e}=tt(`useNavigate`),t=W(`useNavigate`),n=r.useRef(!1);return Be(()=>{n.current=!0}),r.useCallback(async(r,i={})=>{d(n.current,ze),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var lt={};function ut(e,t,n){!t&&!lt[e]&&(lt[e]=!0,d(!1,n))}r.memo(dt);function dt({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Ke(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function ft({to:e,replace:t,state:n,relative:i}){u(B(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:a}=r.useContext(I);d(!a,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=r.useContext(R),{pathname:s}=V(),c=H(),l=j(e,me(o),s,i===`path`),f=JSON.stringify(l);return r.useEffect(()=>{c(JSON.parse(f),{replace:t,state:n,relative:i})},[c,f,i,t,n]),null}function pt(e){return Ue(e.context)}function mt(e){u(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function ht({basename:e=`/`,children:t=null,location:n,navigationType:i=`POP`,navigator:a,static:o=!1,useTransitions:s}){u(!B(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=r.useMemo(()=>({basename:c,navigator:a,static:o,useTransitions:s,future:{}}),[c,a,o,s]);typeof n==`string`&&(n=g(n));let{pathname:f=`/`,search:p=``,hash:m=``,state:h=null,key:_=`default`,mask:v}=n,y=r.useMemo(()=>{let e=A(f,c);return e==null?null:{location:{pathname:e,search:p,hash:m,state:h,key:_,mask:v},navigationType:i}},[c,f,p,m,h,_,i,v]);return d(y!=null,`<Router basename="${c}"> is not able to match the URL "${f}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:r.createElement(I.Provider,{value:l},r.createElement(L.Provider,{children:t,value:y}))}function gt({children:e,location:t}){return Ge(_t(e),t)}r.Component;function _t(e,t=[]){let n=[];return r.Children.forEach(e,(e,i)=>{if(!r.isValidElement(e))return;let a=[...t,i];if(e.type===r.Fragment){n.push.apply(n,_t(e.props.children,a));return}u(e.type===mt,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),u(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let o={id:e.props.id||a.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=_t(e.props.children,a)),n.push(o)}),n}var G=`get`,K=`application/x-www-form-urlencoded`;function q(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function vt(e){return q(e)&&e.tagName.toLowerCase()===`button`}function yt(e){return q(e)&&e.tagName.toLowerCase()===`form`}function bt(e){return q(e)&&e.tagName.toLowerCase()===`input`}function xt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function St(e,t){return e.button===0&&(!t||t===`_self`)&&!xt(e)}function Ct(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function wt(e,t){let n=Ct(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var J=null;function Tt(){if(J===null)try{new FormData(document.createElement(`form`),0),J=!1}catch{J=!0}return J}var Et=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Dt(e){return e!=null&&!Et.has(e)?(d(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${K}"`),null):e}function Ot(e,t){let n,r,i,a,o;if(yt(e)){let o=e.getAttribute(`action`);r=o?A(o,t):null,n=e.getAttribute(`method`)||G,i=Dt(e.getAttribute(`enctype`))||K,a=new FormData(e)}else if(vt(e)||bt(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?A(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||G,i=Dt(e.getAttribute(`formenctype`))||Dt(o.getAttribute(`enctype`))||K,a=new FormData(o,e),!Tt()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(q(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=G,r=null,i=K,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var kt={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},At=/[&><\u2028\u2029]/g;function jt(e){return e.replace(At,e=>kt[e])}function Mt(e,t){if(e===!1||e==null)throw Error(t)}function Nt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&A(i.pathname,t)===`/`?i.pathname=`${N(t)}/_root.${r}`:i.pathname=`${N(i.pathname)}.${r}`,i}async function Pt(e,t){if(e.id in t)return t[e.id];try{let r=await n(()=>import(e.module),[]);return t[e.id]=r,r}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Ft(e){return e!=null&&typeof e.page==`string`}function It(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Lt(e,t,n){return Ht((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Pt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(It).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Rt(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function zt(e,t,{includeHydrateFallback:n}={}){return Bt(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Bt(e){return[...new Set(e)]}function Vt(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Ht(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Ft(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Vt(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Ut(){let e=r.useContext(P);return Mt(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Wt(){let e=r.useContext(F);return Mt(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Y=r.createContext(void 0);Y.displayName=`FrameworkContext`;function X(){let e=r.useContext(Y);return Mt(e,`You must render this element inside a <HydratedRouter> element`),e}function Gt(e,t){let n=r.useContext(Y),[i,a]=r.useState(!1),[o,s]=r.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=r.useRef(null);r.useEffect(()=>{if(e===`render`&&s(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{s(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),r.useEffect(()=>{if(i){let e=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(e)}}},[i]);let m=()=>{a(!0)},h=()=>{a(!1),s(!1)};return n?e===`intent`?[o,p,{onFocus:Z(c,m),onBlur:Z(l,h),onMouseEnter:Z(u,m),onMouseLeave:Z(d,h),onTouchStart:Z(f,m)}]:[o,p,{}]:[!1,p,{}]}function Z(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Kt({page:e,...t}){let n=ke(),{nonce:i}=X(),{router:a}=Ut(),o=r.useMemo(()=>y(a.routes,e,a.basename),[a.routes,e,a.basename]);return o?(t.nonce==null&&i&&(t={...t,nonce:i}),n?r.createElement(Jt,{page:e,matches:o,...t}):r.createElement(Yt,{page:e,matches:o,...t})):null}function qt(e){let{manifest:t,routeModules:n}=X(),[i,a]=r.useState([]);return r.useEffect(()=>{let r=!1;return Lt(e,t,n).then(e=>{r||a(e)}),()=>{r=!0}},[e,t,n]),i}function Jt({page:e,matches:t,...n}){let i=V(),{future:a}=X(),{basename:o}=Ut(),s=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=Nt(e,o,a.v8_trailingSlashAwareDataRequests,`rsc`),r=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?r=!0:s.push(e.route.id);return r&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[o,a.v8_trailingSlashAwareDataRequests,e,i,t]);return r.createElement(r.Fragment,null,s.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Yt({page:e,matches:t,...n}){let i=V(),{future:a,manifest:o,routeModules:s}=X(),{basename:c}=Ut(),{loaderData:l,matches:u}=Wt(),d=r.useMemo(()=>Rt(e,t,u,o,i,`data`),[e,t,u,o,i]),f=r.useMemo(()=>Rt(e,t,u,o,i,`assets`),[e,t,u,o,i]),p=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=new Set,r=!1;if(t.forEach(e=>{let t=o.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?r=!0:n.add(e.route.id))}),n.size===0)return[];let u=Nt(e,c,a.v8_trailingSlashAwareDataRequests,`data`);return r&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,a.v8_trailingSlashAwareDataRequests,l,i,o,d,t,e,s]),m=r.useMemo(()=>zt(f,o),[f,o]),h=qt(f);return r.createElement(r.Fragment,null,p.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>r.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>r.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Xt(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}r.Component;var Zt=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Zt&&(window.__reactRouterVersion=`7.18.1`)}catch{}function Qt({basename:e,children:t,useTransitions:n,window:i}){let a=r.useRef();a.current??=l({window:i,v5Compat:!0});let o=a.current,[s,c]=r.useState({action:o.action,location:o.location}),u=r.useCallback(e=>{n===!1?c(e):r.startTransition(()=>c(e))},[n]);return r.useLayoutEffect(()=>o.listen(u),[o,u]),r.createElement(ht,{basename:e,children:t,location:s.location,navigationType:s.action,navigator:o,useTransitions:n})}function $t({basename:e,children:t,history:n,useTransitions:i}){let[a,o]=r.useState({action:n.action,location:n.location}),s=r.useCallback(e=>{i===!1?o(e):r.startTransition(()=>o(e))},[i]);return r.useLayoutEffect(()=>n.listen(s),[n,s]),r.createElement(ht,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:n,useTransitions:i})}$t.displayName=`unstable_HistoryRouter`;var en=r.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:a,reloadDocument:o,replace:s,mask:c,state:l,target:u,to:d,preventScrollReset:f,viewTransition:p,defaultShouldRevalidate:m,...h},g){let{basename:_,navigator:v,useTransitions:y}=r.useContext(I),b=typeof d==`string`&&i.test(d),x=Ce(d,_);d=x.to;let S=Re(d,{relative:a}),C=V(),w=null;if(c){let e=j(c,[],C.mask?C.mask.pathname:`/`,!0);_!==`/`&&(e.pathname=e.pathname===`/`?_:M([_,e.pathname])),w=v.createHref(e)}let[T,E,ee]=Gt(n,h),te=cn(d,{replace:s,mask:c,state:l,target:u,preventScrollReset:f,relative:a,viewTransition:p,defaultShouldRevalidate:m,useTransitions:y});function ne(t){e&&e(t),t.defaultPrevented||te(t)}let D=!(x.isExternal||o),O=r.createElement(`a`,{...h,...ee,href:(D?w:void 0)||x.absoluteURL||S,onClick:D?ne:e,ref:Xt(g,E),target:u,"data-discover":!b&&t===`render`?`true`:void 0});return T&&!b?r.createElement(r.Fragment,null,O,r.createElement(Kt,{page:S})):O});en.displayName=`Link`;var tn=r.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:i=!1,style:a,to:o,viewTransition:s,children:c,...l},u){let d=U(o,{relative:l.relative}),f=V(),p=r.useContext(F),{navigator:m,basename:h}=r.useContext(I),g=p!=null&&_n(d)&&s===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=A(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!i&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!i&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let E=typeof a==`function`?a(C):a;return r.createElement(en,{...l,"aria-current":w,className:T,ref:u,style:E,to:o,viewTransition:s},typeof c==`function`?c(C):c)});tn.displayName=`NavLink`;var nn=r.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:a,replace:o,state:s,method:c=G,action:l,onSubmit:u,relative:d,preventScrollReset:f,viewTransition:p,defaultShouldRevalidate:m,...h},g)=>{let{useTransitions:_}=r.useContext(I),v=fn(),y=pn(l,{relative:d}),b=c.toLowerCase()===`get`?`get`:`post`,x=typeof l==`string`&&i.test(l);return r.createElement(`form`,{ref:g,method:b,action:y,onSubmit:a?u:e=>{if(u&&u(e),e.defaultPrevented)return;e.preventDefault();let i=e.nativeEvent.submitter,a=i?.getAttribute(`formmethod`)||c,l=()=>v(i||e.currentTarget,{fetcherKey:t,method:a,navigate:n,replace:o,state:s,relative:d,preventScrollReset:f,viewTransition:p,defaultShouldRevalidate:m});_&&n!==!1?r.startTransition(()=>l()):l()},...h,"data-discover":!x&&e===`render`?`true`:void 0})});nn.displayName=`Form`;function rn({getKey:e,storageKey:t,...n}){let i=r.useContext(Y),{basename:a}=r.useContext(I),o=V(),s=ot();hn({getKey:e,storageKey:t});let c=r.useMemo(()=>{if(!i||!e)return null;let t=$(o,s,a,e);return t===o.key?null:t},[]);if(!i||i.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return n.nonce==null&&i?.nonce&&(n.nonce=i.nonce),r.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${jt(JSON.stringify(t||mn))}, ${jt(JSON.stringify(c))})`}})}rn.displayName=`ScrollRestoration`;function an(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function on(e){let t=r.useContext(P);return u(t,an(e)),t}function sn(e){let t=r.useContext(F);return u(t,an(e)),t}function cn(e,{target:t,replace:n,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l,useTransitions:u}={}){let d=H(),f=V(),p=U(e,{relative:s});return r.useCallback(m=>{if(St(m,t)){m.preventDefault();let t=n===void 0?h(f)===h(p):n,g=()=>d(e,{replace:t,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l});u?r.startTransition(()=>g()):g()}},[f,d,p,n,i,a,t,e,o,s,c,l,u])}function ln(e){d(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=r.useRef(Ct(e)),n=r.useRef(!1),i=V(),a=r.useMemo(()=>wt(i.search,n.current?null:t.current),[i.search]),o=H();return[a,r.useCallback((e,t)=>{let r=Ct(typeof e==`function`?e(new URLSearchParams(a)):e);n.current=!0,o(`?`+r,t)},[o,a])]}var un=0,dn=()=>`__${String(++un)}__`;function fn(){let{router:e}=on(`useSubmit`),{basename:t}=r.useContext(I),n=it(),i=e.fetch,a=e.navigate;return r.useCallback(async(e,r={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Ot(e,t);if(r.navigate===!1){let e=r.fetcherKey||dn();await i(e,n,r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,flushSync:r.flushSync})}else await a(r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,replace:r.replace,state:r.state,fromRouteId:n,flushSync:r.flushSync,viewTransition:r.viewTransition})},[i,a,t,n])}function pn(e,{relative:t}={}){let{basename:n}=r.useContext(I),i=r.useContext(R);u(i,`useFormAction must be used inside a RouteContext`);let[a]=i.matches.slice(-1),o={...U(e||`.`,{relative:t})},s=V();if(e==null){o.search=s.search;let e=new URLSearchParams(o.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();o.search=n?`?${n}`:``}}return(!e||e===`.`)&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(o.pathname=o.pathname===`/`?n:M([n,o.pathname])),h(o)}var mn=`react-router-scroll-positions`,Q={};function $(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:A(e.pathname,n)||e.pathname},t)),i??=e.key,i}function hn({getKey:e,storageKey:t}={}){let{router:n}=on(`useScrollRestoration`),{restoreScrollPosition:i,preventScrollReset:a}=sn(`useScrollRestoration`),{basename:o}=r.useContext(I),s=V(),c=ot(),l=at();r.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),gn(r.useCallback(()=>{if(l.state===`idle`){let t=$(s,c,o,e);Q[t]=window.scrollY}try{sessionStorage.setItem(t||mn,JSON.stringify(Q))}catch(e){d(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,o,s,c,t])),typeof document<`u`&&(r.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||mn);e&&(Q=JSON.parse(e))}catch{}},[t]),r.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(Q,()=>window.scrollY,e?(t,n)=>$(t,n,o,e):void 0);return()=>t&&t()},[n,o,e]),r.useLayoutEffect(()=>{if(i!==!1){if(typeof i==`number`){window.scrollTo(0,i);return}try{if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{d(!1,`"${s.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[s,i,a]))}function gn(e,t){let{capture:n}=t||{};r.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function _n(e,{relative:t}={}){let n=r.useContext(Ae);u(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=on(`useViewTransitionState`),a=U(e,{relative:t});if(!n.isTransitioning)return!1;let o=A(n.currentLocation.pathname,i)||n.currentLocation.pathname,s=A(n.nextLocation.pathname,i)||n.nextLocation.pathname;return k(a.pathname,s)!=null||k(a.pathname,o)!=null}export{pt as a,B as c,We as d,ln as f,ft as i,V as l,en as n,mt as o,tn as r,gt as s,Qt as t,H as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>d,errors:()=>i,grid:()=>a,notifications:()=>c,palette:()=>n,shortcuts:()=>o,templateDialog:()=>u,templates:()=>l,toasts:()=>r,update:()=>s}),n={label:`Command palette`,searchPlaceholder:`Search projects, commands, jobs...`,noResults:`No results found.`,activeBadge:`active`,groups:{projects:`Projects`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop Analytics`,projectAnalytics:`Project Analytics`,activityFeed:`Activity Feed`,desktopSettings:`Desktop Settings`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Collapse left sidebar (keep pinned)`,unpinLeft:`Unpin left sidebar`,pinLeftOpen:`Pin left sidebar open`,collapseRightKeepPinned:`Collapse right sidebar (keep pinned)`,unpinRight:`Unpin right sidebar`,pinRightOpen:`Pin right sidebar open`},footer:{navigate:`navigate`,select:`select`,close:`close`}},r={queued:`{{name}} queued`,queuing:`Queuing {{name}}...`},i={spawnFailed:`Failed to spawn command`},a={sections:{discovery:`Discovery`,discoverySubtitle:`Explore & define your product`,delivery:`Delivery`,deliverySubtitle:`Build & ship features`,others:`Others`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No commands installed`,hint:`Run <1>/setup</1> in Claude Code to install specrails commands`},runs_one:`{{count}} run`,runs_other:`{{count}} runs`,tooltip:{opensWizard:`Opens guided wizard`}},o={title:`Keyboard Shortcuts`,subtitle:`Press <1>?</1> anywhere to toggle this panel`,categories:{general:`General`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Show keyboard shortcuts`,closeModal:`Close modal / sidebar`,toggleRightSidebar:`Toggle right sidebar`,toggleLeftSidebar:`Toggle left sidebar`,toggleTerminal:`Toggle terminal panel`,toggleAgent:`Toggle agent chat`,navigateProjectPageWithAgents:`Navigate to project page (Dashboard/Jobs/Analytics/Agents/Settings)`,navigateProjectPage:`Navigate to project page (Dashboard/Jobs/Analytics/Settings)`,switchProject:`Switch to project by position`,goDashboard:`Go to Dashboard`,goActivity:`Go to Activity / Jobs`,goAnalytics:`Go to Analytics`,goSettings:`Go to Settings`,nextItem:`Next item in list`,prevItem:`Previous item in list`}},s={title:{available:`Update available`,downloading:`Downloading update`,installing:`Installing update`,ready:`Update ready`,error:`Update failed`},desc:{available:`A new version of Specrails is ready to install.`,fetching:`Fetching {{size}}…`,progress:`{{percent}}% · {{downloaded}} of {{total}}`,installing:`Verifying signature and finishing up…`,ready:`Restart to launch version {{version}}.`,errorFallback:`Couldn’t complete the update. Please try again.`},pill:{downloading:`Downloading`,installing:`Installing`,ready:`Ready`},actions:{restart:`Restart`,later:`Later`,update:`Update`,installing:`Installing…`,tryAgain:`Try again`,dismiss:`Dismiss`},mockReady:`Mock update ready — restart skipped`,errors:{installFailed:`Could not install update`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},c={jobCompleted:`Job completed`,jobFailed:`Job failed`,unknownCommand:`Unknown command`},l={emptyState:{title:`No templates yet.`,hint:`Save command sequences to run them with one click.`},createButton:`Create template`,newButton:`New template`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,moreCommands_one:`+{{count}} more`,moreCommands_other:`+{{count}} more`,run:`Run`,queuing:`Queuing…`,aria:{edit:`Edit template`,delete:`Delete template`},confirmDelete:`Delete template "{{name}}"?`,toasts:{queuedJobs_one:`Queued {{count}} job from "{{name}}"`,queuedJobs_other:`Queued {{count}} jobs from "{{name}}"`,deleted:`Template "{{name}}" deleted`},errors:{runFailed:`Failed to run template`,deleteFailed:`Failed to delete template`}},u={editTitle:`Edit Template`,newTitle:`New Template`,nameLabel:`Name`,namePlaceholder:`e.g. Full pipeline`,descriptionLabel:`Description (optional)`,descriptionPlaceholder:`What does this rail do?`,stepsLabel:`Steps (commands or free prompts)`,stepPlaceholder:`Select a command or type a free prompt...`,aria:{moveUp:`Move up`,removeStep:`Remove step`},update:`Update`,create:`Create`,errors:{nameRequired:`Name is required`,stepRequired:`At least one step is required`,saveFailed:`Failed to save template`},toasts:{updated:`Template updated`,created:`Template created`}},d={palette:n,toasts:r,errors:i,grid:a,shortcuts:o,update:s,notifications:c,templates:l,templateDialog:u};export{t};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>d,errors:()=>i,grid:()=>a,notifications:()=>c,palette:()=>n,shortcuts:()=>o,templateDialog:()=>u,templates:()=>l,toasts:()=>r,update:()=>s}),n={label:`Command palette`,searchPlaceholder:`Search projects, commands, jobs...`,noResults:`No results found.`,activeBadge:`active`,groups:{projects:`Projects`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop Analytics`,projectAnalytics:`Project Analytics`,activityFeed:`Activity Feed`,desktopSettings:`Desktop Settings`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Collapse left sidebar (keep pinned)`,unpinLeft:`Unpin left sidebar`,pinLeftOpen:`Pin left sidebar open`,collapseRightKeepPinned:`Collapse right sidebar (keep pinned)`,unpinRight:`Unpin right sidebar`,pinRightOpen:`Pin right sidebar open`},footer:{navigate:`navigate`,select:`select`,close:`close`}},r={queued:`{{name}} queued`,queuing:`Queuing {{name}}...`},i={spawnFailed:`Failed to spawn command`},a={sections:{discovery:`Discovery`,discoverySubtitle:`Explore & define your product`,delivery:`Delivery`,deliverySubtitle:`Build & ship features`,others:`Others`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No commands installed`,hint:`Run <1>/setup</1> in Claude Code to install specrails commands`},runs_one:`{{count}} run`,runs_other:`{{count}} runs`,tooltip:{opensWizard:`Opens guided wizard`}},o={title:`Keyboard Shortcuts`,subtitle:`Press <1>?</1> anywhere to toggle this panel`,categories:{general:`General`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Show keyboard shortcuts`,closeModal:`Close modal / sidebar`,toggleRightSidebar:`Toggle right sidebar`,toggleLeftSidebar:`Toggle left sidebar`,toggleTerminal:`Toggle terminal panel`,toggleAgent:`Toggle agent chat`,navigateProjectPageWithAgents:`Navigate to project page (Dashboard/Jobs/Analytics/Agents/Settings)`,navigateProjectPage:`Navigate to project page (Dashboard/Jobs/Analytics/Settings)`,switchProject:`Switch to project by position`,goDashboard:`Go to Dashboard`,goActivity:`Go to Activity / Jobs`,goAnalytics:`Go to Analytics`,goSettings:`Go to Settings`,nextItem:`Next item in list`,prevItem:`Previous item in list`}},s={title:{available:`Update available`,downloading:`Downloading update`,installing:`Installing update`,ready:`Update ready`,error:`Update failed`},desc:{available:`A new version of Specrails is ready to install.`,fetching:`Fetching {{size}}…`,progress:`{{percent}}% · {{downloaded}} of {{total}}`,installing:`Verifying signature and finishing up…`,ready:`Restart to launch version {{version}}.`,errorFallback:`Couldn’t complete the update. Please try again.`},pill:{downloading:`Downloading`,installing:`Installing`,ready:`Ready`},actions:{restart:`Restart`,later:`Later`,update:`Update`,installing:`Installing…`,tryAgain:`Try again`,dismiss:`Dismiss`},mockReady:`Mock update ready — restart skipped`,errors:{installFailed:`Could not install update`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},c={jobCompleted:`Job completed`,jobFailed:`Job failed`,jobStuck:`Run seems stuck`,jobStuckBody_one:`No activity for {{count}} minute — open it to check`,jobStuckBody_other:`No activity for {{count}} minutes — open it to check`,unknownCommand:`Unknown command`},l={emptyState:{title:`No templates yet.`,hint:`Save command sequences to run them with one click.`},createButton:`Create template`,newButton:`New template`,steps_one:`{{count}} step`,steps_other:`{{count}} steps`,moreCommands_one:`+{{count}} more`,moreCommands_other:`+{{count}} more`,run:`Run`,queuing:`Queuing…`,aria:{edit:`Edit template`,delete:`Delete template`},confirmDelete:`Delete template "{{name}}"?`,toasts:{queuedJobs_one:`Queued {{count}} job from "{{name}}"`,queuedJobs_other:`Queued {{count}} jobs from "{{name}}"`,deleted:`Template "{{name}}" deleted`},errors:{runFailed:`Failed to run template`,deleteFailed:`Failed to delete template`}},u={editTitle:`Edit Template`,newTitle:`New Template`,nameLabel:`Name`,namePlaceholder:`e.g. Full pipeline`,descriptionLabel:`Description (optional)`,descriptionPlaceholder:`What does this rail do?`,stepsLabel:`Steps (commands or free prompts)`,stepPlaceholder:`Select a command or type a free prompt...`,aria:{moveUp:`Move up`,removeStep:`Remove step`},update:`Update`,create:`Create`,errors:{nameRequired:`Name is required`,stepRequired:`At least one step is required`,saveFailed:`Failed to save template`},toasts:{updated:`Template updated`,created:`Template created`}},d={palette:n,toasts:r,errors:i,grid:a,shortcuts:o,update:s,notifications:c,templates:l,templateDialog:u};export{t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`Paleta de comandos`,searchPlaceholder:`Pesquisar projetos, comandos, jobs...`,noResults:`Nenhum resultado encontrado.`,activeBadge:`ativo`,groups:{projects:`Projetos`,spec:`Spec`,jobs:`Jobs`,navigation:`Navegação`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Análises do Desktop`,projectAnalytics:`Análises do projeto`,activityFeed:`Feed de atividade`,desktopSettings:`Definições do Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Recolher barra lateral esquerda (manter afixada)`,unpinLeft:`Desafixar barra lateral esquerda`,pinLeftOpen:`Afixar barra lateral esquerda aberta`,collapseRightKeepPinned:`Recolher barra lateral direita (manter afixada)`,unpinRight:`Desafixar barra lateral direita`,pinRightOpen:`Afixar barra lateral direita aberta`},footer:{navigate:`navegar`,select:`selecionar`,close:`fechar`}},t={queued:`{{name}} em fila`,queuing:`A colocar {{name}} em fila...`},n={spawnFailed:`Falha ao iniciar o comando`},r={sections:{discovery:`Descoberta`,discoverySubtitle:`Explore e defina o seu produto`,delivery:`Entrega`,deliverySubtitle:`Construa e lance funcionalidades`,others:`Outros`},displayNames:{proposeSpec:`Propor personalizada`,updateBacklog:`Propor automaticamente`,productBacklog:`Seleção automática de Specs`},emptyState:{title:`Nenhum comando instalado`,hint:`Execute <1>/setup</1> no Claude Code para instalar os comandos specrails`},runs_one:`{{count}} execução`,runs_other:`{{count}} execuções`,tooltip:{opensWizard:`Abre o assistente guiado`}},i={title:`Atalhos de teclado`,subtitle:`Prima <1>?</1> em qualquer lugar para alternar este painel`,categories:{general:`Geral`,navigation:`Navegação`,actions:`Ações`},items:{showCheatsheet:`Mostrar atalhos de teclado`,closeModal:`Fechar modal / barra lateral`,toggleRightSidebar:`Alternar barra lateral direita`,toggleLeftSidebar:`Alternar barra lateral esquerda`,toggleTerminal:`Alternar painel do terminal`,toggleAgent:`Mostrar/ocultar chat do agente`,navigateProjectPageWithAgents:`Navegar para página do projeto (Dashboard/Jobs/Análises/Agentes/Definições)`,navigateProjectPage:`Navegar para página do projeto (Dashboard/Jobs/Análises/Definições)`,switchProject:`Mudar de projeto por posição`,goDashboard:`Ir para o Dashboard`,goActivity:`Ir para Atividade / Jobs`,goAnalytics:`Ir para Análises`,goSettings:`Ir para Definições`,nextItem:`Item seguinte na lista`,prevItem:`Item anterior na lista`}},a={title:{available:`Atualização disponível`,downloading:`A transferir atualização`,installing:`A instalar atualização`,ready:`Atualização pronta`,error:`Falha na atualização`},desc:{available:`Está pronta a instalar uma nova versão do Specrails.`,fetching:`A obter {{size}}…`,progress:`{{percent}}% · {{downloaded}} de {{total}}`,installing:`A verificar a assinatura e a concluir…`,ready:`Reinicie para abrir a versão {{version}}.`,errorFallback:`Não foi possível concluir a atualização. Tente novamente.`},pill:{downloading:`A transferir`,installing:`A instalar`,ready:`Pronta`},actions:{restart:`Reiniciar`,later:`Mais tarde`,update:`Atualizar`,installing:`A instalar…`,tryAgain:`Tentar novamente`,dismiss:`Dispensar`},mockReady:`Atualização simulada pronta — reinício ignorado`,errors:{installFailed:`Não foi possível instalar a atualização`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job concluído`,jobFailed:`Job falhou`,unknownCommand:`Comando desconhecido`},s={emptyState:{title:`Ainda não há templates.`,hint:`Guarde sequências de comandos para as executar com um clique.`},createButton:`Criar template`,newButton:`Novo template`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,moreCommands_one:`+{{count}} mais`,moreCommands_other:`+{{count}} mais`,run:`Executar`,queuing:`A colocar em fila…`,aria:{edit:`Editar template`,delete:`Eliminar template`},confirmDelete:`Eliminar o template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job em fila a partir de "{{name}}"`,queuedJobs_other:`{{count}} jobs em fila a partir de "{{name}}"`,deleted:`Template "{{name}}" eliminado`},errors:{runFailed:`Falha ao executar o template`,deleteFailed:`Falha ao eliminar o template`}},c={editTitle:`Editar template`,newTitle:`Novo template`,nameLabel:`Nome`,namePlaceholder:`ex.: Pipeline completa`,descriptionLabel:`Descrição (opcional)`,descriptionPlaceholder:`O que faz este rail?`,stepsLabel:`Passos (comandos ou prompts livres)`,stepPlaceholder:`Selecione um comando ou escreva um prompt livre...`,aria:{moveUp:`Mover para cima`,removeStep:`Remover passo`},update:`Atualizar`,create:`Criar`,errors:{nameRequired:`O nome é obrigatório`,stepRequired:`É necessário pelo menos um passo`,saveFailed:`Falha ao guardar o template`},toasts:{updated:`Template atualizado`,created:`Template criado`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`Paleta de comandos`,searchPlaceholder:`Pesquisar projetos, comandos, jobs...`,noResults:`Nenhum resultado encontrado.`,activeBadge:`ativo`,groups:{projects:`Projetos`,spec:`Spec`,jobs:`Jobs`,navigation:`Navegação`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Análises do Desktop`,projectAnalytics:`Análises do projeto`,activityFeed:`Feed de atividade`,desktopSettings:`Definições do Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Recolher barra lateral esquerda (manter afixada)`,unpinLeft:`Desafixar barra lateral esquerda`,pinLeftOpen:`Afixar barra lateral esquerda aberta`,collapseRightKeepPinned:`Recolher barra lateral direita (manter afixada)`,unpinRight:`Desafixar barra lateral direita`,pinRightOpen:`Afixar barra lateral direita aberta`},footer:{navigate:`navegar`,select:`selecionar`,close:`fechar`}},t={queued:`{{name}} em fila`,queuing:`A colocar {{name}} em fila...`},n={spawnFailed:`Falha ao iniciar o comando`},r={sections:{discovery:`Descoberta`,discoverySubtitle:`Explore e defina o seu produto`,delivery:`Entrega`,deliverySubtitle:`Construa e lance funcionalidades`,others:`Outros`},displayNames:{proposeSpec:`Propor personalizada`,updateBacklog:`Propor automaticamente`,productBacklog:`Seleção automática de Specs`},emptyState:{title:`Nenhum comando instalado`,hint:`Execute <1>/setup</1> no Claude Code para instalar os comandos specrails`},runs_one:`{{count}} execução`,runs_other:`{{count}} execuções`,tooltip:{opensWizard:`Abre o assistente guiado`}},i={title:`Atalhos de teclado`,subtitle:`Prima <1>?</1> em qualquer lugar para alternar este painel`,categories:{general:`Geral`,navigation:`Navegação`,actions:`Ações`},items:{showCheatsheet:`Mostrar atalhos de teclado`,closeModal:`Fechar modal / barra lateral`,toggleRightSidebar:`Alternar barra lateral direita`,toggleLeftSidebar:`Alternar barra lateral esquerda`,toggleTerminal:`Alternar painel do terminal`,toggleAgent:`Mostrar/ocultar chat do agente`,navigateProjectPageWithAgents:`Navegar para página do projeto (Dashboard/Jobs/Análises/Agentes/Definições)`,navigateProjectPage:`Navegar para página do projeto (Dashboard/Jobs/Análises/Definições)`,switchProject:`Mudar de projeto por posição`,goDashboard:`Ir para o Dashboard`,goActivity:`Ir para Atividade / Jobs`,goAnalytics:`Ir para Análises`,goSettings:`Ir para Definições`,nextItem:`Item seguinte na lista`,prevItem:`Item anterior na lista`}},a={title:{available:`Atualização disponível`,downloading:`A transferir atualização`,installing:`A instalar atualização`,ready:`Atualização pronta`,error:`Falha na atualização`},desc:{available:`Está pronta a instalar uma nova versão do Specrails.`,fetching:`A obter {{size}}…`,progress:`{{percent}}% · {{downloaded}} de {{total}}`,installing:`A verificar a assinatura e a concluir…`,ready:`Reinicie para abrir a versão {{version}}.`,errorFallback:`Não foi possível concluir a atualização. Tente novamente.`},pill:{downloading:`A transferir`,installing:`A instalar`,ready:`Pronta`},actions:{restart:`Reiniciar`,later:`Mais tarde`,update:`Atualizar`,installing:`A instalar…`,tryAgain:`Tentar novamente`,dismiss:`Dispensar`},mockReady:`Atualização simulada pronta — reinício ignorado`,errors:{installFailed:`Não foi possível instalar a atualização`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job concluído`,jobFailed:`Job falhou`,jobStuck:`A execução parece travada`,jobStuckBody_one:`Sem atividade há {{count}} minuto — abra para verificar`,jobStuckBody_other:`Sem atividade há {{count}} minutos — abra para verificar`,unknownCommand:`Comando desconhecido`},s={emptyState:{title:`Ainda não há templates.`,hint:`Guarde sequências de comandos para as executar com um clique.`},createButton:`Criar template`,newButton:`Novo template`,steps_one:`{{count}} passo`,steps_other:`{{count}} passos`,moreCommands_one:`+{{count}} mais`,moreCommands_other:`+{{count}} mais`,run:`Executar`,queuing:`A colocar em fila…`,aria:{edit:`Editar template`,delete:`Eliminar template`},confirmDelete:`Eliminar o template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job em fila a partir de "{{name}}"`,queuedJobs_other:`{{count}} jobs em fila a partir de "{{name}}"`,deleted:`Template "{{name}}" eliminado`},errors:{runFailed:`Falha ao executar o template`,deleteFailed:`Falha ao eliminar o template`}},c={editTitle:`Editar template`,newTitle:`Novo template`,nameLabel:`Nome`,namePlaceholder:`ex.: Pipeline completa`,descriptionLabel:`Descrição (opcional)`,descriptionPlaceholder:`O que faz este rail?`,stepsLabel:`Passos (comandos ou prompts livres)`,stepPlaceholder:`Selecione um comando ou escreva um prompt livre...`,aria:{moveUp:`Mover para cima`,removeStep:`Remover passo`},update:`Atualizar`,create:`Criar`,errors:{nameRequired:`O nome é obrigatório`,stepRequired:`É necessário pelo menos um passo`,saveFailed:`Falha ao guardar o template`},toasts:{updated:`Template atualizado`,created:`Template criado`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`Befehlspalette`,searchPlaceholder:`Projekte, Befehle, Jobs durchsuchen...`,noResults:`Keine Ergebnisse gefunden.`,activeBadge:`aktiv`,groups:{projects:`Projekte`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop-Analytics`,projectAnalytics:`Projekt-Analytics`,activityFeed:`Aktivitäts-Feed`,desktopSettings:`Desktop-Einstellungen`,docs:`Doku`},sidebar:{collapseLeftKeepPinned:`Linke Seitenleiste einklappen (angepinnt lassen)`,unpinLeft:`Linke Seitenleiste lösen`,pinLeftOpen:`Linke Seitenleiste offen anpinnen`,collapseRightKeepPinned:`Rechte Seitenleiste einklappen (angepinnt lassen)`,unpinRight:`Rechte Seitenleiste lösen`,pinRightOpen:`Rechte Seitenleiste offen anpinnen`},footer:{navigate:`navigieren`,select:`auswählen`,close:`schließen`}},t={queued:`{{name}} eingereiht`,queuing:`{{name}} wird eingereiht...`},n={spawnFailed:`Befehl konnte nicht gestartet werden`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Produkt erkunden & definieren`,delivery:`Delivery`,deliverySubtitle:`Features bauen & ausliefern`,others:`Sonstige`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`Keine Befehle installiert`,hint:`Führe <1>/setup</1> in Claude Code aus, um die specrails-Befehle zu installieren`},runs_one:`{{count}} Lauf`,runs_other:`{{count}} Läufe`,tooltip:{opensWizard:`Öffnet einen geführten Assistenten`}},i={title:`Tastaturkürzel`,subtitle:`Drücke an beliebiger Stelle <1>?</1>, um dieses Panel umzuschalten`,categories:{general:`Allgemein`,navigation:`Navigation`,actions:`Aktionen`},items:{showCheatsheet:`Tastaturkürzel anzeigen`,closeModal:`Modal / Seitenleiste schließen`,toggleRightSidebar:`Rechte Seitenleiste umschalten`,toggleLeftSidebar:`Linke Seitenleiste umschalten`,toggleTerminal:`Terminal-Panel umschalten`,toggleAgent:`Agent-Chat umschalten`,navigateProjectPageWithAgents:`Zu Projektseite navigieren (Dashboard/Jobs/Analytics/Agenten/Einstellungen)`,navigateProjectPage:`Zu Projektseite navigieren (Dashboard/Jobs/Analytics/Einstellungen)`,switchProject:`Projekt nach Position wechseln`,goDashboard:`Zum Dashboard`,goActivity:`Zu Aktivität / Jobs`,goAnalytics:`Zu Analytics`,goSettings:`Zu den Einstellungen`,nextItem:`Nächstes Listenelement`,prevItem:`Vorheriges Listenelement`}},a={title:{available:`Update verfügbar`,downloading:`Update wird heruntergeladen`,installing:`Update wird installiert`,ready:`Update bereit`,error:`Update fehlgeschlagen`},desc:{available:`Eine neue Version von Specrails ist bereit zur Installation.`,fetching:`Lade {{size}}…`,progress:`{{percent}} % · {{downloaded}} von {{total}}`,installing:`Signatur wird geprüft und abgeschlossen…`,ready:`Neu starten, um Version {{version}} zu starten.`,errorFallback:`Update konnte nicht abgeschlossen werden. Bitte erneut versuchen.`},pill:{downloading:`Wird heruntergeladen`,installing:`Wird installiert`,ready:`Bereit`},actions:{restart:`Neu starten`,later:`Später`,update:`Aktualisieren`,installing:`Wird installiert…`,tryAgain:`Erneut versuchen`,dismiss:`Schließen`},mockReady:`Mock-Update bereit – Neustart übersprungen`,errors:{installFailed:`Update konnte nicht installiert werden`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job abgeschlossen`,jobFailed:`Job fehlgeschlagen`,unknownCommand:`Unbekannter Befehl`},s={emptyState:{title:`Noch keine Vorlagen.`,hint:`Speichere Befehlssequenzen, um sie mit einem Klick auszuführen.`},createButton:`Vorlage erstellen`,newButton:`Neue Vorlage`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,moreCommands_one:`+{{count}} weiterer`,moreCommands_other:`+{{count}} weitere`,run:`Ausführen`,queuing:`Wird eingereiht…`,aria:{edit:`Vorlage bearbeiten`,delete:`Vorlage löschen`},confirmDelete:`Vorlage „{{name}}“ löschen?`,toasts:{queuedJobs_one:`{{count}} Job aus „{{name}}“ eingereiht`,queuedJobs_other:`{{count}} Jobs aus „{{name}}“ eingereiht`,deleted:`Vorlage „{{name}}“ gelöscht`},errors:{runFailed:`Vorlage konnte nicht ausgeführt werden`,deleteFailed:`Vorlage konnte nicht gelöscht werden`}},c={editTitle:`Vorlage bearbeiten`,newTitle:`Neue Vorlage`,nameLabel:`Name`,namePlaceholder:`z. B. Komplette Pipeline`,descriptionLabel:`Beschreibung (optional)`,descriptionPlaceholder:`Was macht dieses Rail?`,stepsLabel:`Schritte (Befehle oder freie Prompts)`,stepPlaceholder:`Befehl auswählen oder freien Prompt eingeben...`,aria:{moveUp:`Nach oben verschieben`,removeStep:`Schritt entfernen`},update:`Aktualisieren`,create:`Erstellen`,errors:{nameRequired:`Name ist erforderlich`,stepRequired:`Mindestens ein Schritt ist erforderlich`,saveFailed:`Vorlage konnte nicht gespeichert werden`},toasts:{updated:`Vorlage aktualisiert`,created:`Vorlage erstellt`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`Befehlspalette`,searchPlaceholder:`Projekte, Befehle, Jobs durchsuchen...`,noResults:`Keine Ergebnisse gefunden.`,activeBadge:`aktiv`,groups:{projects:`Projekte`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Desktop-Analytics`,projectAnalytics:`Projekt-Analytics`,activityFeed:`Aktivitäts-Feed`,desktopSettings:`Desktop-Einstellungen`,docs:`Doku`},sidebar:{collapseLeftKeepPinned:`Linke Seitenleiste einklappen (angepinnt lassen)`,unpinLeft:`Linke Seitenleiste lösen`,pinLeftOpen:`Linke Seitenleiste offen anpinnen`,collapseRightKeepPinned:`Rechte Seitenleiste einklappen (angepinnt lassen)`,unpinRight:`Rechte Seitenleiste lösen`,pinRightOpen:`Rechte Seitenleiste offen anpinnen`},footer:{navigate:`navigieren`,select:`auswählen`,close:`schließen`}},t={queued:`{{name}} eingereiht`,queuing:`{{name}} wird eingereiht...`},n={spawnFailed:`Befehl konnte nicht gestartet werden`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Produkt erkunden & definieren`,delivery:`Delivery`,deliverySubtitle:`Features bauen & ausliefern`,others:`Sonstige`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`Keine Befehle installiert`,hint:`Führe <1>/setup</1> in Claude Code aus, um die specrails-Befehle zu installieren`},runs_one:`{{count}} Lauf`,runs_other:`{{count}} Läufe`,tooltip:{opensWizard:`Öffnet einen geführten Assistenten`}},i={title:`Tastaturkürzel`,subtitle:`Drücke an beliebiger Stelle <1>?</1>, um dieses Panel umzuschalten`,categories:{general:`Allgemein`,navigation:`Navigation`,actions:`Aktionen`},items:{showCheatsheet:`Tastaturkürzel anzeigen`,closeModal:`Modal / Seitenleiste schließen`,toggleRightSidebar:`Rechte Seitenleiste umschalten`,toggleLeftSidebar:`Linke Seitenleiste umschalten`,toggleTerminal:`Terminal-Panel umschalten`,toggleAgent:`Agent-Chat umschalten`,navigateProjectPageWithAgents:`Zu Projektseite navigieren (Dashboard/Jobs/Analytics/Agenten/Einstellungen)`,navigateProjectPage:`Zu Projektseite navigieren (Dashboard/Jobs/Analytics/Einstellungen)`,switchProject:`Projekt nach Position wechseln`,goDashboard:`Zum Dashboard`,goActivity:`Zu Aktivität / Jobs`,goAnalytics:`Zu Analytics`,goSettings:`Zu den Einstellungen`,nextItem:`Nächstes Listenelement`,prevItem:`Vorheriges Listenelement`}},a={title:{available:`Update verfügbar`,downloading:`Update wird heruntergeladen`,installing:`Update wird installiert`,ready:`Update bereit`,error:`Update fehlgeschlagen`},desc:{available:`Eine neue Version von Specrails ist bereit zur Installation.`,fetching:`Lade {{size}}…`,progress:`{{percent}} % · {{downloaded}} von {{total}}`,installing:`Signatur wird geprüft und abgeschlossen…`,ready:`Neu starten, um Version {{version}} zu starten.`,errorFallback:`Update konnte nicht abgeschlossen werden. Bitte erneut versuchen.`},pill:{downloading:`Wird heruntergeladen`,installing:`Wird installiert`,ready:`Bereit`},actions:{restart:`Neu starten`,later:`Später`,update:`Aktualisieren`,installing:`Wird installiert…`,tryAgain:`Erneut versuchen`,dismiss:`Schließen`},mockReady:`Mock-Update bereit – Neustart übersprungen`,errors:{installFailed:`Update konnte nicht installiert werden`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job abgeschlossen`,jobFailed:`Job fehlgeschlagen`,jobStuck:`Ausführung scheint zu hängen`,jobStuckBody_one:`Seit {{count}} Minute keine Aktivität — zum Prüfen öffnen`,jobStuckBody_other:`Seit {{count}} Minuten keine Aktivität — zum Prüfen öffnen`,unknownCommand:`Unbekannter Befehl`},s={emptyState:{title:`Noch keine Vorlagen.`,hint:`Speichere Befehlssequenzen, um sie mit einem Klick auszuführen.`},createButton:`Vorlage erstellen`,newButton:`Neue Vorlage`,steps_one:`{{count}} Schritt`,steps_other:`{{count}} Schritte`,moreCommands_one:`+{{count}} weiterer`,moreCommands_other:`+{{count}} weitere`,run:`Ausführen`,queuing:`Wird eingereiht…`,aria:{edit:`Vorlage bearbeiten`,delete:`Vorlage löschen`},confirmDelete:`Vorlage „{{name}}“ löschen?`,toasts:{queuedJobs_one:`{{count}} Job aus „{{name}}“ eingereiht`,queuedJobs_other:`{{count}} Jobs aus „{{name}}“ eingereiht`,deleted:`Vorlage „{{name}}“ gelöscht`},errors:{runFailed:`Vorlage konnte nicht ausgeführt werden`,deleteFailed:`Vorlage konnte nicht gelöscht werden`}},c={editTitle:`Vorlage bearbeiten`,newTitle:`Neue Vorlage`,nameLabel:`Name`,namePlaceholder:`z. B. Komplette Pipeline`,descriptionLabel:`Beschreibung (optional)`,descriptionPlaceholder:`Was macht dieses Rail?`,stepsLabel:`Schritte (Befehle oder freie Prompts)`,stepPlaceholder:`Befehl auswählen oder freien Prompt eingeben...`,aria:{moveUp:`Nach oben verschieben`,removeStep:`Schritt entfernen`},update:`Aktualisieren`,create:`Erstellen`,errors:{nameRequired:`Name ist erforderlich`,stepRequired:`Mindestens ein Schritt ist erforderlich`,saveFailed:`Vorlage konnte nicht gespeichert werden`},toasts:{updated:`Vorlage aktualisiert`,created:`Vorlage erstellt`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`命令面板`,searchPlaceholder:`搜索项目、命令、任务...`,noResults:`未找到结果。`,activeBadge:`当前`,groups:{projects:`项目`,spec:`Spec`,jobs:`任务`,navigation:`导航`},nav:{dashboard:`仪表盘`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`项目分析`,activityFeed:`活动流`,desktopSettings:`Desktop 设置`,docs:`文档`},sidebar:{collapseLeftKeepPinned:`收起左侧边栏(保持固定)`,unpinLeft:`取消固定左侧边栏`,pinLeftOpen:`固定并展开左侧边栏`,collapseRightKeepPinned:`收起右侧边栏(保持固定)`,unpinRight:`取消固定右侧边栏`,pinRightOpen:`固定并展开右侧边栏`},footer:{navigate:`导航`,select:`选择`,close:`关闭`}},t={queued:`{{name}} 已加入队列`,queuing:`正在将 {{name}} 加入队列...`},n={spawnFailed:`启动命令失败`},r={sections:{discovery:`探索`,discoverySubtitle:`探索并定义你的产品`,delivery:`交付`,deliverySubtitle:`构建并交付功能`,others:`其他`},displayNames:{proposeSpec:`自定义提案`,updateBacklog:`自动提案`,productBacklog:`自动选择 Spec`},emptyState:{title:`未安装命令`,hint:`在 Claude Code 中运行 <1>/setup</1> 以安装 specrails 命令`},runs_one:`{{count}} 次运行`,runs_other:`{{count}} 次运行`,tooltip:{opensWizard:`打开引导向导`}},i={title:`键盘快捷键`,subtitle:`在任意位置按 <1>?</1> 切换此面板`,categories:{general:`通用`,navigation:`导航`,actions:`操作`},items:{showCheatsheet:`显示键盘快捷键`,closeModal:`关闭弹窗 / 侧边栏`,toggleRightSidebar:`切换右侧边栏`,toggleLeftSidebar:`切换左侧边栏`,toggleTerminal:`切换终端面板`,toggleAgent:`切换智能体聊天`,navigateProjectPageWithAgents:`导航到项目页面(仪表盘/任务/分析/Agent/设置)`,navigateProjectPage:`导航到项目页面(仪表盘/任务/分析/设置)`,switchProject:`按位置切换项目`,goDashboard:`前往仪表盘`,goActivity:`前往活动 / 任务`,goAnalytics:`前往分析`,goSettings:`前往设置`,nextItem:`列表中的下一项`,prevItem:`列表中的上一项`}},a={title:{available:`有可用更新`,downloading:`正在下载更新`,installing:`正在安装更新`,ready:`更新已就绪`,error:`更新失败`},desc:{available:`Specrails 新版本已可安装。`,fetching:`正在获取 {{size}}…`,progress:`{{percent}}% · {{downloaded}} / {{total}}`,installing:`正在验证签名并完成…`,ready:`重启以启动版本 {{version}}。`,errorFallback:`无法完成更新。请重试。`},pill:{downloading:`下载中`,installing:`安装中`,ready:`已就绪`},actions:{restart:`重启`,later:`稍后`,update:`更新`,installing:`安装中…`,tryAgain:`重试`,dismiss:`忽略`},mockReady:`模拟更新已就绪 — 已跳过重启`,errors:{installFailed:`无法安装更新`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`任务已完成`,jobFailed:`任务失败`,unknownCommand:`未知命令`},s={emptyState:{title:`暂无模板。`,hint:`保存命令序列,一键运行。`},createButton:`创建模板`,newButton:`新建模板`,steps_one:`{{count}} 个步骤`,steps_other:`{{count}} 个步骤`,moreCommands_one:`+{{count}} 更多`,moreCommands_other:`+{{count}} 更多`,run:`运行`,queuing:`加入队列中…`,aria:{edit:`编辑模板`,delete:`删除模板`},confirmDelete:`删除模板“{{name}}”?`,toasts:{queuedJobs_one:`已从“{{name}}”将 {{count}} 个任务加入队列`,queuedJobs_other:`已从“{{name}}”将 {{count}} 个任务加入队列`,deleted:`模板“{{name}}”已删除`},errors:{runFailed:`运行模板失败`,deleteFailed:`删除模板失败`}},c={editTitle:`编辑模板`,newTitle:`新建模板`,nameLabel:`名称`,namePlaceholder:`例如:完整流水线`,descriptionLabel:`描述(可选)`,descriptionPlaceholder:`这个 Rail 做什么?`,stepsLabel:`步骤(命令或自由提示词)`,stepPlaceholder:`选择命令或输入自由提示词...`,aria:{moveUp:`上移`,removeStep:`移除步骤`},update:`更新`,create:`创建`,errors:{nameRequired:`名称为必填项`,stepRequired:`至少需要一个步骤`,saveFailed:`保存模板失败`},toasts:{updated:`模板已更新`,created:`模板已创建`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`命令面板`,searchPlaceholder:`搜索项目、命令、任务...`,noResults:`未找到结果。`,activeBadge:`当前`,groups:{projects:`项目`,spec:`Spec`,jobs:`任务`,navigation:`导航`},nav:{dashboard:`仪表盘`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`项目分析`,activityFeed:`活动流`,desktopSettings:`Desktop 设置`,docs:`文档`},sidebar:{collapseLeftKeepPinned:`收起左侧边栏(保持固定)`,unpinLeft:`取消固定左侧边栏`,pinLeftOpen:`固定并展开左侧边栏`,collapseRightKeepPinned:`收起右侧边栏(保持固定)`,unpinRight:`取消固定右侧边栏`,pinRightOpen:`固定并展开右侧边栏`},footer:{navigate:`导航`,select:`选择`,close:`关闭`}},t={queued:`{{name}} 已加入队列`,queuing:`正在将 {{name}} 加入队列...`},n={spawnFailed:`启动命令失败`},r={sections:{discovery:`探索`,discoverySubtitle:`探索并定义你的产品`,delivery:`交付`,deliverySubtitle:`构建并交付功能`,others:`其他`},displayNames:{proposeSpec:`自定义提案`,updateBacklog:`自动提案`,productBacklog:`自动选择 Spec`},emptyState:{title:`未安装命令`,hint:`在 Claude Code 中运行 <1>/setup</1> 以安装 specrails 命令`},runs_one:`{{count}} 次运行`,runs_other:`{{count}} 次运行`,tooltip:{opensWizard:`打开引导向导`}},i={title:`键盘快捷键`,subtitle:`在任意位置按 <1>?</1> 切换此面板`,categories:{general:`通用`,navigation:`导航`,actions:`操作`},items:{showCheatsheet:`显示键盘快捷键`,closeModal:`关闭弹窗 / 侧边栏`,toggleRightSidebar:`切换右侧边栏`,toggleLeftSidebar:`切换左侧边栏`,toggleTerminal:`切换终端面板`,toggleAgent:`切换智能体聊天`,navigateProjectPageWithAgents:`导航到项目页面(仪表盘/任务/分析/Agent/设置)`,navigateProjectPage:`导航到项目页面(仪表盘/任务/分析/设置)`,switchProject:`按位置切换项目`,goDashboard:`前往仪表盘`,goActivity:`前往活动 / 任务`,goAnalytics:`前往分析`,goSettings:`前往设置`,nextItem:`列表中的下一项`,prevItem:`列表中的上一项`}},a={title:{available:`有可用更新`,downloading:`正在下载更新`,installing:`正在安装更新`,ready:`更新已就绪`,error:`更新失败`},desc:{available:`Specrails 新版本已可安装。`,fetching:`正在获取 {{size}}…`,progress:`{{percent}}% · {{downloaded}} / {{total}}`,installing:`正在验证签名并完成…`,ready:`重启以启动版本 {{version}}。`,errorFallback:`无法完成更新。请重试。`},pill:{downloading:`下载中`,installing:`安装中`,ready:`已就绪`},actions:{restart:`重启`,later:`稍后`,update:`更新`,installing:`安装中…`,tryAgain:`重试`,dismiss:`忽略`},mockReady:`模拟更新已就绪 — 已跳过重启`,errors:{installFailed:`无法安装更新`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`任务已完成`,jobFailed:`任务失败`,jobStuck:`运行似乎卡住了`,jobStuckBody_one:`已有 {{count}} 分钟没有活动 — 打开查看`,jobStuckBody_other:`已有 {{count}} 分钟没有活动 — 打开查看`,unknownCommand:`未知命令`},s={emptyState:{title:`暂无模板。`,hint:`保存命令序列,一键运行。`},createButton:`创建模板`,newButton:`新建模板`,steps_one:`{{count}} 个步骤`,steps_other:`{{count}} 个步骤`,moreCommands_one:`+{{count}} 更多`,moreCommands_other:`+{{count}} 更多`,run:`运行`,queuing:`加入队列中…`,aria:{edit:`编辑模板`,delete:`删除模板`},confirmDelete:`删除模板“{{name}}”?`,toasts:{queuedJobs_one:`已从“{{name}}”将 {{count}} 个任务加入队列`,queuedJobs_other:`已从“{{name}}”将 {{count}} 个任务加入队列`,deleted:`模板“{{name}}”已删除`},errors:{runFailed:`运行模板失败`,deleteFailed:`删除模板失败`}},c={editTitle:`编辑模板`,newTitle:`新建模板`,nameLabel:`名称`,namePlaceholder:`例如:完整流水线`,descriptionLabel:`描述(可选)`,descriptionPlaceholder:`这个 Rail 做什么?`,stepsLabel:`步骤(命令或自由提示词)`,stepPlaceholder:`选择命令或输入自由提示词...`,aria:{moveUp:`上移`,removeStep:`移除步骤`},update:`更新`,create:`创建`,errors:{nameRequired:`名称为必填项`,stepRequired:`至少需要一个步骤`,saveFailed:`保存模板失败`},toasts:{updated:`模板已更新`,created:`模板已创建`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`コマンドパレット`,searchPlaceholder:`プロジェクト、コマンド、ジョブを検索...`,noResults:`結果が見つかりません。`,activeBadge:`アクティブ`,groups:{projects:`プロジェクト`,spec:`スペック`,jobs:`ジョブ`,navigation:`ナビゲーション`},nav:{dashboard:`ダッシュボード`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`プロジェクト分析`,activityFeed:`アクティビティフィード`,desktopSettings:`Desktop 設定`,docs:`ドキュメント`},sidebar:{collapseLeftKeepPinned:`左サイドバーを折りたたむ (ピン留めは維持)`,unpinLeft:`左サイドバーのピン留めを解除`,pinLeftOpen:`左サイドバーを開いた状態でピン留め`,collapseRightKeepPinned:`右サイドバーを折りたたむ (ピン留めは維持)`,unpinRight:`右サイドバーのピン留めを解除`,pinRightOpen:`右サイドバーを開いた状態でピン留め`},footer:{navigate:`移動`,select:`選択`,close:`閉じる`}},t={queued:`{{name}} をキューに追加しました`,queuing:`{{name}} をキューに追加中...`},n={spawnFailed:`コマンドの起動に失敗しました`},r={sections:{discovery:`ディスカバリー`,discoverySubtitle:`プロダクトを探索して定義`,delivery:`デリバリー`,deliverySubtitle:`機能を構築してリリース`,others:`その他`},displayNames:{proposeSpec:`カスタム提案`,updateBacklog:`自動提案`,productBacklog:`スペック自動選択`},emptyState:{title:`コマンドがインストールされていません`,hint:`Claude Code で <1>/setup</1> を実行して specrails コマンドをインストールしてください`},runs_one:`{{count}} 回実行`,runs_other:`{{count}} 回実行`,tooltip:{opensWizard:`ガイド付きウィザードを開きます`}},i={title:`キーボードショートカット`,subtitle:`どこでも <1>?</1> を押すとこのパネルを切り替えられます`,categories:{general:`一般`,navigation:`ナビゲーション`,actions:`アクション`},items:{showCheatsheet:`キーボードショートカットを表示`,closeModal:`モーダル / サイドバーを閉じる`,toggleRightSidebar:`右サイドバーの表示を切り替え`,toggleLeftSidebar:`左サイドバーの表示を切り替え`,toggleTerminal:`ターミナルパネルの表示を切り替え`,toggleAgent:`エージェントチャットの切り替え`,navigateProjectPageWithAgents:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/エージェント/設定)`,navigateProjectPage:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/設定)`,switchProject:`位置でプロジェクトを切り替え`,goDashboard:`ダッシュボードへ移動`,goActivity:`アクティビティ / ジョブへ移動`,goAnalytics:`分析へ移動`,goSettings:`設定へ移動`,nextItem:`リストの次の項目`,prevItem:`リストの前の項目`}},a={title:{available:`アップデートがあります`,downloading:`アップデートをダウンロード中`,installing:`アップデートをインストール中`,ready:`アップデート準備完了`,error:`アップデートに失敗しました`},desc:{available:`Specrails の新しいバージョンをインストールできます。`,fetching:`{{size}} を取得中…`,progress:`{{percent}}% · {{total}} 中 {{downloaded}}`,installing:`署名を検証して仕上げています…`,ready:`再起動するとバージョン {{version}} が起動します。`,errorFallback:`アップデートを完了できませんでした。もう一度お試しください。`},pill:{downloading:`ダウンロード中`,installing:`インストール中`,ready:`準備完了`},actions:{restart:`再起動`,later:`後で`,update:`アップデート`,installing:`インストール中…`,tryAgain:`再試行`,dismiss:`閉じる`},mockReady:`モックアップデート準備完了 — 再起動はスキップされました`,errors:{installFailed:`アップデートをインストールできませんでした`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`ジョブが完了しました`,jobFailed:`ジョブが失敗しました`,unknownCommand:`不明なコマンド`},s={emptyState:{title:`テンプレートはまだありません。`,hint:`コマンドの並びを保存してワンクリックで実行できます。`},createButton:`テンプレートを作成`,newButton:`新しいテンプレート`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,moreCommands_one:`+{{count}} 件`,moreCommands_other:`+{{count}} 件`,run:`実行`,queuing:`キューに追加中…`,aria:{edit:`テンプレートを編集`,delete:`テンプレートを削除`},confirmDelete:`テンプレート「{{name}}」を削除しますか?`,toasts:{queuedJobs_one:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,queuedJobs_other:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,deleted:`テンプレート「{{name}}」を削除しました`},errors:{runFailed:`テンプレートの実行に失敗しました`,deleteFailed:`テンプレートの削除に失敗しました`}},c={editTitle:`テンプレートを編集`,newTitle:`新しいテンプレート`,nameLabel:`名前`,namePlaceholder:`例: フルパイプライン`,descriptionLabel:`説明 (任意)`,descriptionPlaceholder:`このレールは何をしますか?`,stepsLabel:`ステップ (コマンドまたは自由なプロンプト)`,stepPlaceholder:`コマンドを選択するか、自由なプロンプトを入力...`,aria:{moveUp:`上へ移動`,removeStep:`ステップを削除`},update:`更新`,create:`作成`,errors:{nameRequired:`名前は必須です`,stepRequired:`少なくとも 1 つのステップが必要です`,saveFailed:`テンプレートの保存に失敗しました`},toasts:{updated:`テンプレートを更新しました`,created:`テンプレートを作成しました`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`コマンドパレット`,searchPlaceholder:`プロジェクト、コマンド、ジョブを検索...`,noResults:`結果が見つかりません。`,activeBadge:`アクティブ`,groups:{projects:`プロジェクト`,spec:`スペック`,jobs:`ジョブ`,navigation:`ナビゲーション`},nav:{dashboard:`ダッシュボード`,desktopAnalytics:`Desktop 分析`,projectAnalytics:`プロジェクト分析`,activityFeed:`アクティビティフィード`,desktopSettings:`Desktop 設定`,docs:`ドキュメント`},sidebar:{collapseLeftKeepPinned:`左サイドバーを折りたたむ (ピン留めは維持)`,unpinLeft:`左サイドバーのピン留めを解除`,pinLeftOpen:`左サイドバーを開いた状態でピン留め`,collapseRightKeepPinned:`右サイドバーを折りたたむ (ピン留めは維持)`,unpinRight:`右サイドバーのピン留めを解除`,pinRightOpen:`右サイドバーを開いた状態でピン留め`},footer:{navigate:`移動`,select:`選択`,close:`閉じる`}},t={queued:`{{name}} をキューに追加しました`,queuing:`{{name}} をキューに追加中...`},n={spawnFailed:`コマンドの起動に失敗しました`},r={sections:{discovery:`ディスカバリー`,discoverySubtitle:`プロダクトを探索して定義`,delivery:`デリバリー`,deliverySubtitle:`機能を構築してリリース`,others:`その他`},displayNames:{proposeSpec:`カスタム提案`,updateBacklog:`自動提案`,productBacklog:`スペック自動選択`},emptyState:{title:`コマンドがインストールされていません`,hint:`Claude Code で <1>/setup</1> を実行して specrails コマンドをインストールしてください`},runs_one:`{{count}} 回実行`,runs_other:`{{count}} 回実行`,tooltip:{opensWizard:`ガイド付きウィザードを開きます`}},i={title:`キーボードショートカット`,subtitle:`どこでも <1>?</1> を押すとこのパネルを切り替えられます`,categories:{general:`一般`,navigation:`ナビゲーション`,actions:`アクション`},items:{showCheatsheet:`キーボードショートカットを表示`,closeModal:`モーダル / サイドバーを閉じる`,toggleRightSidebar:`右サイドバーの表示を切り替え`,toggleLeftSidebar:`左サイドバーの表示を切り替え`,toggleTerminal:`ターミナルパネルの表示を切り替え`,toggleAgent:`エージェントチャットの切り替え`,navigateProjectPageWithAgents:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/エージェント/設定)`,navigateProjectPage:`プロジェクトページへ移動 (ダッシュボード/ジョブ/分析/設定)`,switchProject:`位置でプロジェクトを切り替え`,goDashboard:`ダッシュボードへ移動`,goActivity:`アクティビティ / ジョブへ移動`,goAnalytics:`分析へ移動`,goSettings:`設定へ移動`,nextItem:`リストの次の項目`,prevItem:`リストの前の項目`}},a={title:{available:`アップデートがあります`,downloading:`アップデートをダウンロード中`,installing:`アップデートをインストール中`,ready:`アップデート準備完了`,error:`アップデートに失敗しました`},desc:{available:`Specrails の新しいバージョンをインストールできます。`,fetching:`{{size}} を取得中…`,progress:`{{percent}}% · {{total}} 中 {{downloaded}}`,installing:`署名を検証して仕上げています…`,ready:`再起動するとバージョン {{version}} が起動します。`,errorFallback:`アップデートを完了できませんでした。もう一度お試しください。`},pill:{downloading:`ダウンロード中`,installing:`インストール中`,ready:`準備完了`},actions:{restart:`再起動`,later:`後で`,update:`アップデート`,installing:`インストール中…`,tryAgain:`再試行`,dismiss:`閉じる`},mockReady:`モックアップデート準備完了 — 再起動はスキップされました`,errors:{installFailed:`アップデートをインストールできませんでした`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`ジョブが完了しました`,jobFailed:`ジョブが失敗しました`,jobStuck:`実行が停止しているようです`,jobStuckBody_one:`{{count}} 分間 動きがありません — 開いて確認してください`,jobStuckBody_other:`{{count}} 分間 動きがありません — 開いて確認してください`,unknownCommand:`不明なコマンド`},s={emptyState:{title:`テンプレートはまだありません。`,hint:`コマンドの並びを保存してワンクリックで実行できます。`},createButton:`テンプレートを作成`,newButton:`新しいテンプレート`,steps_one:`{{count}} ステップ`,steps_other:`{{count}} ステップ`,moreCommands_one:`+{{count}} 件`,moreCommands_other:`+{{count}} 件`,run:`実行`,queuing:`キューに追加中…`,aria:{edit:`テンプレートを編集`,delete:`テンプレートを削除`},confirmDelete:`テンプレート「{{name}}」を削除しますか?`,toasts:{queuedJobs_one:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,queuedJobs_other:`「{{name}}」から {{count}} 件のジョブをキューに追加しました`,deleted:`テンプレート「{{name}}」を削除しました`},errors:{runFailed:`テンプレートの実行に失敗しました`,deleteFailed:`テンプレートの削除に失敗しました`}},c={editTitle:`テンプレートを編集`,newTitle:`新しいテンプレート`,nameLabel:`名前`,namePlaceholder:`例: フルパイプライン`,descriptionLabel:`説明 (任意)`,descriptionPlaceholder:`このレールは何をしますか?`,stepsLabel:`ステップ (コマンドまたは自由なプロンプト)`,stepPlaceholder:`コマンドを選択するか、自由なプロンプトを入力...`,aria:{moveUp:`上へ移動`,removeStep:`ステップを削除`},update:`更新`,create:`作成`,errors:{nameRequired:`名前は必須です`,stepRequired:`少なくとも 1 つのステップが必要です`,saveFailed:`テンプレートの保存に失敗しました`},toasts:{updated:`テンプレートを更新しました`,created:`テンプレートを作成しました`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`Paleta de comandos`,searchPlaceholder:`Buscar proyectos, comandos, jobs...`,noResults:`Sin resultados.`,activeBadge:`activo`,groups:{projects:`Proyectos`,spec:`Spec`,jobs:`Jobs`,navigation:`Navegación`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analíticas de Desktop`,projectAnalytics:`Analíticas del proyecto`,activityFeed:`Actividad`,desktopSettings:`Ajustes de Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Contraer barra lateral izquierda (mantener anclada)`,unpinLeft:`Desanclar barra lateral izquierda`,pinLeftOpen:`Anclar barra lateral izquierda abierta`,collapseRightKeepPinned:`Contraer barra lateral derecha (mantener anclada)`,unpinRight:`Desanclar barra lateral derecha`,pinRightOpen:`Anclar barra lateral derecha abierta`},footer:{navigate:`navegar`,select:`seleccionar`,close:`cerrar`}},t={queued:`{{name}} en cola`,queuing:`Encolando {{name}}...`},n={spawnFailed:`No se pudo lanzar el comando`},r={sections:{discovery:`Descubrimiento`,discoverySubtitle:`Explora y define tu producto`,delivery:`Entrega`,deliverySubtitle:`Construye y entrega funcionalidades`,others:`Otros`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No hay comandos instalados`,hint:`Ejecuta <1>/setup</1> en Claude Code para instalar los comandos de specrails`},runs_one:`{{count}} ejecución`,runs_other:`{{count}} ejecuciones`,tooltip:{opensWizard:`Abre el asistente guiado`}},i={title:`Atajos de teclado`,subtitle:`Pulsa <1>?</1> en cualquier parte para mostrar u ocultar este panel`,categories:{general:`General`,navigation:`Navegación`,actions:`Acciones`},items:{showCheatsheet:`Mostrar atajos de teclado`,closeModal:`Cerrar modal / barra lateral`,toggleRightSidebar:`Mostrar/ocultar barra lateral derecha`,toggleLeftSidebar:`Mostrar/ocultar barra lateral izquierda`,toggleTerminal:`Mostrar/ocultar panel del terminal`,toggleAgent:`Mostrar/ocultar chat del agente`,navigateProjectPageWithAgents:`Ir a una página del proyecto (Dashboard/Jobs/Analíticas/Agentes/Ajustes)`,navigateProjectPage:`Ir a una página del proyecto (Dashboard/Jobs/Analíticas/Ajustes)`,switchProject:`Cambiar de proyecto por posición`,goDashboard:`Ir al Dashboard`,goActivity:`Ir a Actividad / Jobs`,goAnalytics:`Ir a Analíticas`,goSettings:`Ir a Ajustes`,nextItem:`Siguiente elemento de la lista`,prevItem:`Elemento anterior de la lista`}},a={title:{available:`Actualización disponible`,downloading:`Descargando actualización`,installing:`Instalando actualización`,ready:`Actualización lista`,error:`Error al actualizar`},desc:{available:`Hay una nueva versión de Specrails lista para instalar.`,fetching:`Descargando {{size}}…`,progress:`{{percent}}% · {{downloaded}} de {{total}}`,installing:`Verificando la firma y terminando…`,ready:`Reinicia para abrir la versión {{version}}.`,errorFallback:`No se pudo completar la actualización. Inténtalo de nuevo.`},pill:{downloading:`Descargando`,installing:`Instalando`,ready:`Lista`},actions:{restart:`Reiniciar`,later:`Más tarde`,update:`Actualizar`,installing:`Instalando…`,tryAgain:`Reintentar`,dismiss:`Descartar`},mockReady:`Actualización simulada lista — reinicio omitido`,errors:{installFailed:`No se pudo instalar la actualización`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completado`,jobFailed:`Job fallido`,unknownCommand:`Comando desconocido`},s={emptyState:{title:`Aún no hay plantillas.`,hint:`Guarda secuencias de comandos para ejecutarlas con un clic.`},createButton:`Crear plantilla`,newButton:`Nueva plantilla`,steps_one:`{{count}} paso`,steps_other:`{{count}} pasos`,moreCommands_one:`+{{count}} más`,moreCommands_other:`+{{count}} más`,run:`Ejecutar`,queuing:`Encolando…`,aria:{edit:`Editar plantilla`,delete:`Eliminar plantilla`},confirmDelete:`¿Eliminar la plantilla "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job encolado desde "{{name}}"`,queuedJobs_other:`{{count}} jobs encolados desde "{{name}}"`,deleted:`Plantilla "{{name}}" eliminada`},errors:{runFailed:`No se pudo ejecutar la plantilla`,deleteFailed:`No se pudo eliminar la plantilla`}},c={editTitle:`Editar plantilla`,newTitle:`Nueva plantilla`,nameLabel:`Nombre`,namePlaceholder:`p. ej. Pipeline completo`,descriptionLabel:`Descripción (opcional)`,descriptionPlaceholder:`¿Qué hace este rail?`,stepsLabel:`Pasos (comandos o prompts libres)`,stepPlaceholder:`Selecciona un comando o escribe un prompt libre...`,aria:{moveUp:`Subir`,removeStep:`Quitar paso`},update:`Actualizar`,create:`Crear`,errors:{nameRequired:`El nombre es obligatorio`,stepRequired:`Se necesita al menos un paso`,saveFailed:`No se pudo guardar la plantilla`},toasts:{updated:`Plantilla actualizada`,created:`Plantilla creada`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`Paleta de comandos`,searchPlaceholder:`Buscar proyectos, comandos, jobs...`,noResults:`Sin resultados.`,activeBadge:`activo`,groups:{projects:`Proyectos`,spec:`Spec`,jobs:`Jobs`,navigation:`Navegación`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analíticas de Desktop`,projectAnalytics:`Analíticas del proyecto`,activityFeed:`Actividad`,desktopSettings:`Ajustes de Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Contraer barra lateral izquierda (mantener anclada)`,unpinLeft:`Desanclar barra lateral izquierda`,pinLeftOpen:`Anclar barra lateral izquierda abierta`,collapseRightKeepPinned:`Contraer barra lateral derecha (mantener anclada)`,unpinRight:`Desanclar barra lateral derecha`,pinRightOpen:`Anclar barra lateral derecha abierta`},footer:{navigate:`navegar`,select:`seleccionar`,close:`cerrar`}},t={queued:`{{name}} en cola`,queuing:`Encolando {{name}}...`},n={spawnFailed:`No se pudo lanzar el comando`},r={sections:{discovery:`Descubrimiento`,discoverySubtitle:`Explora y define tu producto`,delivery:`Entrega`,deliverySubtitle:`Construye y entrega funcionalidades`,others:`Otros`},displayNames:{proposeSpec:`Custom-Propose`,updateBacklog:`Auto-propose`,productBacklog:`Auto-Select Specs`},emptyState:{title:`No hay comandos instalados`,hint:`Ejecuta <1>/setup</1> en Claude Code para instalar los comandos de specrails`},runs_one:`{{count}} ejecución`,runs_other:`{{count}} ejecuciones`,tooltip:{opensWizard:`Abre el asistente guiado`}},i={title:`Atajos de teclado`,subtitle:`Pulsa <1>?</1> en cualquier parte para mostrar u ocultar este panel`,categories:{general:`General`,navigation:`Navegación`,actions:`Acciones`},items:{showCheatsheet:`Mostrar atajos de teclado`,closeModal:`Cerrar modal / barra lateral`,toggleRightSidebar:`Mostrar/ocultar barra lateral derecha`,toggleLeftSidebar:`Mostrar/ocultar barra lateral izquierda`,toggleTerminal:`Mostrar/ocultar panel del terminal`,toggleAgent:`Mostrar/ocultar chat del agente`,navigateProjectPageWithAgents:`Ir a una página del proyecto (Dashboard/Jobs/Analíticas/Agentes/Ajustes)`,navigateProjectPage:`Ir a una página del proyecto (Dashboard/Jobs/Analíticas/Ajustes)`,switchProject:`Cambiar de proyecto por posición`,goDashboard:`Ir al Dashboard`,goActivity:`Ir a Actividad / Jobs`,goAnalytics:`Ir a Analíticas`,goSettings:`Ir a Ajustes`,nextItem:`Siguiente elemento de la lista`,prevItem:`Elemento anterior de la lista`}},a={title:{available:`Actualización disponible`,downloading:`Descargando actualización`,installing:`Instalando actualización`,ready:`Actualización lista`,error:`Error al actualizar`},desc:{available:`Hay una nueva versión de Specrails lista para instalar.`,fetching:`Descargando {{size}}…`,progress:`{{percent}}% · {{downloaded}} de {{total}}`,installing:`Verificando la firma y terminando…`,ready:`Reinicia para abrir la versión {{version}}.`,errorFallback:`No se pudo completar la actualización. Inténtalo de nuevo.`},pill:{downloading:`Descargando`,installing:`Instalando`,ready:`Lista`},actions:{restart:`Reiniciar`,later:`Más tarde`,update:`Actualizar`,installing:`Instalando…`,tryAgain:`Reintentar`,dismiss:`Descartar`},mockReady:`Actualización simulada lista — reinicio omitido`,errors:{installFailed:`No se pudo instalar la actualización`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completado`,jobFailed:`Job fallido`,jobStuck:`La ejecución parece atascada`,jobStuckBody_one:`Sin actividad desde {{count}} minuto — ábrela para comprobarlo`,jobStuckBody_other:`Sin actividad desde {{count}} minutos — ábrela para comprobarlo`,unknownCommand:`Comando desconocido`},s={emptyState:{title:`Aún no hay plantillas.`,hint:`Guarda secuencias de comandos para ejecutarlas con un clic.`},createButton:`Crear plantilla`,newButton:`Nueva plantilla`,steps_one:`{{count}} paso`,steps_other:`{{count}} pasos`,moreCommands_one:`+{{count}} más`,moreCommands_other:`+{{count}} más`,run:`Ejecutar`,queuing:`Encolando…`,aria:{edit:`Editar plantilla`,delete:`Eliminar plantilla`},confirmDelete:`¿Eliminar la plantilla "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job encolado desde "{{name}}"`,queuedJobs_other:`{{count}} jobs encolados desde "{{name}}"`,deleted:`Plantilla "{{name}}" eliminada`},errors:{runFailed:`No se pudo ejecutar la plantilla`,deleteFailed:`No se pudo eliminar la plantilla`}},c={editTitle:`Editar plantilla`,newTitle:`Nueva plantilla`,nameLabel:`Nombre`,namePlaceholder:`p. ej. Pipeline completo`,descriptionLabel:`Descripción (opcional)`,descriptionPlaceholder:`¿Qué hace este rail?`,stepsLabel:`Pasos (comandos o prompts libres)`,stepPlaceholder:`Selecciona un comando o escribe un prompt libre...`,aria:{moveUp:`Subir`,removeStep:`Quitar paso`},update:`Actualizar`,create:`Crear`,errors:{nameRequired:`El nombre es obligatorio`,stepRequired:`Se necesita al menos un paso`,saveFailed:`No se pudo guardar la plantilla`},toasts:{updated:`Plantilla actualizada`,created:`Plantilla creada`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`Palette de commandes`,searchPlaceholder:`Rechercher projets, commandes, jobs...`,noResults:`Aucun résultat.`,activeBadge:`actif`,groups:{projects:`Projets`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Tableau de bord`,desktopAnalytics:`Analytics de Desktop`,projectAnalytics:`Analytics du projet`,activityFeed:`Fil d'activité`,desktopSettings:`Paramètres de Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Replier la barre latérale gauche (garder épinglée)`,unpinLeft:`Désépingler la barre latérale gauche`,pinLeftOpen:`Épingler la barre latérale gauche ouverte`,collapseRightKeepPinned:`Replier la barre latérale droite (garder épinglée)`,unpinRight:`Désépingler la barre latérale droite`,pinRightOpen:`Épingler la barre latérale droite ouverte`},footer:{navigate:`naviguer`,select:`sélectionner`,close:`fermer`}},t={queued:`{{name}} ajouté à la file`,queuing:`Mise en file de {{name}}...`},n={spawnFailed:`Échec du lancement de la commande`},r={sections:{discovery:`Découverte`,discoverySubtitle:`Explorez et définissez votre produit`,delivery:`Livraison`,deliverySubtitle:`Construisez et livrez des fonctionnalités`,others:`Autres`},displayNames:{proposeSpec:`Proposition personnalisée`,updateBacklog:`Proposition auto`,productBacklog:`Sélection auto de specs`},emptyState:{title:`Aucune commande installée`,hint:`Exécutez <1>/setup</1> dans Claude Code pour installer les commandes specrails`},runs_one:`{{count}} exécution`,runs_other:`{{count}} exécutions`,tooltip:{opensWizard:`Ouvre l'assistant guidé`}},i={title:`Raccourcis clavier`,subtitle:`Appuyez sur <1>?</1> n'importe où pour afficher ou masquer ce panneau`,categories:{general:`Général`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Afficher les raccourcis clavier`,closeModal:`Fermer la modale / barre latérale`,toggleRightSidebar:`Afficher/masquer la barre latérale droite`,toggleLeftSidebar:`Afficher/masquer la barre latérale gauche`,toggleTerminal:`Afficher/masquer le panneau du terminal`,toggleAgent:`Afficher/masquer le chat de l'agent`,navigateProjectPageWithAgents:`Aller à une page du projet (Tableau de bord/Jobs/Analytics/Agents/Paramètres)`,navigateProjectPage:`Aller à une page du projet (Tableau de bord/Jobs/Analytics/Paramètres)`,switchProject:`Changer de projet par position`,goDashboard:`Aller au tableau de bord`,goActivity:`Aller à Activité / Jobs`,goAnalytics:`Aller à Analytics`,goSettings:`Aller aux paramètres`,nextItem:`Élément suivant dans la liste`,prevItem:`Élément précédent dans la liste`}},a={title:{available:`Mise à jour disponible`,downloading:`Téléchargement de la mise à jour`,installing:`Installation de la mise à jour`,ready:`Mise à jour prête`,error:`Échec de la mise à jour`},desc:{available:`Une nouvelle version de Specrails est prête à être installée.`,fetching:`Récupération de {{size}}…`,progress:`{{percent}} % · {{downloaded}} sur {{total}}`,installing:`Vérification de la signature et finalisation…`,ready:`Redémarrez pour lancer la version {{version}}.`,errorFallback:`Impossible de terminer la mise à jour. Veuillez réessayer.`},pill:{downloading:`Téléchargement`,installing:`Installation`,ready:`Prête`},actions:{restart:`Redémarrer`,later:`Plus tard`,update:`Mettre à jour`,installing:`Installation…`,tryAgain:`Réessayer`,dismiss:`Ignorer`},mockReady:`Mise à jour factice prête — redémarrage ignoré`,errors:{installFailed:`Impossible d'installer la mise à jour`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job terminé`,jobFailed:`Job en échec`,unknownCommand:`Commande inconnue`},s={emptyState:{title:`Aucun template pour l'instant.`,hint:`Enregistrez des séquences de commandes pour les lancer en un clic.`},createButton:`Créer un template`,newButton:`Nouveau template`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,moreCommands_one:`+{{count}} de plus`,moreCommands_other:`+{{count}} de plus`,run:`Lancer`,queuing:`Mise en file…`,aria:{edit:`Modifier le template`,delete:`Supprimer le template`},confirmDelete:`Supprimer le template « {{name}} » ?`,toasts:{queuedJobs_one:`{{count}} job mis en file depuis « {{name}} »`,queuedJobs_other:`{{count}} jobs mis en file depuis « {{name}} »`,deleted:`Template « {{name}} » supprimé`},errors:{runFailed:`Échec du lancement du template`,deleteFailed:`Échec de la suppression du template`}},c={editTitle:`Modifier le template`,newTitle:`Nouveau template`,nameLabel:`Nom`,namePlaceholder:`ex. Pipeline complet`,descriptionLabel:`Description (facultatif)`,descriptionPlaceholder:`Que fait ce rail ?`,stepsLabel:`Étapes (commandes ou prompts libres)`,stepPlaceholder:`Sélectionnez une commande ou saisissez un prompt libre...`,aria:{moveUp:`Monter`,removeStep:`Supprimer l'étape`},update:`Mettre à jour`,create:`Créer`,errors:{nameRequired:`Le nom est requis`,stepRequired:`Au moins une étape est requise`,saveFailed:`Échec de l'enregistrement du template`},toasts:{updated:`Template mis à jour`,created:`Template créé`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`Palette de commandes`,searchPlaceholder:`Rechercher projets, commandes, jobs...`,noResults:`Aucun résultat.`,activeBadge:`actif`,groups:{projects:`Projets`,spec:`Spec`,jobs:`Jobs`,navigation:`Navigation`},nav:{dashboard:`Tableau de bord`,desktopAnalytics:`Analytics de Desktop`,projectAnalytics:`Analytics du projet`,activityFeed:`Fil d'activité`,desktopSettings:`Paramètres de Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Replier la barre latérale gauche (garder épinglée)`,unpinLeft:`Désépingler la barre latérale gauche`,pinLeftOpen:`Épingler la barre latérale gauche ouverte`,collapseRightKeepPinned:`Replier la barre latérale droite (garder épinglée)`,unpinRight:`Désépingler la barre latérale droite`,pinRightOpen:`Épingler la barre latérale droite ouverte`},footer:{navigate:`naviguer`,select:`sélectionner`,close:`fermer`}},t={queued:`{{name}} ajouté à la file`,queuing:`Mise en file de {{name}}...`},n={spawnFailed:`Échec du lancement de la commande`},r={sections:{discovery:`Découverte`,discoverySubtitle:`Explorez et définissez votre produit`,delivery:`Livraison`,deliverySubtitle:`Construisez et livrez des fonctionnalités`,others:`Autres`},displayNames:{proposeSpec:`Proposition personnalisée`,updateBacklog:`Proposition auto`,productBacklog:`Sélection auto de specs`},emptyState:{title:`Aucune commande installée`,hint:`Exécutez <1>/setup</1> dans Claude Code pour installer les commandes specrails`},runs_one:`{{count}} exécution`,runs_other:`{{count}} exécutions`,tooltip:{opensWizard:`Ouvre l'assistant guidé`}},i={title:`Raccourcis clavier`,subtitle:`Appuyez sur <1>?</1> n'importe où pour afficher ou masquer ce panneau`,categories:{general:`Général`,navigation:`Navigation`,actions:`Actions`},items:{showCheatsheet:`Afficher les raccourcis clavier`,closeModal:`Fermer la modale / barre latérale`,toggleRightSidebar:`Afficher/masquer la barre latérale droite`,toggleLeftSidebar:`Afficher/masquer la barre latérale gauche`,toggleTerminal:`Afficher/masquer le panneau du terminal`,toggleAgent:`Afficher/masquer le chat de l'agent`,navigateProjectPageWithAgents:`Aller à une page du projet (Tableau de bord/Jobs/Analytics/Agents/Paramètres)`,navigateProjectPage:`Aller à une page du projet (Tableau de bord/Jobs/Analytics/Paramètres)`,switchProject:`Changer de projet par position`,goDashboard:`Aller au tableau de bord`,goActivity:`Aller à Activité / Jobs`,goAnalytics:`Aller à Analytics`,goSettings:`Aller aux paramètres`,nextItem:`Élément suivant dans la liste`,prevItem:`Élément précédent dans la liste`}},a={title:{available:`Mise à jour disponible`,downloading:`Téléchargement de la mise à jour`,installing:`Installation de la mise à jour`,ready:`Mise à jour prête`,error:`Échec de la mise à jour`},desc:{available:`Une nouvelle version de Specrails est prête à être installée.`,fetching:`Récupération de {{size}}…`,progress:`{{percent}} % · {{downloaded}} sur {{total}}`,installing:`Vérification de la signature et finalisation…`,ready:`Redémarrez pour lancer la version {{version}}.`,errorFallback:`Impossible de terminer la mise à jour. Veuillez réessayer.`},pill:{downloading:`Téléchargement`,installing:`Installation`,ready:`Prête`},actions:{restart:`Redémarrer`,later:`Plus tard`,update:`Mettre à jour`,installing:`Installation…`,tryAgain:`Réessayer`,dismiss:`Ignorer`},mockReady:`Mise à jour factice prête — redémarrage ignoré`,errors:{installFailed:`Impossible d'installer la mise à jour`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job terminé`,jobFailed:`Job en échec`,jobStuck:`L'exécution semble bloquée`,jobStuckBody_one:`Aucune activité depuis {{count}} minute — ouvrez-la pour vérifier`,jobStuckBody_other:`Aucune activité depuis {{count}} minutes — ouvrez-la pour vérifier`,unknownCommand:`Commande inconnue`},s={emptyState:{title:`Aucun template pour l'instant.`,hint:`Enregistrez des séquences de commandes pour les lancer en un clic.`},createButton:`Créer un template`,newButton:`Nouveau template`,steps_one:`{{count}} étape`,steps_other:`{{count}} étapes`,moreCommands_one:`+{{count}} de plus`,moreCommands_other:`+{{count}} de plus`,run:`Lancer`,queuing:`Mise en file…`,aria:{edit:`Modifier le template`,delete:`Supprimer le template`},confirmDelete:`Supprimer le template « {{name}} » ?`,toasts:{queuedJobs_one:`{{count}} job mis en file depuis « {{name}} »`,queuedJobs_other:`{{count}} jobs mis en file depuis « {{name}} »`,deleted:`Template « {{name}} » supprimé`},errors:{runFailed:`Échec du lancement du template`,deleteFailed:`Échec de la suppression du template`}},c={editTitle:`Modifier le template`,newTitle:`Nouveau template`,nameLabel:`Nom`,namePlaceholder:`ex. Pipeline complet`,descriptionLabel:`Description (facultatif)`,descriptionPlaceholder:`Que fait ce rail ?`,stepsLabel:`Étapes (commandes ou prompts libres)`,stepPlaceholder:`Sélectionnez une commande ou saisissez un prompt libre...`,aria:{moveUp:`Monter`,removeStep:`Supprimer l'étape`},update:`Mettre à jour`,create:`Créer`,errors:{nameRequired:`Le nom est requis`,stepRequired:`Au moins une étape est requise`,saveFailed:`Échec de l'enregistrement du template`},toasts:{updated:`Template mis à jour`,created:`Template créé`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={label:`Palette comandi`,searchPlaceholder:`Cerca progetti, comandi, job...`,noResults:`Nessun risultato trovato.`,activeBadge:`attivo`,groups:{projects:`Progetti`,spec:`Spec`,jobs:`Job`,navigation:`Navigazione`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analytics di Desktop`,projectAnalytics:`Analytics del progetto`,activityFeed:`Feed attività`,desktopSettings:`Impostazioni Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Comprimi barra laterale sinistra (mantieni fissata)`,unpinLeft:`Sblocca barra laterale sinistra`,pinLeftOpen:`Fissa aperta la barra laterale sinistra`,collapseRightKeepPinned:`Comprimi barra laterale destra (mantieni fissata)`,unpinRight:`Sblocca barra laterale destra`,pinRightOpen:`Fissa aperta la barra laterale destra`},footer:{navigate:`naviga`,select:`seleziona`,close:`chiudi`}},t={queued:`{{name}} in coda`,queuing:`Accodamento di {{name}}...`},n={spawnFailed:`Impossibile avviare il comando`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Esplora e definisci il tuo prodotto`,delivery:`Delivery`,deliverySubtitle:`Costruisci e rilascia funzionalità`,others:`Altri`},displayNames:{proposeSpec:`Proposta personalizzata`,updateBacklog:`Auto-proposta`,productBacklog:`Auto-selezione spec`},emptyState:{title:`Nessun comando installato`,hint:`Esegui <1>/setup</1> in Claude Code per installare i comandi specrails`},runs_one:`{{count}} esecuzione`,runs_other:`{{count}} esecuzioni`,tooltip:{opensWizard:`Apre la procedura guidata`}},i={title:`Scorciatoie da tastiera`,subtitle:`Premi <1>?</1> ovunque per mostrare o nascondere questo pannello`,categories:{general:`Generale`,navigation:`Navigazione`,actions:`Azioni`},items:{showCheatsheet:`Mostra scorciatoie da tastiera`,closeModal:`Chiudi modale / barra laterale`,toggleRightSidebar:`Mostra/nascondi barra laterale destra`,toggleLeftSidebar:`Mostra/nascondi barra laterale sinistra`,toggleTerminal:`Mostra/nascondi pannello terminale`,toggleAgent:`Mostra/nascondi chat dell'agente`,navigateProjectPageWithAgents:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Agenti/Impostazioni)`,navigateProjectPage:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Impostazioni)`,switchProject:`Passa al progetto per posizione`,goDashboard:`Vai alla Dashboard`,goActivity:`Vai ad Attività / Job`,goAnalytics:`Vai ad Analytics`,goSettings:`Vai alle Impostazioni`,nextItem:`Elemento successivo nell'elenco`,prevItem:`Elemento precedente nell'elenco`}},a={title:{available:`Aggiornamento disponibile`,downloading:`Download dell'aggiornamento`,installing:`Installazione dell'aggiornamento`,ready:`Aggiornamento pronto`,error:`Aggiornamento non riuscito`},desc:{available:`Una nuova versione di Specrails è pronta per l'installazione.`,fetching:`Recupero di {{size}}…`,progress:`{{percent}}% · {{downloaded}} di {{total}}`,installing:`Verifica della firma e completamento…`,ready:`Riavvia per avviare la versione {{version}}.`,errorFallback:`Impossibile completare l'aggiornamento. Riprova.`},pill:{downloading:`Download`,installing:`Installazione`,ready:`Pronto`},actions:{restart:`Riavvia`,later:`Più tardi`,update:`Aggiorna`,installing:`Installazione…`,tryAgain:`Riprova`,dismiss:`Ignora`},mockReady:`Aggiornamento mock pronto — riavvio saltato`,errors:{installFailed:`Impossibile installare l'aggiornamento`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completato`,jobFailed:`Job non riuscito`,unknownCommand:`Comando sconosciuto`},s={emptyState:{title:`Ancora nessun template.`,hint:`Salva sequenze di comandi per eseguirle con un clic.`},createButton:`Crea template`,newButton:`Nuovo template`,steps_one:`{{count}} passaggio`,steps_other:`{{count}} passaggi`,moreCommands_one:`+{{count}} altro`,moreCommands_other:`+{{count}} altri`,run:`Esegui`,queuing:`Accodamento…`,aria:{edit:`Modifica template`,delete:`Elimina template`},confirmDelete:`Eliminare il template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job accodato da "{{name}}"`,queuedJobs_other:`{{count}} job accodati da "{{name}}"`,deleted:`Template "{{name}}" eliminato`},errors:{runFailed:`Impossibile eseguire il template`,deleteFailed:`Impossibile eliminare il template`}},c={editTitle:`Modifica template`,newTitle:`Nuovo template`,nameLabel:`Nome`,namePlaceholder:`es. Pipeline completa`,descriptionLabel:`Descrizione (facoltativa)`,descriptionPlaceholder:`Cosa fa questo rail?`,stepsLabel:`Passaggi (comandi o prompt liberi)`,stepPlaceholder:`Seleziona un comando o scrivi un prompt libero...`,aria:{moveUp:`Sposta su`,removeStep:`Rimuovi passaggio`},update:`Aggiorna`,create:`Crea`,errors:{nameRequired:`Il nome è obbligatorio`,stepRequired:`Serve almeno un passaggio`,saveFailed:`Impossibile salvare il template`},toasts:{updated:`Template aggiornato`,created:`Template creato`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
1
|
+
var e={label:`Palette comandi`,searchPlaceholder:`Cerca progetti, comandi, job...`,noResults:`Nessun risultato trovato.`,activeBadge:`attivo`,groups:{projects:`Progetti`,spec:`Spec`,jobs:`Job`,navigation:`Navigazione`},nav:{dashboard:`Dashboard`,desktopAnalytics:`Analytics di Desktop`,projectAnalytics:`Analytics del progetto`,activityFeed:`Feed attività`,desktopSettings:`Impostazioni Desktop`,docs:`Docs`},sidebar:{collapseLeftKeepPinned:`Comprimi barra laterale sinistra (mantieni fissata)`,unpinLeft:`Sblocca barra laterale sinistra`,pinLeftOpen:`Fissa aperta la barra laterale sinistra`,collapseRightKeepPinned:`Comprimi barra laterale destra (mantieni fissata)`,unpinRight:`Sblocca barra laterale destra`,pinRightOpen:`Fissa aperta la barra laterale destra`},footer:{navigate:`naviga`,select:`seleziona`,close:`chiudi`}},t={queued:`{{name}} in coda`,queuing:`Accodamento di {{name}}...`},n={spawnFailed:`Impossibile avviare il comando`},r={sections:{discovery:`Discovery`,discoverySubtitle:`Esplora e definisci il tuo prodotto`,delivery:`Delivery`,deliverySubtitle:`Costruisci e rilascia funzionalità`,others:`Altri`},displayNames:{proposeSpec:`Proposta personalizzata`,updateBacklog:`Auto-proposta`,productBacklog:`Auto-selezione spec`},emptyState:{title:`Nessun comando installato`,hint:`Esegui <1>/setup</1> in Claude Code per installare i comandi specrails`},runs_one:`{{count}} esecuzione`,runs_other:`{{count}} esecuzioni`,tooltip:{opensWizard:`Apre la procedura guidata`}},i={title:`Scorciatoie da tastiera`,subtitle:`Premi <1>?</1> ovunque per mostrare o nascondere questo pannello`,categories:{general:`Generale`,navigation:`Navigazione`,actions:`Azioni`},items:{showCheatsheet:`Mostra scorciatoie da tastiera`,closeModal:`Chiudi modale / barra laterale`,toggleRightSidebar:`Mostra/nascondi barra laterale destra`,toggleLeftSidebar:`Mostra/nascondi barra laterale sinistra`,toggleTerminal:`Mostra/nascondi pannello terminale`,toggleAgent:`Mostra/nascondi chat dell'agente`,navigateProjectPageWithAgents:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Agenti/Impostazioni)`,navigateProjectPage:`Vai alla pagina del progetto (Dashboard/Job/Analytics/Impostazioni)`,switchProject:`Passa al progetto per posizione`,goDashboard:`Vai alla Dashboard`,goActivity:`Vai ad Attività / Job`,goAnalytics:`Vai ad Analytics`,goSettings:`Vai alle Impostazioni`,nextItem:`Elemento successivo nell'elenco`,prevItem:`Elemento precedente nell'elenco`}},a={title:{available:`Aggiornamento disponibile`,downloading:`Download dell'aggiornamento`,installing:`Installazione dell'aggiornamento`,ready:`Aggiornamento pronto`,error:`Aggiornamento non riuscito`},desc:{available:`Una nuova versione di Specrails è pronta per l'installazione.`,fetching:`Recupero di {{size}}…`,progress:`{{percent}}% · {{downloaded}} di {{total}}`,installing:`Verifica della firma e completamento…`,ready:`Riavvia per avviare la versione {{version}}.`,errorFallback:`Impossibile completare l'aggiornamento. Riprova.`},pill:{downloading:`Download`,installing:`Installazione`,ready:`Pronto`},actions:{restart:`Riavvia`,later:`Più tardi`,update:`Aggiorna`,installing:`Installazione…`,tryAgain:`Riprova`,dismiss:`Ignora`},mockReady:`Aggiornamento mock pronto — riavvio saltato`,errors:{installFailed:`Impossibile installare l'aggiornamento`},units:{kb:`{{value}} KB`,mb:`{{value}} MB`}},o={jobCompleted:`Job completato`,jobFailed:`Job non riuscito`,jobStuck:`L'esecuzione sembra bloccata`,jobStuckBody_one:`Nessuna attività da {{count}} minuto — aprila per controllare`,jobStuckBody_other:`Nessuna attività da {{count}} minuti — aprila per controllare`,unknownCommand:`Comando sconosciuto`},s={emptyState:{title:`Ancora nessun template.`,hint:`Salva sequenze di comandi per eseguirle con un clic.`},createButton:`Crea template`,newButton:`Nuovo template`,steps_one:`{{count}} passaggio`,steps_other:`{{count}} passaggi`,moreCommands_one:`+{{count}} altro`,moreCommands_other:`+{{count}} altri`,run:`Esegui`,queuing:`Accodamento…`,aria:{edit:`Modifica template`,delete:`Elimina template`},confirmDelete:`Eliminare il template "{{name}}"?`,toasts:{queuedJobs_one:`{{count}} job accodato da "{{name}}"`,queuedJobs_other:`{{count}} job accodati da "{{name}}"`,deleted:`Template "{{name}}" eliminato`},errors:{runFailed:`Impossibile eseguire il template`,deleteFailed:`Impossibile eliminare il template`}},c={editTitle:`Modifica template`,newTitle:`Nuovo template`,nameLabel:`Nome`,namePlaceholder:`es. Pipeline completa`,descriptionLabel:`Descrizione (facoltativa)`,descriptionPlaceholder:`Cosa fa questo rail?`,stepsLabel:`Passaggi (comandi o prompt liberi)`,stepPlaceholder:`Seleziona un comando o scrivi un prompt libero...`,aria:{moveUp:`Sposta su`,removeStep:`Rimuovi passaggio`},update:`Aggiorna`,create:`Crea`,errors:{nameRequired:`Il nome è obbligatorio`,stepRequired:`Serve almeno un passaggio`,saveFailed:`Impossibile salvare il template`},toasts:{updated:`Template aggiornato`,created:`Template creato`}},l={palette:e,toasts:t,errors:n,grid:r,shortcuts:i,update:a,notifications:o,templates:s,templateDialog:c};export{l as default,n as errors,r as grid,o as notifications,e as palette,i as shortcuts,c as templateDialog,s as templates,t as toasts,a as update};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";function t(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}function n(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}var r=e({Channel:()=>d,PluginListener:()=>f,Resource:()=>v,SERIALIZE_TO_IPC_FN:()=>l,addPluginListener:()=>p,checkPermissions:()=>m,convertFileSrc:()=>_,invoke:()=>g,isTauri:()=>y,requestPermissions:()=>h,transformCallback:()=>u}),i,a,o,s,c,l=`__TAURI_TO_IPC_KEY__`;function u(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}var d=class{constructor(e){i.set(this,void 0),a.set(this,0),o.set(this,[]),s.set(this,void 0),n(this,i,e||(()=>{}),`f`),this.id=u(e=>{let r=e.index;if(`end`in e){r==t(this,a,`f`)?this.cleanupCallback():n(this,s,r,`f`);return}let c=e.message;if(r==t(this,a,`f`)){for(t(this,i,`f`).call(this,c),n(this,a,t(this,a,`f`)+1,`f`);t(this,a,`f`)in t(this,o,`f`);){let e=t(this,o,`f`)[t(this,a,`f`)];t(this,i,`f`).call(this,e),delete t(this,o,`f`)[t(this,a,`f`)],n(this,a,t(this,a,`f`)+1,`f`)}t(this,a,`f`)===t(this,s,`f`)&&this.cleanupCallback()}else t(this,o,`f`)[r]=c})}cleanupCallback(){window.__TAURI_INTERNALS__.unregisterCallback(this.id)}set onmessage(e){n(this,i,e,`f`)}get onmessage(){return t(this,i,`f`)}[(i=new WeakMap,a=new WeakMap,o=new WeakMap,s=new WeakMap,l)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[l]()}},f=class{constructor(e,t,n){this.plugin=e,this.event=t,this.channelId=n}async unregister(){return g(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function p(e,t,n){let r=new d(n);try{return await g(`plugin:${e}|register_listener`,{event:t,handler:r}),new f(e,t,r.id)}catch{return await g(`plugin:${e}|registerListener`,{event:t,handler:r}),new f(e,t,r.id)}}async function m(e){return g(`plugin:${e}|check_permissions`)}async function h(e){return g(`plugin:${e}|request_permissions`)}async function g(e,t={},n){return window.__TAURI_INTERNALS__.invoke(e,t,n)}function _(e,t=`asset`){return window.__TAURI_INTERNALS__.convertFileSrc(e,t)}var v=class{get rid(){return t(this,c,`f`)}constructor(e){c.set(this,void 0),n(this,c,e,`f`)}async close(){return g(`plugin:resources|close`,{rid:this.rid})}};c=new WeakMap;function y(){return!!(globalThis||window).isTauri}export{g as a,r as i,v as n,u as o,l as r,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({default:()=>f,freestyleDialog:()=>l,launchAll:()=>a,launchAllDialog:()=>o,railControls:()=>s,railPr:()=>r,railRow:()=>c,railsBoard:()=>i,targetPr:()=>d,toasts:()=>n,useRails:()=>u}),n={railAdded:`Rail {{n}} added`,railRemoved:`{{rail}} removed`,railLimitReached:`Rail limit reached ({{max}} max)`,railDeleteFailed:`Couldn't remove the rail — it holds specs, is running, or has a pending PR decision`,launchTicketsInFlight:`A spec on this rail is already being worked by an active run`,launchTicketCap:`This rail has {{count}} specs — a launch takes at most {{max}} per rail. Split them across rails.`,launchAllSummary_one:`{{count}} rail launched in parallel`,launchAllSummary_other:`{{count}} rails launched in parallel`,launchAllNoneEligible:`No rails ready to launch — assign specs to an idle rail first`,launchAllFailed:`No rails could be launched`,railCompleted:`Rail {{n}} completed`,railFailed:`Rail {{n}} failed — specs returned to Specs`,railEnded:`Rail {{n}} {{status}} — specs returned to Specs`,alreadyOnRail:`Already on {{rail}}`,movedToRail:`Moved to {{rail}}`,railRunningStopFirst:`{{rail}} is running — stop it before removing`,removedFromRail:`Removed from {{rail}}`,queuedOnRail:`Queued on {{rail}}`,queuedOnRailDescription:`Rail is currently running`,railStopped:`{{rail}} stopped`,stopFailed:`Failed to stop rail`,syncTicketsFailed:`Failed to sync rail tickets`,launchFailed:`Failed to launch rail`,launchNetworkError:`Network error launching rail`,railLaunched:`{{rail}} launched`,launchDescription_one:`{{mode}} with {{count}} spec`,launchDescription_other:`{{mode}} with {{count}} specs`,railWorktreeNeedsReview:`Rail {{n}}: spec #{{ticket}} needs review after merge`,railWorktreesNoGit:`Worktree isolation unavailable: this project isn't a git repository — running in shared mode.`,railWorktreesNoCommits:`Worktree isolation unavailable: the repository has no commits yet — make an initial commit, then relaunch.`,railWorktreesError:`Worktree isolation failed — this run continues WITHOUT the PR review flow (no implementation card). See the error detail below.`,onReviewCannotMoveToRail:`This spec is awaiting PR review — resolve the PR decision first`,onReviewNotLaunchable:`A spec on this rail is awaiting PR review — resolve the PR decision before launching`},r={operation:{inProgress:`Action in progress…`,"create-pr":`Creating PR…`,publish:`Publishing…`,discard:`Discarding…`,dismiss:`Dismissing follow-up…`,"poll-merge":`Checking merge…`,reopen:`Reopening…`,"merge-local":`Integrating locally…`,"recover-and-retry":`Committing and retrying the preserved result…`,"acknowledge-no-changes":`Marking done…`},readyForReview:`Ready for review`,openReview:`Review`,openReviewTooltip:`Open the plain-language review`,draftPr:`Draft PR`,branchPushed:`Branch pushed — PR pending`,branchPushedHint:`The branch was pushed but the PR couldn't be created (GitHub CLI unavailable). Retry to create it.`,localOnly:`Changes available locally`,localOnlyHint:`The implementation completed, but the changes have not been pushed. Integrate them locally or retry publishing when the remote is available.`,noChanges:`No changes needed`,markDone:`Mark done`,refine:`Refine`,completedToast:`Confirmed — specs moved to Done`,markDoneConfirmTitle:`Mark these specs done?`,markDoneConfirmBody:`The implementation confirmed that no code changes are needed. The specs will move to Done and the no-change worktree will be cleaned up.`,refineConfirmTitle:`Refine these specs?`,refineConfirmBody:`The no-change result will be closed and the specs will return to the backlog so you can refine them. The run logs remain available.`,partial:`{{succeeded}} of {{total}} implementations ready`,createPartialPr:`Create PR with {{count}}`,deliveryBlocked:`Implementation complete — delivery needs attention`,updateFailed:`Implementation complete — update failed`,retryPush:`Retry push`,retryPushVerified:`Push verified · commit {{sha}} is in the PR`,commitAlreadyVerified:`Commit {{sha}} is already verified in the PR`,deliveryCommit:`commit {{sha}}`,prClosed:`PR closed without merge`,reopen:`Reopen`,iteratingPr:`Updating PR`,prReady:`PR ready`,implementationFailed:`Implementation failed`,implementationFailedHint:`The implementation run failed. Open the run log, then discard this card before relaunching.`,prFailed:`PR failed`,prFailedDetail:`PR failed: {{detail}}`,createDegraded:`Couldn't publish the PR — {{detail}}. Retry when resolved.`,createPr:`Create PR`,createPrTooltip:`→ {{base}}`,publish:`Publish`,publishTooltip:`Open this draft PR for team review`,checkout:`Checkout`,checkoutTooltip:`Check out {{branch}} in the main project folder`,checkoutSuccess:`Checked out {{branch}}`,checkoutFailed:`Could not check out the PR branch`,checkoutDirtyTitle:`Checkout blocked to protect your changes`,checkoutDirtyBody:`The main project folder has uncommitted changes. Commit or stash them, then retry. Nothing was changed.`,checkoutSafetyUnknownTitle:`Checkout paused because safety could not be verified`,checkoutSafetyUnknownBody:`Specrails could not read the main project folder’s Git status. Nothing was released or changed. Retry after Git is available.`,checkoutNotDeliverableTitle:`This PR branch is not the preserved implementation`,checkoutNotDeliverableBody:`No exact delivery commit has been verified yet. Inspect or recover the local result instead.`,inspectLocalResult:`Inspect local result`,inspectLocalResultTooltip:`Reveal the preserved isolated worktree and copy its path`,localResultPathCopied:`Local result path copied`,localResultPath:`Preserved local result`,localResultUnavailableHere:`No recoverable worktree is available on this computer. Review the run log from the machine where it executed.`,recoverAndRetry:`Commit & retry push`,recoverAndRetryConfirmTitle:`Commit and push the preserved result?`,recoverAndRetryConfirmBody:`Specrails will use only the isolated worktree or recorded fast-forward branch for {{branch}}. It will commit deliverable files if needed, then push the exact commit only if the PR is still open on the expected head and base. Your main project folder and its uncommitted changes will not be touched.`,recoverAndRetryVerified:`Recovered commit {{sha}} is verified in the PR`,recoveryStillBlocked:`Local recovery still needs attention`,recheckRecovery:`Check again`,recheckRecoveryConfirmTitle:`Check this computer again?`,recheckRecoveryConfirmBody:`Specrails will rescan this clone’s delivery-owned worktree, branch, refs, reflogs, and orphan Git objects for {{branch}}. If it proves one result, it may commit isolated changes and retry the exact push. Your main project folder will not be touched.`,recoveryUnavailable:`Recovery could not be verified on this computer`,recoveryUnavailableBody:`Specrails could not safely prove one delivery-owned result in this clone. Nothing was changed or removed. Inspect the stage detail and run logs. If the run executed on another computer, open Specrails there, then check again.`,recoveryDetailSummary:`Technical recovery detail`,discard:`Discard`,dismiss:`Dismiss follow-up`,discardLocalResult:`Discard local result`,discardTooltip:`Close the delivery and return its tickets to Specs; changed local work is preserved`,retryPr:`Retry PR`,retry:`Retry`,checkMerge:`Check merge`,verifyPr:`Verify PR`,verifyPrTooltip:`Verify the exact commit in GitHub and check whether the PR is merged`,checkMergeTooltip:`Ask GitHub whether the PR has been merged`,prLinkFallback:`PR`,openPrTitle:`Open the PR on GitHub`,notMergedYet:`Not merged yet`,commitMissingRetry:`The delivery commit is no longer in the PR. Retry push is available again.`,prVerifiedWaiting:`Commit {{sha}} verified · waiting for merge`,alreadyResolved:`Already resolved elsewhere`,ghFailed:`GitHub CLI failed: {{detail}}`,actionFailed:`Couldn't apply the PR decision`,mergedToast:`PR merged — tickets moved to Done`,discardedToast:`PR discarded — tickets returned to Specs`,decisionPending:`This rail has a pending PR decision — create, publish or discard it before relaunching`,discardConfirmTitle:`Discard this delivery?`,discardConfirmBody:`The PR will be closed without deleting its remote branch. Only SpecRails-owned local branches and worktrees that are still at their recorded commit will be removed; anything changed will be preserved with a warning. The tickets will return to the Specs backlog. Removed local resources cannot be recovered.`,implementationFailedDiscardTitle:`Discard this failed delivery?`,implementationFailedDiscardBody:`The card will be cleared and its tickets will return to Specs. Local work and branches will be kept for inspection. Only resources proven safe to clean up may be removed.`,dismissConfirmTitle:`Dismiss this follow-up?`,dismissConfirmBody:`This follow-up card will be cleared. Its owned worktree will be removed only if it is still safe; otherwise it will be preserved with a warning. The existing PR, its branch, and review state will remain unchanged.`,discardLocalConfirmTitle:`Discard the local result?`,discardLocalConfirmBody:`The recoverable local iteration will be removed only if it is still safe; if it changed, it will be preserved with a warning. Any existing PR and its branch will remain unchanged. A removed result cannot be recovered.`,mergeLocal:`Integrate locally`,mergeLocalTooltip:`Merge the delivered branches into {{base}} in your local checkout (no GitHub needed)`,mergeLocalConfirmTitle:`Integrate locally?`,mergeLocalConfirmBody:`The delivered branches will be merged into {{base}} in your local checkout. Your checkout must be on {{base}} with a clean working tree.`,mergeLocalBlockedDirty:`Cannot integrate: your working tree on {{base}} has uncommitted changes. Commit or stash them, then retry.`,mergeLocalBlockedBranch:`Cannot integrate: your checkout is on {{current}}, not {{base}}. Check out {{base}}, then retry.`,mergeLocalFailed:`Local merge failed: {{detail}}`,mergedLocally:`Integrated into {{base}} locally`,viewRunLog:`View run log for {{ref}}`,cleanupIncomplete_one:`Cleanup is incomplete ({{count}} warning)`,cleanupIncomplete_other:`Cleanup is incomplete ({{count}} warnings)`,cleanupIncompleteHint:`Local recovery data was preserved. Inspect these details before removing anything manually.`,copyCleanupDetails:`Copy recovery details`,safetyArchiveTitle:`Safety archive ({{count}})`,safetyArchiveHint:`Temporary workspace files were preserved outside the PR as a precaution. You can inspect or remove them manually.`,copySafetyArchive:`Copy paths`,unit:{failed:`implementation failed`,blocked:`delivery blocked`,noChanges:`no changes`,succeeded:`ready`}},i={title:`Rails`,runningCount_one:`{{count}} running`,runningCount_other:`{{count}} running`,launchAll:`Launch all`,launchAllTitle:`Launch every ready rail in parallel — each run is isolated in its own git worktree`},a={skipRunning_one:`{{count}} already running`,skipRunning_other:`{{count}} already running`,skipEmpty_one:`{{count}} without specs`,skipEmpty_other:`{{count}} without specs`,skipPendingDecision_one:`{{count}} awaiting a PR decision`,skipPendingDecision_other:`{{count}} awaiting a PR decision`,skipOnReview_one:`{{count}} with specs on review`,skipOnReview_other:`{{count}} with specs on review`,skipInFlight_one:`{{count}} skipped (spec already in flight)`,skipInFlight_other:`{{count}} skipped (specs already in flight)`,failedCount_one:`{{count}} failed`,failedCount_other:`{{count}} failed`},o={title:`Launch all rails`,railsCount_one:`{{count}} rail`,railsCount_other:`{{count}} rails`,specsCount_one:`{{count}} spec`,specsCount_other:`{{count}} specs`,isolationTitle:`Parallel & isolated.`,isolationBody:`Each rail runs in its own git worktree — concurrent launches never collide.`,pipelinesTitle_one:`{{count}} AI pipeline.`,pipelinesTitle_other:`{{count}} AI pipelines.`,pipelinesBody:`One launch per rail, each with its configured mode, engine and profile.`,costTitle:`Multiplied cost.`,costBody:`Every rail spawns its own AI run — spend scales with the number of rails.`,launch_one:`Launch {{count}} rail`,launch_other:`Launch {{count}} rails`},s={viewJobLog:`View job log`,log:`Log`,implement:`Implement`,batch:`Batch`,freestyle:`Freestyle`,freestyleTitle:`Freestyle — the selected provider implements the spec autonomously, no pipeline`,loop:`Loop`,loopTitle:`Loop — run a published automation loop against the rail's specs`,pickLoop:`Pick a loop…`,effortTitle:`Reasoning effort`,stop:`Stop`,play:`Play`,failedRetry:`Job failed — click to retry`,addSpecsFirst:`Add specs to this rail first`,builtInLoops:`Built-in`,customLoops:`Custom loops`,worktreesMerged:`{{count}} merged`,worktreesNeedsReview:`{{count}} need review`,execSteps:`{{count}} steps`,execLines:`{{count}} lines`,openspec:`OpenSpec`},c={moveToSpecs:`Move to Specs`,deleteRail:`Delete {{label}}`,dropHere:`Drop here`,dropOnThisRail:`Drop on this rail`,dragSpecsHere:`Drag specs here`},l={title:`Launch in Freestyle mode`,context_one:`{{rail}} · {{count}} spec`,context_other:`{{rail}} · {{count}} specs`,noPipelineTitle:`No OpenSpec pipeline.`,noPipelineBody:`The structured architect → developer → reviewer flow is skipped entirely.`,autonomyTitle:`Native {{provider}} autonomy.`,autonomyBody:`{{provider}} works on its own using native agents and dynamic workflows.`,costTitle:`Variable cost.`,costBody:`Spend depends on what {{provider}} decides to do — it can be higher than expected.`,continue:`Continue`},u={fetchFailed:`Failed to fetch rails: {{status}}`},d={chipNew:`New PR`,chipTitle:`Deliver into an existing PR`,clear:`Clear PR target`,newPr:`New PR (default)`,loading:`Loading open PRs…`,none:`No open PRs found`,fork:`Fork — not pushable`,manualPlaceholder:`PR number`,manualUse:`Use`,confirmTitle:`Deliver into existing PR?`,confirmBody:`This run works on the PR's head branch and pushes into it — no new PR is created.`,confirmBranch:`Head branch`,confirmLaunch:`Launch into PR #{{number}}`,errors:{invalid_target_pr:`Invalid PR number`,target_pr_requires_pr_mode:`Delivering into an existing PR needs the isolated PR flow`,target_pr_not_found:`PR not found on this repository`,target_pr_not_open:`That PR is not open anymore`,target_pr_fork:`That PR comes from a fork and cannot be pushed to`,target_pr_invalid:`The PR's branches are unusable as a delivery target`,target_pr_unfetchable:`The PR's head branch could not be fetched`}},f={toasts:n,railPr:r,railsBoard:i,launchAll:a,launchAllDialog:o,railControls:s,railRow:c,freestyleDialog:l,useRails:u,targetPr:d};export{t};
|