9remote 3.0.33 → 3.0.39
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/dist/cli.cjs +181 -163
- package/dist/extension/background.js +261 -0
- package/dist/extension/icons/icon128.png +0 -0
- package/dist/extension/icons/icon16.png +0 -0
- package/dist/extension/icons/icon48.png +0 -0
- package/dist/extension/manifest.json +11 -0
- package/dist/extension/popup.html +58 -0
- package/dist/extension/popup.js +23 -0
- package/dist/ptyDaemon.cjs +9 -9
- package/dist/server.cjs +843 -529
- package/dist/ui/assets/index-BKC13tXO.js +8 -0
- package/dist/ui/index.html +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +2 -2
- package/dist/web/__next._full.txt +8 -8
- package/dist/web/__next._head.txt +1 -1
- package/dist/web/__next._index.txt +7 -7
- package/dist/web/__next._tree.txt +2 -2
- package/dist/web/_next/static/chunks/1222.16edfbb0beb9081f.js +1 -0
- package/dist/web/_next/static/chunks/1228.c4aa83586b3730b6.js +1 -0
- package/dist/web/_next/static/chunks/1243.3f23d89283c156ea.js +1 -0
- package/dist/web/_next/static/chunks/132.71f657e5a607b7d3.js +1 -0
- package/dist/web/_next/static/chunks/1750.ea89a41e86ac2790.js +1 -0
- package/dist/web/_next/static/chunks/2038.b77e2c3d38385a76.js +1 -0
- package/dist/web/_next/static/chunks/213.ae43f03862ad9cc1.js +1 -0
- package/dist/web/_next/static/chunks/2180.edcf5dc3d77ceee8.js +1 -0
- package/dist/web/_next/static/chunks/2849.d810c3fdb2054b14.js +1 -0
- package/dist/web/_next/static/chunks/3429.e69c6bd48e1207a9.js +1 -0
- package/dist/web/_next/static/chunks/3514.20bd03c8194dec25.js +1 -0
- package/dist/web/_next/static/chunks/{4300-07e861bf93bf7d91.js → 4300-a66b52c9e1a27db3.js} +1 -1
- package/dist/web/_next/static/chunks/4643.1e356e007756e19d.js +1 -0
- package/dist/web/_next/static/chunks/5788-f0c87f9c14fa0ff9.js +1 -0
- package/dist/web/_next/static/chunks/6419.34fdd4aa97c5cc5d.js +1 -0
- package/dist/web/_next/static/chunks/6739.22a05398bfd34922.js +1 -0
- package/dist/web/_next/static/chunks/674.b2f5d5fc3fb84c4a.js +1 -0
- package/dist/web/_next/static/chunks/6742.88fddf128fbeb43d.js +1 -0
- package/dist/web/_next/static/chunks/7507.77d9ac9eb03518f7.js +1 -0
- package/dist/web/_next/static/chunks/7960.2754ce9111bef59e.js +1 -0
- package/dist/web/_next/static/chunks/8467.c2c0273ac5e97e34.js +1 -0
- package/dist/web/_next/static/chunks/8638.f44546e4532d76e8.js +1 -0
- package/dist/web/_next/static/chunks/8762-e88a7f91d20d82bd.js +1 -0
- package/dist/web/_next/static/chunks/8922-4c589850b01d2e12.js +1 -0
- package/dist/web/_next/static/chunks/925.7cfb725e605559a0.js +1 -0
- package/dist/web/_next/static/chunks/9259.97e2f3306fc149c7.js +1 -0
- package/dist/web/_next/static/chunks/9299.e37149b455be7e9d.js +1 -0
- package/dist/web/_next/static/chunks/app/dev/question/page-c7128ddf798789f1.js +1 -0
- package/dist/web/_next/static/chunks/app/layout-a0e78c8427f97e4f.js +1 -0
- package/dist/web/_next/static/chunks/app/login/{page-df0619de376c5db8.js → page-2a046d10af50c87a.js} +1 -1
- package/dist/web/_next/static/chunks/app/{page-d0e1fb551728bb6f.js → page-8387dba850541259.js} +2 -2
- package/dist/web/_next/static/chunks/app/workspace/layout-9b28454945238595.js +20 -0
- package/dist/web/_next/static/chunks/webpack-beef15eb580fc66b.js +1 -0
- package/dist/web/_next/static/css/c48f9629be2a67b4.css +1 -0
- package/dist/web/_not-found/__next._full.txt +7 -7
- package/dist/web/_not-found/__next._head.txt +1 -1
- package/dist/web/_not-found/__next._index.txt +7 -7
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web/_not-found/__next._not-found.txt +1 -1
- package/dist/web/_not-found/__next._tree.txt +2 -2
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +7 -7
- package/dist/web/admin/__next._full.txt +8 -8
- package/dist/web/admin/__next._head.txt +1 -1
- package/dist/web/admin/__next._index.txt +7 -7
- package/dist/web/admin/__next._tree.txt +2 -2
- package/dist/web/admin/__next.admin.__PAGE__.txt +2 -2
- package/dist/web/admin/__next.admin.txt +1 -1
- package/dist/web/admin/access/__next._full.txt +8 -8
- package/dist/web/admin/access/__next._head.txt +1 -1
- package/dist/web/admin/access/__next._index.txt +7 -7
- package/dist/web/admin/access/__next._tree.txt +2 -2
- package/dist/web/admin/access/__next.admin.access.__PAGE__.txt +2 -2
- package/dist/web/admin/access/__next.admin.access.txt +1 -1
- package/dist/web/admin/access/__next.admin.txt +1 -1
- package/dist/web/admin/access.html +1 -1
- package/dist/web/admin/access.txt +8 -8
- package/dist/web/admin/login/__next._full.txt +8 -8
- package/dist/web/admin/login/__next._head.txt +1 -1
- package/dist/web/admin/login/__next._index.txt +7 -7
- package/dist/web/admin/login/__next._tree.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.txt +1 -1
- package/dist/web/admin/login/__next.admin.txt +1 -1
- package/dist/web/admin/login.html +1 -1
- package/dist/web/admin/login.txt +8 -8
- package/dist/web/admin/ota/__next._full.txt +8 -8
- package/dist/web/admin/ota/__next._head.txt +1 -1
- package/dist/web/admin/ota/__next._index.txt +7 -7
- package/dist/web/admin/ota/__next._tree.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.txt +1 -1
- package/dist/web/admin/ota/__next.admin.txt +1 -1
- package/dist/web/admin/ota.html +1 -1
- package/dist/web/admin/ota.txt +8 -8
- package/dist/web/admin/turn/__next._full.txt +8 -8
- package/dist/web/admin/turn/__next._head.txt +1 -1
- package/dist/web/admin/turn/__next._index.txt +7 -7
- package/dist/web/admin/turn/__next._tree.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.txt +1 -1
- package/dist/web/admin/turn/__next.admin.txt +1 -1
- package/dist/web/admin/turn.html +1 -1
- package/dist/web/admin/turn.txt +8 -8
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +8 -8
- package/dist/web/dev/question/__next._full.txt +8 -8
- package/dist/web/dev/question/__next._head.txt +1 -1
- package/dist/web/dev/question/__next._index.txt +7 -7
- package/dist/web/dev/question/__next._tree.txt +2 -2
- package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +2 -2
- package/dist/web/dev/question/__next.dev.question.txt +1 -1
- package/dist/web/dev/question/__next.dev.txt +1 -1
- package/dist/web/dev/question.html +1 -1
- package/dist/web/dev/question.txt +8 -8
- package/dist/web/download/__next._full.txt +8 -8
- package/dist/web/download/__next._head.txt +1 -1
- package/dist/web/download/__next._index.txt +7 -7
- package/dist/web/download/__next._tree.txt +2 -2
- package/dist/web/download/__next.download.__PAGE__.txt +2 -2
- package/dist/web/download/__next.download.txt +1 -1
- package/dist/web/download.html +1 -1
- package/dist/web/download.txt +8 -8
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +8 -8
- package/dist/web/login/__next._full.txt +8 -8
- package/dist/web/login/__next._head.txt +1 -1
- package/dist/web/login/__next._index.txt +7 -7
- package/dist/web/login/__next._tree.txt +2 -2
- package/dist/web/login/__next.login.__PAGE__.txt +2 -2
- package/dist/web/login/__next.login.txt +1 -1
- package/dist/web/login.html +1 -1
- package/dist/web/login.txt +8 -8
- package/dist/web/sw.js +2 -8
- package/dist/web/workspace/__next._full.txt +8 -8
- package/dist/web/workspace/__next._head.txt +1 -1
- package/dist/web/workspace/__next._index.txt +7 -7
- package/dist/web/workspace/__next._tree.txt +2 -2
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
- package/dist/web/workspace/__next.workspace.txt +2 -2
- package/dist/web/workspace/browse/__next._full.txt +8 -8
- package/dist/web/workspace/browse/__next._head.txt +1 -1
- package/dist/web/workspace/browse/__next._index.txt +7 -7
- package/dist/web/workspace/browse/__next._tree.txt +2 -2
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.browse.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.txt +2 -2
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +8 -8
- package/dist/web/workspace/editor/__next._full.txt +8 -8
- package/dist/web/workspace/editor/__next._head.txt +1 -1
- package/dist/web/workspace/editor/__next._index.txt +7 -7
- package/dist/web/workspace/editor/__next._tree.txt +2 -2
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.editor.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.txt +2 -2
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +8 -8
- package/dist/web/workspace/files/__next._full.txt +8 -8
- package/dist/web/workspace/files/__next._head.txt +1 -1
- package/dist/web/workspace/files/__next._index.txt +7 -7
- package/dist/web/workspace/files/__next._tree.txt +2 -2
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.files.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.txt +2 -2
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +8 -8
- package/dist/web/workspace/git/__next._full.txt +8 -8
- package/dist/web/workspace/git/__next._head.txt +1 -1
- package/dist/web/workspace/git/__next._index.txt +7 -7
- package/dist/web/workspace/git/__next._tree.txt +2 -2
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.git.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.txt +2 -2
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +8 -8
- package/dist/web/workspace/mobile/__next._full.txt +8 -8
- package/dist/web/workspace/mobile/__next._head.txt +1 -1
- package/dist/web/workspace/mobile/__next._index.txt +7 -7
- package/dist/web/workspace/mobile/__next._tree.txt +2 -2
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.txt +2 -2
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +8 -8
- package/dist/web/workspace/pair/__next._full.txt +8 -8
- package/dist/web/workspace/pair/__next._head.txt +1 -1
- package/dist/web/workspace/pair/__next._index.txt +7 -7
- package/dist/web/workspace/pair/__next._tree.txt +2 -2
- package/dist/web/workspace/pair/__next.workspace.pair.__PAGE__.txt +1 -1
- package/dist/web/workspace/pair/__next.workspace.pair.txt +1 -1
- package/dist/web/workspace/pair/__next.workspace.txt +2 -2
- package/dist/web/workspace/pair.html +1 -1
- package/dist/web/workspace/pair.txt +8 -8
- package/dist/web/workspace/remote/__next._full.txt +8 -8
- package/dist/web/workspace/remote/__next._head.txt +1 -1
- package/dist/web/workspace/remote/__next._index.txt +7 -7
- package/dist/web/workspace/remote/__next._tree.txt +2 -2
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.remote.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.txt +2 -2
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +8 -8
- package/dist/web/workspace/terminal/default/__next._full.txt +22 -21
- package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
- package/dist/web/workspace/terminal/default/__next._index.txt +7 -7
- package/dist/web/workspace/terminal/default/__next._tree.txt +2 -2
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.txt +2 -2
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +22 -21
- package/dist/web/workspace/welcome/__next._full.txt +8 -8
- package/dist/web/workspace/welcome/__next._head.txt +1 -1
- package/dist/web/workspace/welcome/__next._index.txt +7 -7
- package/dist/web/workspace/welcome/__next._tree.txt +2 -2
- package/dist/web/workspace/welcome/__next.workspace.txt +2 -2
- package/dist/web/workspace/welcome/__next.workspace.welcome.__PAGE__.txt +1 -1
- package/dist/web/workspace/welcome/__next.workspace.welcome.txt +1 -1
- package/dist/web/workspace/welcome.html +1 -1
- package/dist/web/workspace/welcome.txt +8 -8
- package/dist/web/workspace/workspaces/__next._full.txt +8 -8
- package/dist/web/workspace/workspaces/__next._head.txt +1 -1
- package/dist/web/workspace/workspaces/__next._index.txt +7 -7
- package/dist/web/workspace/workspaces/__next._tree.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +1 -1
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +1 -1
- package/dist/web/workspace/workspaces.html +1 -1
- package/dist/web/workspace/workspaces.txt +8 -8
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +8 -8
- package/package.json +5 -2
- package/dist/ui/assets/index-DaXUWL4p.js +0 -8
- package/dist/web/_next/static/chunks/1222.a2ce7d7f04241e2a.js +0 -1
- package/dist/web/_next/static/chunks/1228.046ad5fd038f5192.js +0 -1
- package/dist/web/_next/static/chunks/1243.1d11020940b8a88b.js +0 -1
- package/dist/web/_next/static/chunks/132.1ed2fce3a4b6f7ee.js +0 -1
- package/dist/web/_next/static/chunks/1750.09ca4eade7a6e5d3.js +0 -1
- package/dist/web/_next/static/chunks/2038.b7c72b442a1b2d92.js +0 -1
- package/dist/web/_next/static/chunks/2081-e831caac4b77c71b.js +0 -1
- package/dist/web/_next/static/chunks/213.f07a816120a320ba.js +0 -1
- package/dist/web/_next/static/chunks/2180.23585bd3f3308f3a.js +0 -1
- package/dist/web/_next/static/chunks/2849.360e2c64521fa795.js +0 -1
- package/dist/web/_next/static/chunks/3429.98d7e79ff6d2a6ce.js +0 -1
- package/dist/web/_next/static/chunks/3514.9079bf49bb3e05c9.js +0 -1
- package/dist/web/_next/static/chunks/4643.ddf3ea3a760e73a5.js +0 -1
- package/dist/web/_next/static/chunks/5788-1564be0da354c064.js +0 -1
- package/dist/web/_next/static/chunks/6419.99aa173d83f20370.js +0 -1
- package/dist/web/_next/static/chunks/6739.82570eba0a02cb26.js +0 -1
- package/dist/web/_next/static/chunks/674.97a7237f011fb986.js +0 -1
- package/dist/web/_next/static/chunks/6742.bc3783b9784ead96.js +0 -1
- package/dist/web/_next/static/chunks/7507.28a3807b5d02a5c1.js +0 -1
- package/dist/web/_next/static/chunks/7960.026e07028dd25edb.js +0 -1
- package/dist/web/_next/static/chunks/8467.290e9bde34b58e7c.js +0 -1
- package/dist/web/_next/static/chunks/8638.237712645dcdcb8a.js +0 -1
- package/dist/web/_next/static/chunks/8922-6961d48ca52e1c93.js +0 -1
- package/dist/web/_next/static/chunks/925.fe600c6039a3201d.js +0 -1
- package/dist/web/_next/static/chunks/9259.c450f561db04037d.js +0 -1
- package/dist/web/_next/static/chunks/9299.83236781dfa74eb0.js +0 -1
- package/dist/web/_next/static/chunks/app/dev/question/page-4bb0cca12fac67eb.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-db3ce810a0a58245.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/layout-962bdc55fd3688d7.js +0 -15
- package/dist/web/_next/static/chunks/webpack-d2ee6953aa988e78.js +0 -1
- package/dist/web/_next/static/css/68a0b2d972b421cb.css +0 -1
- package/dist/web/proxy.html +0 -179
- package/dist/web/sw-site.js +0 -283
- package/dist/web/swBridgeClaim.js +0 -57
- /package/dist/web/_next/static/{wQF273g4wNnUv72vtLjBT → hFRLMLaLieW6POo9cLvLQ}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{wQF273g4wNnUv72vtLjBT → hFRLMLaLieW6POo9cLvLQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[925],{30925:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a});let a={common:{statusIdle:"Idle",statusWorking:"Working",statusBlocked:"Needs input",statusDone:"Your turn",loading:"Laden...",cancel:"Annuleren",confirm:"Bevestigen",save:"Opslaan",delete:"Verwijderen",close:"Sluiten",back:"Terug",edit:"Bewerken",rename:"Hernoemen",remove:"Verwijderen",open:"Openen",yes:"Ja",no:"Nee",ok:"OK",error:"Fout",success:"Gelukt",failed:"Mislukt",retry:"Opnieuw proberen",refresh:"Vernieuwen",clipboard:"Clipboard",clipboardCopy:"Copy",clipboardEmpty:"Clipboard is empty",search:"Zoeken",create:"Aanmaken",new:"Nieuw",add:"Toevoegen",copy:"Kopi\xebren",copied:"Gekopieerd",download:"Downloaden",upload:"Uploaden",enabled:"Ingeschakeld",disabled:"Uitgeschakeld",on:"aan",off:"uit",minute:"min",hour:"u",day:"d",minutesAgo:"{n} min geleden",hoursAgo:"{n} uur geleden",daysAgo:"{n} dagen geleden"},login:{tagline:"Toegang tot uw terminal vanaf elke locatie",heroLine1:"Any machine.",heroLine2:"One terminal.",heroLine3:"In your pocket.",featureTerminal:"Terminal",featureDesktop:"Desktop",featureFiles:"Files",termConnected:"host connected",termTunnel:"tunnel established",termReady:"ready",accessKey:"Toegangssleutel",placeholder:"sk-xxx... of eenmalige sleutel (ABC123)",rememberKey:"Onthoud deze sleutel",connect:"Verbinden",connecting:"Verbinden...",authenticating:"Authenticeren met token...",invalidKeyTail:"Wrong access key — check the last characters and try again.",scanQr:"Scan QR to login",qrScanTitle:"Scan QR Code",qrHint:"Point the camera at the QR code shown on the machine running 9Remote.",qrDetected:"QR Code detected!",qrAuthenticating:"Authenticating...",qrPleaseWait:"Please wait...",qrLibFail:"Failed to load the QR scanner library.",qrInitFail:"Could not start the scanner.",qrCamDenied:"Camera permission denied. Allow camera access and try again.",qrNoCamera:"No camera found on this device.",qrCamBusy:"Camera is in use by another app.",qrCamError:"Could not open the camera.",savedKeys:"Opgeslagen sleutels",login:"Inloggen",lastLogin:"Laatste login",namePlaceholder:"Name this key (optional)",rename:"Rename",deleteKeyTitle:"Delete key",deleteKeyConfirm:'Are you sure you want to delete "{name}"?',justNow:"Zojuist",minutesAgo:"{n}m geleden",hoursAgo:"{n}u geleden",daysAgo:"{n}d geleden",tapToScan:"Tik om te scannen",orEnterManually:"of voer de sleutel handmatig in",addKey:"Add Key",secureTitle:"Secure & Encrypted",secureDesc:"All connections are end-to-end encrypted and secure.",featAccessTitle:"Access Anywhere",featAccessDesc:"Connect from any device, anywhere.",featSecureTitle:"Secure Connection",featSecureDesc:"End-to-end encryption keeps you safe.",featFastTitle:"Fast & Reliable",featFastDesc:"Low latency and high performance.",featSessionsTitle:"Multiple Sessions",featSessionsDesc:"Manage and switch between sessions.",home:"Home",docs:"Documentatie"},menu:{reloadRestart:"Reload & Restart",restartHost:"Restart 9remote host",restartConfirmTitle:"Restart 9remote host?",restartConfirmMessage:"This restarts the host process (no reinstall). Terminal sessions are preserved. It takes a few seconds.",restartStarting:"Restarting host…",restartRestarting:"Restarting 9remote…",restartDone:"Restarted! Reconnecting…",restartTimeout:"Restart is taking too long",restartTimeoutHint:"Reconnect manually if it doesn't recover.",title:"Menu",language:"Taal",theme:"Thema",notifications:"Meldingen",webgl:"GPU Render (Faster)",webglHint:"Schakel uit als tekst verkeerd lijkt",notificationsHint:"Notify when agent finishes",orientation:"Schermori\xebntatie",orientationPortrait:"Staand",orientationAuto:"Auto",files:"File Explorer",downloading:"Downloading",copying:"Copying",conflictTitle:"File already exists",conflictMessage:"{name} already exists. Replace or skip?",skip:"Skip",skipAll:"Skip all",replace:"Replace",replaceAll:"Replace all",sites:"Sites",commandNotes:"Commando-notities",community:"Community",installApp:"App installeren",codespace:"Codespace",logout:"Uitloggen",settingsGeneral:"General",settingsAppearance:"Appearance",settingsTerminalTab:"Terminal",settingsMcp:"Plugins",mcpIntro:"Extra abilities you can give your AI coding tools.",mcpTools:"Allow",mcpRestartHint:"Turning it off applies at once. Turning it on needs the AI tool restarted.",mcpUnavailable:"Update this host to use MCP.",artifactFormats:"Formats it can show",mcpClients:"Works with",settingsWorkspace:"Workspace",settingsApplication:"Application",settingsAccount:"Account",themeLight:"Light",themeDark:"Dark",reload:"App herladen",remoteDesktop:"Extern bureaublad",settings:"Instellingen",enablePush:"Pushmeldingen inschakelen",disablePush:"Pushmeldingen uitschakelen",pushHint:"Schakel pushmeldingen in om gewaarschuwd te worden wanneer AI taken voltooit",pushActiveHint:"Push notifications are on for this device. You'll be alerted when AI completes tasks.",versionMismatch:"Host {version} is verouderd",versionMismatchHint:"Sommige functies werken mogelijk niet. Voer uit:",updateNow:"Update now",updating:"Updating… reconnecting",webReloadTitle:"New web version available",webReloadHint:"Reload to get the latest interface.",reloadWeb:"Reload",updateAvailableTitle:"9Remote host update available",updateStarting:"Starting update…",updateInstalling:"Installing new version…",updateTimeout:"Update is taking too long",updateTimeoutHint:"Reload manually if it doesn't recover.",updateRestarting:"Restarting host…",updateReconnecting:"Reconnecting…",updateDone:"Updated! Reloading…",version:"Versie"},workspace:{loading:"Laden...",logoutTitle:"Uitloggen",logoutMessage:"Weet u zeker dat u wilt uitloggen?",failedCreateSession:"Sessie aanmaken mislukt: {error}",failedRenameSession:"Sessie hernoemen mislukt: {error}"},sessions:{headerTitle:"9remote.cc",connected:"Verbonden",disconnected:"Verbinding verbroken",codespaceStopped:"Codespace gestopt",placeholder:"Terminalnaam (optioneel)",newButton:"+ Nieuw",empty:"Geen actieve sessies",emptyHint:"Maak een nieuwe sessie aan om te beginnen",created:"Aangemaakt {time}",deleteTitle:"Sessie verwijderen",deleteMessage:'Weet u zeker dat u "{name}" wilt verwijderen?',editName:"Naam bewerken",newTerminal:"Nieuwe terminal",options:"Options"},workspaces:{title:"Groups",newWorkspace:"Group",newWorkspacePrompt:"Group name",defaultName:"New Group",ungrouped:"Ungrouped",addTerminal:"Add terminal to group",moveToWorkspace:"Move to group",rename:"Rename group",delete:"Delete group",emptyWorkspace:"No terminals in this group",deleteTitle:"Delete Group",deleteMessage:'Delete group "{name}"? Terminals move to Ungrouped.'},terminal:{quotaNoData:"No quota data",quotaUsageTitle:"usage",back:"Terug",menu:"Menu",newTerminal:"Nieuwe terminal",remoteDesktop:"Extern bureaublad",defaultName:"Term"},files:{selectWorkspace:"Werkruimte selecteren",recentWorkspaces:"Recente werkruimten",home:"Home",root:"Root",drive:"Schijf {letter}",codespaces:"Codespaces",removeRecent:"Verwijderen uit recent",removeTitle:"Werkruimte verwijderen",removeMessage:'"{name}" verwijderen uit recente werkruimten?',setAsWorkspace:"Instellen als werkruimte",openFolder:"Map openen",newFile:"Nieuw bestand",newFolder:"Nieuwe map",rename:"Hernoemen",delete:"Verwijderen",deleteFile:"Bestand verwijderen",deleteFolder:"Map verwijderen",deleteFileMessage:'"{name}" verwijderen?',deleteFolderMessage:'Map "{name}" en alle inhoud verwijderen?',emptyFolder:"Lege map",git:"Git",parent:"Bovenliggende map",workspace:"Werkruimte",failedLoad:"Laden mislukt: {error}",failedDelete:"Verwijderen mislukt: {error}",failedCreate:"Aanmaken mislukt: {error}",failedRename:"Hernoemen mislukt: {error}",enterName:"Voer naam in",confirmRename:"Hernoemen naar:",setWorkspace:"Werkruimte instellen",setAsWorkspaceTitle:"Instellen als werkruimte",switchWorkspace:"Werkruimte wisselen",searchFiles:"Bestanden zoeken",toggleHidden:"Verborgen bestanden wisselen",searchPlaceholder:"Bestanden zoeken...",searching:"Zoeken...",noFilesFound:"Geen bestanden gevonden",noGitRepo:"Geen Git-repository",cannotOpenBinary:"Kan binair bestand niet openen",createNew:"Nieuw aanmaken",file:"Bestand",folder:"Map",placeholderFile:"bestandsnaam.js",placeholderFolder:"map-naam",pickFile:"Choose files",pickFolder:"Choose folder",copyPath:"Pad kopi\xebren",copyRelPath:"Copy Relative Path",copyName:"Copy Filename",delete:"Verwijderen",rename:"Hernoemen",deleteConfirmTitle:"Verwijderen",deleteConfirmMessage:'"{name}" verwijderen?'},editor:{save:"Opslaan",saving:"Opslaan...",saved:"Opgeslagen",unsaved:"Niet-opgeslagen wijzigingen",close:"Sluiten",discard:"Verwerpen",discardTitle:"Wijzigingen verwerpen",discardMessage:"U heeft niet-opgeslagen wijzigingen. Verwerpen?",unsavedTitle:"Save changes to {name}?",unsavedBody:"Your changes will be lost if you don't save them.",failedLoad:"Bestand laden mislukt: {error}",failedSave:"Opslaan mislukt: {error}",openFull:"Open in full editor",artifact:"Artifact",readOnly:"Alleen-lezen",line:"Regel",column:"Kolom",gitDiff:"Git Diff",typeText:"Tekst typen en invoegen...",insert:"Invoegen",statusModified:"Gewijzigd",statusAdded:"Toegevoegd",statusUntracked:"Niet bijgehouden"},git:{title:"Git",branch:"Branch",changes:"Wijzigingen",staged:"Staged",unstaged:"Unstaged",untracked:"Niet bijgehouden",commit:"Commit",commitAndPush:"Commit & Push",commitSuccess:"Commit successful",pushSuccess:"Push successful",stageFailed:"Failed to stage changes",commitFailed:"Commit failed",pushFailed:"Push failed",pullSuccess:"Pull successful",pullFailed:"Pull failed",stageAllConfirmTitle:"Stage All & Commit",stageAllConfirmMessage:"No changes are staged. Stage all changes and commit?",stageAndCommit:"Stage & Commit",gitActions:"Git actions",commitPlaceholder:"Commit message…",stageAllNote:"Stage all \xb7 {count}",upToDate:"Everything up-to-date",commitMessage:"Commit-bericht",push:"Push",pull:"Pull",fetch:"Fetch",stage:"Stage",stageAll:"Alles stagen",unstage:"Unstage",discard:"Verwerpen",discardChanges:"Wijzigingen verwerpen",discardMessage:'Wijzigingen aan "{name}" verwerpen?',noChanges:"Geen wijzigingen",diff:"Diff",pushing:"Pushen...",pulling:"Pullen...",committing:"Committen...",failedCommit:"Commit mislukt: {error}",failedPush:"Push mislukt: {error}",failedPull:"Pull mislukt: {error}",status:"Status",diffTab:"Diff",modified:"Gewijzigd",added:"Toegevoegd",deleted:"Verwijderd",untrackedTitle:"Niet bijgehouden",openFile:"Bestand openen",discardChangesTitle:"Wijzigingen verwerpen",discardConfirmTitle:"Wijzigingen verwerpen",discardConfirmDelete:'Weet u zeker dat u "{name}" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.',discardConfirmDiscard:'Weet u zeker dat u wijzigingen in "{name}" wilt verwerpen? Dit kan niet ongedaan worden gemaakt.'},remote:{title:"Extern bureaublad",connecting:"Verbinden...",disconnected:"Verbinding verbroken",fullscreen:"Volledig scherm",exitFullscreen:"Volledig scherm verlaten",receivingImage:"Receiving screen…",keyboard:"Toetsenbord",mouse:"Muis",quality:"Kwaliteit",fps:"FPS",debug:"Debug",help:"Help",close:"Sluiten",sendKey:"Toets verzenden",helpTitle:"Hulp extern bureaublad",notAvailable:"Extern bureaublad is niet beschikbaar",customizeKeys:"Toetsen aanpassen",back:"Terug",resetZoom:"Zoom resetten",refresh:"Vernieuwen",rectangleSelection:"Rechthoekige selectie",handMode:"Handmodus",toggleKeyboard:"Native toetsenbord wisselen",hideControls:"Hide controls",showControls:"Show controls",textBatchInput:"Tekst-batchinvoer",extraKeys:"Extra toetsen",customizeRemoteKeys:"Externe toetsen aanpassen",exitRemote:"Extern bureaublad verlaten",debugTitle:"Debug-statistieken",minimize:"Minimaliseren",transport:"Transport",latency:"Latentie",tilesPerSec:"Tegels/sec",bandwidth:"Bandbreedte",clearStats:"Statistieken wissen",lockTitle:"Windows is vergrendeld",lockGrantDesc:'Schakel "PC op afstand ontgrendelen" in 9remote host op deze PC in.',lockDesc:"Voer de Windows-PIN of het wachtwoord in voor deze computer",lockPlaceholder:"Windows-PIN of wachtwoord",unlock:"Ontgrendel",unlocking:"Ontgrendelen…",unlockFailed:"Ontgrendelen mislukt — controleer je PIN/wachtwoord en probeer opnieuw."},remoteHelp:{modePc:"PC / Muis",modeTrackpad:"Touch \xb7 Trackpad",modeDirect:"Touch \xb7 Direct",mouseTitle:"Muis",keyboardTitle:"Toetsenbord",gesturesTrackpadTitle:"Gebaren (Trackpad ✋)",gesturesDirectTitle:"Gebaren (Direct)",toolbarTitle:"Werkbalk",mouseClickKey:"Klik / Sleep",mouseClickDesc:"Linkermuisklik, slepen om te selecteren/verplaatsen",mouseRightKey:"Rechtermuisklik",mouseRightDesc:"Contextmenu op extern systeem",mouseWheelKey:"Wieltje",mouseWheelDesc:"Scrollen op extern systeem (Shift + wieltje = horizontaal)",mouseDoubleKey:"Dubbelklik",mouseDoubleDesc:"Dubbelklik op extern systeem",keyPhysicalKey:"Fysieke toetsen",keyPhysicalDesc:"Direct verzonden (Tab, F-toetsen, etc. opgevangen)",keyModifierKey:"Ctrl / Alt / Shift / ⌘",keyModifierDesc:"Plakkende modifier — combineer met volgende toets",trackpadSwipeKey:"1 vinger vegen",trackpadSwipeDesc:"Virtuele cursor verplaatsen",trackpadTapKey:"1 vinger tikken",trackpadTapDesc:"Linkermuisklik op cursor",trackpad2TapKey:"2 vingers tikken",trackpad2TapDesc:"Rechtermuisklik op cursor",trackpad2SwipeKey:"2 vingers vegen",trackpad2SwipeDesc:"Scrollen op cursorpositie",trackpadPinchKey:"2 vingers knijpen",trackpadPinchDesc:"Canvas zoomen",trackpadScrollLockKey:"Vasthouden + slepen",trackpadScrollLockDesc:"Houd vast om scrollen te vergrendelen, sleep in elke richting",directTapKey:"1 vinger tikken",directTapDesc:"Klikken op tikpositie",directLongKey:"1 vinger lang indrukken",directLongDesc:"Rechtermuisklik",directDoubleKey:"1 vinger dubbeltik",directDoubleDesc:"Dubbelklik",directScrollKey:"2 vingers vegen",directScrollDesc:"Scrollen op extern systeem",directPinchKey:"2 vingers knijpen",directPinchDesc:"Canvas zoomen",directPanKey:"1 vinger slepen (zoom>1)",directPanDesc:"Canvas pannen",toolbarHandDesc:"Linkermuisklik vasthouden (sleepmodus) — opnieuw tikken om los te laten",toolbarMouseDirectDesc:"Wisselen naar Direct-modus",toolbarMouseTrackpadDesc:"Wisselen naar Trackpad (virtuele cursor)",toolbarKeyboardDesc:"Native toetsenbord / tekst-batchinvoer",toolbarRectDesc:"Rechthoekige selectiemodus"},remoteControls:{enterToSend:"Tab / Ctrl+Num om van tabblad te wisselen",typeToSend:"Typ tekst om te verzenden...",send:"Verzenden",trackpadMode:"Trackpad-modus",directMode:"Direct-modus",bottomRow:"Onderste rij",extraPanel:"Extra paneel",exitConfirmMessage:"Weet u zeker dat u de huidige sessie van het externe bureaublad wilt verlaten?"},connection:{retrying:"Opnieuw verbinden...",waitingApproval:"Wachten op goedkeuring",approvalDescription:"De 9Remote host moet dit apparaat goedkeuren voordat u verbinding kunt maken.",approvalHint:"Controleer de terminal op uw machine.",rejectedTitle:"Apparaat geweigerd",rejectedDescription:"Dit apparaat is niet goedgekeurd door de 9Remote host.",backToLogin:"Terug naar login",failed:"Verbinding mislukt",failedDescription:"Kan geen verbinding maken na {n} pogingen",attemptOf:"Poging {n} van {total}",exit:"Afsluiten",cancel:"Annuleren",retry:"Nu opnieuw proberen"},notifications:{claudeCode:"Claude Code",codex:"Codex",geminiCli:"Gemini CLI",openCode:"OpenCode",needsInput:"needs input",badgeTitle:"{blocked} needs input, {done} your turn",replied:"replied",agent:"Agent"},sites:{title:"Sites",localSites:"Lokale sites",selectSitePreview:"Selecteer een site om te bekijken",browserNewTab:"New tab",browserAddressPlaceholder:"localhost:3000 or /path",browserNotConnected:"Connect to your host first",portPlaceholder:"poort",loadingSites:"Sites laden...",notConnected:"Not connected to the host",noSitesFound:"Geen sites gevonden",startServerHint:"Start een lokale dev-server om hier te verschijnen",siteNamePlaceholder:"Sitenaam",saveTitle:"Opslaan",editNameTitle:"Naam bewerken",removeTitle:"Verwijderen",removePortTitle:"Poort verwijderen",removePortMessage:"Poort {port} verwijderen uit opgeslagen lijst?",popupBlocked:"Pop-up geblokkeerd! Sta pop-ups toe voor deze site.",startProxyFailed:"Proxy-sessie starten mislukt voor {name}",foundCount:"{n} site{suffix} gevonden",focusOpenedTab:"Geopende tab focussen",openInNewTab:"Openen in nieuw tabblad",goBack:"Terug",goForward:"Vooruit",loadingSite:"Laden...",empty:"Geen actieve sites",emptyHint:"Voer een lokale server uit om hier te verschijnen",open:"Openen",refresh:"Vernieuwen"},commandNotes:{title:"Commando-notities",noSavedCommands:"Geen opgeslagen commando's",addFirstBelow:"Voeg hieronder uw eerste commando toe",clickToCopy:"Klik om te kopi\xebren",copiedBang:"Gekopieerd!",copy:"Kopi\xebren",edit:"Bewerken",delete:"Verwijderen",editCommandPlaceholder:"Commando bewerken...",addCommandPlaceholder:"Commando toevoegen...",update:"Bijwerken",add:"Toevoegen",empty:"Nog geen notities",emptyHint:"Sla commando's op voor snelle toegang",add:"Notitie toevoegen",edit:"Notitie bewerken",delete:"Notitie verwijderen",deleteMessage:"Deze notitie verwijderen?",name:"Naam",command:"Commando",save:"Opslaan",placeholderName:"bijv. Dev-server starten",placeholderCommand:"bijv. npm run dev"},mobileKeyboard:{pasteHere:"Hier plakken (Cmd+V)",enterToSend:"Tab / Ctrl+Num om van tabblad te wisselen",typeCommand:"Typ commando en verzend...",send:"Verzenden",toggleExtraKeys:"Extra toetsen wisselen",toggleTextInput:"Tekstinvoer wisselen",customizeTerminalKeys:"Terminaltoetsen aanpassen",mainBar:"Hoofdbalk",extraPanel:"Extra paneel",fileTooLarge:"Bestand te groot (max 5MB)",readFileFailed:"Bestand lezen mislukt",uploadFailed:"Bestand uploaden mislukt: {error}"},terminalPane:{scrollToBottom:"Scroll naar beneden",changedFiles:"Changed files",pasteOrType:"Plak of typ hier",paste:"Plakken"},pwaGuide:{copyYourKey:"Kopieer uw sleutel",copyKeyHint:"Tik op de sleutel hieronder om te kopi\xebren — u heeft deze nodig om in te loggen na installatie",tapToCopyApiKey:"Tik om API-sleutel te kopi\xebren",copiedBang:"Gekopieerd!",copy:"Kopi\xebren",tapShareButton:"Tik op de deelknop",tapShareHint:"Tik op de deelknop onderaan iOS Safari",addToHome:"Toevoegen aan beginscherm",addToHomeHint:'Scroll naar beneden en tik op "Toevoegen aan beginscherm"',openAppPasteKey:"Open app & plak sleutel",openAppPasteKeyHint:"Open de ge\xefnstalleerde app en plak uw sleutel om in te loggen",openMenu:"Menu openen",openMenuHint:"Tik op de menuknop (drie puntjes) in Android Chrome",installApp:"App installeren",installAppHint:'Tik op "App installeren" of "Toevoegen aan beginscherm"',lookInstallIcon:"Zoek het installatiepictogram",lookInstallIconHint:"Zoek het installatiepictogram in de adresbalk",clickInstallPaste:"Klik op installeren & plak sleutel",installNow:"Install Now",installNowHint:"Install 9Remote as an app for quick access",installing:"Installing...",clickInstallPasteHint:"Klik op installeren, open de app en plak uw sleutel om in te loggen",alternativeHint:'Alternatief: open browsermenu → "9Remote installeren" of "Snelkoppeling maken"',loadingPlatform:"Platformdetectie laden...",iosPlatform:"iOS (iPhone/iPad)",androidPlatform:"Android",macosPlatform:"macOS",windowsPlatform:"Windows",desktopPlatform:"Desktop",alreadyInstalled:"Al ge\xefnstalleerd!",alreadyInstalledHint:"U gebruikt 9Remote al als ge\xefnstalleerde app",installationGuide:"Installatiegids",installationSteps:"Installatiestappen:"},community:{title:"Community",description:"Word lid van de 9Remote-community"},pwa:{title:"Installeren als app",description:"Installeer 9Remote op uw apparaat voor de beste ervaring",iosTitle:"iOS Safari",androidTitle:"Android Chrome",desktopTitle:"Desktop"},codespace:{title:"Codespace",name:"Naam",status:"Status",running:"Actief",autoStart:"9Remote automatisch starten",autoStartHint:"Start 9Remote wanneer codespace opent",stop:"Codespace stoppen",stopHint:"Stop om gebruik te besparen",restartHint:"Om opnieuw te starten, ga naar GitHub",unknown:"Onbekend"}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9259],{9259:(e,a,o)=>{o.r(a),o.d(a,{default:()=>r});let r={common:{statusIdle:"Idle",statusWorking:"Working",statusBlocked:"Needs input",statusDone:"Your turn",loading:"Cargando...",cancel:"Cancelar",confirm:"Confirmar",save:"Guardar",delete:"Eliminar",close:"Cerrar",back:"Atr\xe1s",edit:"Editar",rename:"Renombrar",remove:"Quitar",open:"Abrir",yes:"S\xed",no:"No",ok:"OK",error:"Error",success:"\xc9xito",failed:"Fall\xf3",retry:"Reintentar",refresh:"Actualizar",clipboard:"Clipboard",clipboardCopy:"Copy",clipboardEmpty:"Clipboard is empty",search:"Buscar",create:"Crear",new:"Nuevo",add:"A\xf1adir",copy:"Copiar",copied:"Copiado",download:"Descargar",upload:"Subir",enabled:"Activado",disabled:"Desactivado",on:"activado",off:"desactivado",minute:"min",hour:"h",day:"d",minutesAgo:"Hace {n} min",hoursAgo:"Hace {n} horas",daysAgo:"Hace {n} d\xedas"},login:{tagline:"Accede a tu terminal desde cualquier lugar",heroLine1:"Any machine.",heroLine2:"One terminal.",heroLine3:"In your pocket.",featureTerminal:"Terminal",featureDesktop:"Desktop",featureFiles:"Files",termConnected:"host connected",termTunnel:"tunnel established",termReady:"ready",accessKey:"Clave de acceso",placeholder:"sk-xxx... o clave de un solo uso (ABC123)",rememberKey:"Recordar esta clave",connect:"Conectar",connecting:"Conectando...",authenticating:"Autenticando con token...",invalidKeyTail:"Wrong access key — check the last characters and try again.",scanQr:"Scan QR to login",qrScanTitle:"Scan QR Code",qrHint:"Point the camera at the QR code shown on the machine running 9Remote.",qrDetected:"QR Code detected!",qrAuthenticating:"Authenticating...",qrPleaseWait:"Please wait...",qrLibFail:"Failed to load the QR scanner library.",qrInitFail:"Could not start the scanner.",qrCamDenied:"Camera permission denied. Allow camera access and try again.",qrNoCamera:"No camera found on this device.",qrCamBusy:"Camera is in use by another app.",qrCamError:"Could not open the camera.",savedKeys:"Claves guardadas",login:"Iniciar sesi\xf3n",lastLogin:"\xdaltimo inicio de sesi\xf3n",namePlaceholder:"Name this key (optional)",rename:"Rename",deleteKeyTitle:"Delete key",deleteKeyConfirm:'Are you sure you want to delete "{name}"?',justNow:"Ahora mismo",minutesAgo:"Hace {n}m",hoursAgo:"Hace {n}h",daysAgo:"Hace {n}d",tapToScan:"Toca para escanear",orEnterManually:"o introduce la clave manualmente",addKey:"Add Key",secureTitle:"Secure & Encrypted",secureDesc:"All connections are end-to-end encrypted and secure.",featAccessTitle:"Access Anywhere",featAccessDesc:"Connect from any device, anywhere.",featSecureTitle:"Secure Connection",featSecureDesc:"End-to-end encryption keeps you safe.",featFastTitle:"Fast & Reliable",featFastDesc:"Low latency and high performance.",featSessionsTitle:"Multiple Sessions",featSessionsDesc:"Manage and switch between sessions.",home:"Inicio",docs:"Documentaci\xf3n"},menu:{reloadRestart:"Reload & Restart",restartHost:"Restart 9remote host",restartConfirmTitle:"Restart 9remote host?",restartConfirmMessage:"This restarts the host process (no reinstall). Terminal sessions are preserved. It takes a few seconds.",restartStarting:"Restarting host…",restartRestarting:"Restarting 9remote…",restartDone:"Restarted! Reconnecting…",restartTimeout:"Restart is taking too long",restartTimeoutHint:"Reconnect manually if it doesn't recover.",title:"Men\xfa",language:"Idioma",theme:"Tema",notifications:"Notificaciones",webgl:"GPU Render (Faster)",webglHint:"Desact\xedvalo si el texto se ve mal",notificationsHint:"Notify when agent finishes",orientation:"Orientaci\xf3n de pantalla",orientationPortrait:"Vertical",orientationAuto:"Auto",files:"File Explorer",downloading:"Downloading",copying:"Copying",conflictTitle:"File already exists",conflictMessage:"{name} already exists. Replace or skip?",skip:"Skip",skipAll:"Skip all",replace:"Replace",replaceAll:"Replace all",sites:"Sitios",commandNotes:"Notas de comandos",community:"Comunidad",installApp:"Instalar aplicaci\xf3n",codespace:"Codespace",logout:"Cerrar sesi\xf3n",settingsGeneral:"General",settingsAppearance:"Appearance",settingsTerminalTab:"Terminal",settingsMcp:"Plugins",mcpIntro:"Extra abilities you can give your AI coding tools.",mcpTools:"Allow",mcpRestartHint:"Turning it off applies at once. Turning it on needs the AI tool restarted.",mcpUnavailable:"Update this host to use MCP.",artifactFormats:"Formats it can show",mcpClients:"Works with",settingsWorkspace:"Workspace",settingsApplication:"Application",settingsAccount:"Account",themeLight:"Light",themeDark:"Dark",reload:"Recargar app",remoteDesktop:"Escritorio remoto",settings:"Configuraci\xf3n",enablePush:"Activar notificaciones push",disablePush:"Desactivar notificaciones push",pushHint:"Activa las notificaciones push para recibir alertas cuando la IA complete tareas",pushActiveHint:"Push notifications are on for this device. You'll be alerted when AI completes tasks.",versionMismatch:"El agente {version} est\xe1 desactualizado",versionMismatchHint:"Algunas funciones pueden no funcionar. Ejecuta:",updateNow:"Update now",updating:"Updating… reconnecting",webReloadTitle:"New web version available",webReloadHint:"Reload to get the latest interface.",reloadWeb:"Reload",updateAvailableTitle:"9Remote host update available",updateStarting:"Starting update…",updateInstalling:"Installing new version…",updateTimeout:"Update is taking too long",updateTimeoutHint:"Reload manually if it doesn't recover.",updateRestarting:"Restarting host…",updateReconnecting:"Reconnecting…",updateDone:"Updated! Reloading…",version:"Versi\xf3n"},workspace:{loading:"Cargando...",logoutTitle:"Cerrar sesi\xf3n",logoutMessage:"\xbfSeguro que quieres cerrar sesi\xf3n?",failedCreateSession:"Error al crear la sesi\xf3n: {error}",failedRenameSession:"Error al renombrar la sesi\xf3n: {error}"},sessions:{headerTitle:"9remote.cc",connected:"Conectado",disconnected:"Desconectado",codespaceStopped:"Codespace detenido",placeholder:"Nombre del terminal (opcional)",newButton:"+ Nuevo",empty:"No hay sesiones activas",emptyHint:"Crea una nueva sesi\xf3n para empezar",created:"Creado {time}",deleteTitle:"Eliminar sesi\xf3n",deleteMessage:'\xbfSeguro que quieres eliminar "{name}"?',editName:"Editar nombre",newTerminal:"Nuevo terminal",options:"Options"},workspaces:{title:"Groups",newWorkspace:"Group",newWorkspacePrompt:"Group name",defaultName:"New Group",ungrouped:"Ungrouped",addTerminal:"Add terminal to group",moveToWorkspace:"Move to group",rename:"Rename group",delete:"Delete group",emptyWorkspace:"No terminals in this group",deleteTitle:"Delete Group",deleteMessage:'Delete group "{name}"? Terminals move to Ungrouped.'},terminal:{quotaNoData:"No quota data",quotaUsageTitle:"usage",back:"Atr\xe1s",menu:"Men\xfa",newTerminal:"Nuevo terminal",remoteDesktop:"Escritorio remoto",defaultName:"Term"},files:{selectWorkspace:"Seleccionar espacio de trabajo",recentWorkspaces:"Espacios de trabajo recientes",home:"Inicio",root:"Ra\xedz",drive:"Unidad {letter}",codespaces:"Codespaces",removeRecent:"Quitar de recientes",removeTitle:"Quitar espacio de trabajo",removeMessage:'\xbfQuitar "{name}" de los espacios de trabajo recientes?',setAsWorkspace:"Establecer como espacio de trabajo",openFolder:"Abrir carpeta",newFile:"Nuevo archivo",newFolder:"Nueva carpeta",rename:"Renombrar",delete:"Eliminar",deleteFile:"Eliminar archivo",deleteFolder:"Eliminar carpeta",deleteFileMessage:'\xbfEliminar "{name}"?',deleteFolderMessage:'\xbfEliminar la carpeta "{name}" y todo su contenido?',emptyFolder:"Carpeta vac\xeda",git:"Git",parent:"Carpeta superior",workspace:"Espacio de trabajo",failedLoad:"Error al cargar: {error}",failedDelete:"Error al eliminar: {error}",failedCreate:"Error al crear: {error}",failedRename:"Error al renombrar: {error}",enterName:"Introduce el nombre",confirmRename:"Renombrar a:",setWorkspace:"Establecer espacio de trabajo",setAsWorkspaceTitle:"Establecer como espacio de trabajo",switchWorkspace:"Cambiar espacio de trabajo",searchFiles:"Buscar archivos",toggleHidden:"Mostrar/ocultar archivos ocultos",searchPlaceholder:"Buscar archivos...",searching:"Buscando...",noFilesFound:"No se encontraron archivos",noGitRepo:"No hay repositorio Git",cannotOpenBinary:"No se puede abrir el archivo binario",createNew:"Crear nuevo",file:"Archivo",folder:"Carpeta",placeholderFile:"filename.js",placeholderFolder:"nombre-carpeta",pickFile:"Choose files",pickFolder:"Choose folder",copyPath:"Copiar ruta",copyRelPath:"Copy Relative Path",copyName:"Copy Filename",delete:"Eliminar",rename:"Renombrar",deleteConfirmTitle:"Eliminar",deleteConfirmMessage:'\xbfEliminar "{name}"?'},editor:{save:"Guardar",saving:"Guardando...",saved:"Guardado",unsaved:"Cambios sin guardar",close:"Cerrar",discard:"Descartar",discardTitle:"Descartar cambios",discardMessage:"Tienes cambios sin guardar. \xbfDescartarlos?",unsavedTitle:"Save changes to {name}?",unsavedBody:"Your changes will be lost if you don't save them.",failedLoad:"Error al cargar el archivo: {error}",failedSave:"Error al guardar: {error}",openFull:"Open in full editor",artifact:"Artifact",readOnly:"Solo lectura",line:"L\xednea",column:"Columna",gitDiff:"Git Diff",typeText:"Escribe el texto e inserta...",insert:"Insertar",statusModified:"Modificado",statusAdded:"A\xf1adido",statusUntracked:"Sin seguimiento"},git:{title:"Git",branch:"Rama",changes:"Cambios",staged:"Preparados",unstaged:"Sin preparar",untracked:"Sin seguimiento",commit:"Confirmar",commitAndPush:"Commit & Push",commitSuccess:"Commit successful",pushSuccess:"Push successful",stageFailed:"Failed to stage changes",commitFailed:"Commit failed",pushFailed:"Push failed",pullSuccess:"Pull successful",pullFailed:"Pull failed",stageAllConfirmTitle:"Stage All & Commit",stageAllConfirmMessage:"No changes are staged. Stage all changes and commit?",stageAndCommit:"Stage & Commit",gitActions:"Git actions",commitPlaceholder:"Commit message…",stageAllNote:"Stage all \xb7 {count}",upToDate:"Everything up-to-date",commitMessage:"Mensaje del commit",push:"Push",pull:"Pull",fetch:"Fetch",stage:"Preparar",stageAll:"Preparar todo",unstage:"Quitar de preparados",discard:"Descartar",discardChanges:"Descartar cambios",discardMessage:'\xbfDescartar los cambios en "{name}"?',noChanges:"Sin cambios",diff:"Diff",pushing:"Enviando...",pulling:"Obteniendo...",committing:"Confirmando...",failedCommit:"Error al confirmar: {error}",failedPush:"Error en push: {error}",failedPull:"Error en pull: {error}",status:"Estado",diffTab:"Diff",modified:"Modificado",added:"A\xf1adido",deleted:"Eliminado",untrackedTitle:"Sin seguimiento",openFile:"Abrir archivo",discardChangesTitle:"Descartar cambios",discardConfirmTitle:"Descartar cambios",discardConfirmDelete:'\xbfSeguro que quieres eliminar "{name}"? Esto no se puede deshacer.',discardConfirmDiscard:'\xbfSeguro que quieres descartar los cambios en "{name}"? Esto no se puede deshacer.'},remote:{title:"Escritorio remoto",connecting:"Conectando...",disconnected:"Desconectado",fullscreen:"Pantalla completa",exitFullscreen:"Salir de pantalla completa",receivingImage:"Receiving screen…",keyboard:"Teclado",mouse:"Rat\xf3n",quality:"Calidad",fps:"FPS",debug:"Depurar",help:"Ayuda",close:"Cerrar",sendKey:"Enviar tecla",helpTitle:"Ayuda del escritorio remoto",notAvailable:"El escritorio remoto no est\xe1 disponible",customizeKeys:"Personalizar teclas",back:"Atr\xe1s",resetZoom:"Restablecer zoom",refresh:"Actualizar",rectangleSelection:"Selecci\xf3n rectangular",handMode:"Modo mano",toggleKeyboard:"Alternar teclado nativo",hideControls:"Hide controls",showControls:"Show controls",textBatchInput:"Entrada de texto por lotes",extraKeys:"Teclas extra",customizeRemoteKeys:"Personalizar teclas remotas",exitRemote:"Salir del escritorio remoto",debugTitle:"Estad\xedsticas de depuraci\xf3n",minimize:"Minimizar",transport:"Transporte",latency:"Latencia",tilesPerSec:"Mosaicos/s",bandwidth:"Ancho de banda",clearStats:"Borrar estad\xedsticas",lockTitle:"Windows est\xe1 bloqueado",lockGrantDesc:'Activa "Desbloquear PC remotamente" en 9remote host de este PC.',lockDesc:"Introduce el PIN o la contrase\xf1a de Windows para este equipo",lockPlaceholder:"PIN o contrase\xf1a de Windows",unlock:"Desbloquear",unlocking:"Desbloqueando…",unlockFailed:"Error al desbloquear — revisa tu PIN/contrase\xf1a e int\xe9ntalo de nuevo."},remoteHelp:{modePc:"PC / Rat\xf3n",modeTrackpad:"T\xe1ctil \xb7 Trackpad",modeDirect:"T\xe1ctil \xb7 Directo",mouseTitle:"Rat\xf3n",keyboardTitle:"Teclado",gesturesTrackpadTitle:"Gestos (Trackpad ✋)",gesturesDirectTitle:"Gestos (Directo)",toolbarTitle:"Barra de herramientas",mouseClickKey:"Clic / Arrastrar",mouseClickDesc:"Clic izquierdo, arrastrar para seleccionar/mover",mouseRightKey:"Clic derecho",mouseRightDesc:"Men\xfa contextual en remoto",mouseWheelKey:"Rueda",mouseWheelDesc:"Desplazar remoto (Shift + Rueda = horizontal)",mouseDoubleKey:"Doble clic",mouseDoubleDesc:"Doble clic en remoto",keyPhysicalKey:"Teclas f\xedsicas",keyPhysicalDesc:"Enviadas directamente (Tab, teclas F, etc. capturadas)",keyModifierKey:"Ctrl / Alt / Shift / ⌘",keyModifierDesc:"Modificador persistente — combina con la siguiente tecla",trackpadSwipeKey:"Deslizar 1 dedo",trackpadSwipeDesc:"Mover cursor virtual",trackpadTapKey:"Toque con 1 dedo",trackpadTapDesc:"Clic izquierdo en el cursor",trackpad2TapKey:"Toque con 2 dedos",trackpad2TapDesc:"Clic derecho en el cursor",trackpad2SwipeKey:"Deslizar 2 dedos",trackpad2SwipeDesc:"Desplazar en la posici\xf3n del cursor",trackpadPinchKey:"Pellizco con 2 dedos",trackpadPinchDesc:"Zoom del lienzo",trackpadScrollLockKey:"Mantener + arrastrar",trackpadScrollLockDesc:"Mant\xe9n para fijar el scroll, arrastra en cualquier direcci\xf3n",directTapKey:"Toque con 1 dedo",directTapDesc:"Clic en la posici\xf3n del toque",directLongKey:"Pulsaci\xf3n larga 1 dedo",directLongDesc:"Clic derecho",directDoubleKey:"Doble toque 1 dedo",directDoubleDesc:"Doble clic",directScrollKey:"Deslizar 2 dedos",directScrollDesc:"Desplazar remoto",directPinchKey:"Pellizco con 2 dedos",directPinchDesc:"Zoom del lienzo",directPanKey:"Arrastrar 1 dedo (zoom>1)",directPanDesc:"Desplazar lienzo",toolbarHandDesc:"Mantener clic izquierdo (modo arrastre) — toca de nuevo para soltar",toolbarMouseDirectDesc:"Cambiar a modo directo",toolbarMouseTrackpadDesc:"Cambiar a Trackpad (cursor virtual)",toolbarKeyboardDesc:"Teclado nativo / entrada de texto por lotes",toolbarRectDesc:"Modo de selecci\xf3n rectangular"},remoteControls:{enterToSend:"Tab / Ctrl+Num para cambiar de pesta\xf1a",typeToSend:"Escribe el texto a enviar...",send:"Enviar",trackpadMode:"Modo trackpad",directMode:"Modo directo",bottomRow:"Fila inferior",extraPanel:"Panel extra",exitConfirmMessage:"\xbfSeguro que quieres salir de la sesi\xf3n actual del escritorio remoto?"},connection:{retrying:"Reconectando...",waitingApproval:"Esperando aprobaci\xf3n",approvalDescription:"El 9Remote host debe aprobar este dispositivo antes de poder conectarte.",approvalHint:"Revisa el terminal en tu m\xe1quina.",rejectedTitle:"Dispositivo rechazado",rejectedDescription:"Este dispositivo no fue aprobado por el 9Remote host.",backToLogin:"Volver al inicio de sesi\xf3n",failed:"Conexi\xf3n fallida",failedDescription:"No se pudo conectar tras {n} intentos",attemptOf:"Intento {n} de {total}",exit:"Salir",cancel:"Cancelar",retry:"Reintentar ahora"},notifications:{claudeCode:"Claude Code",codex:"Codex",geminiCli:"Gemini CLI",openCode:"OpenCode",needsInput:"needs input",badgeTitle:"{blocked} needs input, {done} your turn",replied:"replied",agent:"Agent"},sites:{title:"Sitios",localSites:"Sitios locales",selectSitePreview:"Selecciona un sitio para previsualizar",browserNewTab:"New tab",browserAddressPlaceholder:"localhost:3000 or /path",browserNotConnected:"Connect to your host first",portPlaceholder:"puerto",loadingSites:"Cargando sitios...",notConnected:"Not connected to the host",noSitesFound:"No se encontraron sitios",startServerHint:"Inicia un servidor de desarrollo local para verlo aqu\xed",siteNamePlaceholder:"Nombre del sitio",saveTitle:"Guardar",editNameTitle:"Editar nombre",removeTitle:"Quitar",removePortTitle:"Quitar puerto",removePortMessage:"\xbfQuitar el puerto {port} de la lista guardada?",popupBlocked:"\xa1Ventana emergente bloqueada! Permite las ventanas emergentes para este sitio.",startProxyFailed:"Error al iniciar la sesi\xf3n de proxy para {name}",foundCount:"{n} sitio{suffix} encontrado",focusOpenedTab:"Enfocar pesta\xf1a abierta",openInNewTab:"Abrir en nueva pesta\xf1a",goBack:"Atr\xe1s",goForward:"Adelante",loadingSite:"Cargando...",empty:"No hay sitios activos",emptyHint:"Ejecuta un servidor local para verlo aqu\xed",open:"Abrir",refresh:"Actualizar"},commandNotes:{title:"Notas de comandos",noSavedCommands:"No hay comandos guardados",addFirstBelow:"A\xf1ade tu primer comando abajo",clickToCopy:"Clic para copiar",copiedBang:"\xa1Copiado!",copy:"Copiar",edit:"Editar",delete:"Eliminar",editCommandPlaceholder:"Editar comando...",addCommandPlaceholder:"A\xf1adir comando...",update:"Actualizar",add:"A\xf1adir",empty:"A\xfan no hay notas",emptyHint:"Guarda comandos para acceso r\xe1pido",add:"A\xf1adir nota",edit:"Editar nota",delete:"Eliminar nota",deleteMessage:"\xbfEliminar esta nota?",name:"Nombre",command:"Comando",save:"Guardar",placeholderName:"ej. Iniciar servidor de desarrollo",placeholderCommand:"ej. npm run dev"},mobileKeyboard:{pasteHere:"Pega aqu\xed (Cmd+V)",enterToSend:"Tab / Ctrl+Num para cambiar de pesta\xf1a",typeCommand:"Escribe un comando y env\xeda...",send:"Enviar",toggleExtraKeys:"Alternar teclas extra",toggleTextInput:"Alternar entrada de texto",customizeTerminalKeys:"Personalizar teclas del terminal",mainBar:"Barra principal",extraPanel:"Panel extra",fileTooLarge:"Archivo demasiado grande (m\xe1x. 5MB)",readFileFailed:"Error al leer el archivo",uploadFailed:"Error al subir el archivo: {error}"},terminalPane:{scrollToBottom:"Desplazar al final",changedFiles:"Changed files",pasteOrType:"Pega o escribe aqu\xed",paste:"Pegar"},pwaGuide:{copyYourKey:"Copia tu clave",copyKeyHint:"Toca la clave de abajo para copiarla — la necesitar\xe1s para iniciar sesi\xf3n tras instalar",tapToCopyApiKey:"Toca para copiar la clave API",copiedBang:"\xa1Copiado!",copy:"Copiar",tapShareButton:"Toca el bot\xf3n Compartir",tapShareHint:"Toca el bot\xf3n compartir en la parte inferior de iOS Safari",addToHome:"A\xf1adir a la pantalla de inicio",addToHomeHint:'Despl\xe1zate hacia abajo y toca "A\xf1adir a la pantalla de inicio"',openAppPasteKey:"Abre la app y pega la clave",openAppPasteKeyHint:"Abre la aplicaci\xf3n instalada y pega tu clave para iniciar sesi\xf3n",openMenu:"Abrir men\xfa",openMenuHint:"Toca el bot\xf3n de men\xfa (tres puntos) en Android Chrome",installApp:"Instalar aplicaci\xf3n",installAppHint:'Toca "Instalar aplicaci\xf3n" o "A\xf1adir a la pantalla de inicio"',lookInstallIcon:"Busca el icono de instalaci\xf3n",lookInstallIconHint:"Busca el icono de instalaci\xf3n en la barra de direcciones",clickInstallPaste:"Haz clic en Instalar y pega la clave",installNow:"Install Now",installNowHint:"Install 9Remote as an app for quick access",installing:"Installing...",clickInstallPasteHint:"Haz clic en instalar, abre la aplicaci\xf3n y pega tu clave para iniciar sesi\xf3n",alternativeHint:'Alternativa: Abre el men\xfa del navegador → "Instalar 9Remote" o "Crear acceso directo"',loadingPlatform:"Cargando detecci\xf3n de plataforma...",iosPlatform:"iOS (iPhone/iPad)",androidPlatform:"Android",macosPlatform:"macOS",windowsPlatform:"Windows",desktopPlatform:"Escritorio",alreadyInstalled:"\xa1Ya est\xe1 instalada!",alreadyInstalledHint:"Ya est\xe1s usando 9Remote como aplicaci\xf3n instalada",installationGuide:"Gu\xeda de instalaci\xf3n",installationSteps:"Pasos de instalaci\xf3n:"},community:{title:"Comunidad",description:"\xdanete a la comunidad de 9Remote"},pwa:{title:"Instalar como app",description:"Instala 9Remote en tu dispositivo para la mejor experiencia",iosTitle:"iOS Safari",androidTitle:"Android Chrome",desktopTitle:"Escritorio"},codespace:{title:"Codespace",name:"Nombre",status:"Estado",running:"En ejecuci\xf3n",autoStart:"Iniciar 9Remote autom\xe1ticamente",autoStartHint:"Inicia 9Remote cuando se abra el codespace",stop:"Detener Codespace",stopHint:"Det\xe9n para ahorrar uso",restartHint:"Para reiniciar, ve a GitHub",unknown:"Desconocido"}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9299],{29299:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});let o={common:{statusIdle:"Idle",statusWorking:"Working",statusBlocked:"Needs input",statusDone:"Your turn",loading:"Завантаження...",cancel:"Скасувати",confirm:"Підтвердити",save:"Зберегти",delete:"Видалити",close:"Закрити",back:"Назад",edit:"Редагувати",rename:"Перейменувати",remove:"Видалити",open:"Відкрити",yes:"Так",no:"Ні",ok:"OK",error:"Помилка",success:"Успіх",failed:"Не вдалося",retry:"Повторити",refresh:"Оновити",clipboard:"Clipboard",clipboardCopy:"Copy",clipboardEmpty:"Clipboard is empty",search:"Пошук",create:"Створити",new:"Новий",add:"Додати",copy:"Копіювати",copied:"Скопійовано",download:"Завантажити",upload:"Вивантажити",enabled:"Увімкнено",disabled:"Вимкнено",on:"увімк.",off:"вимк.",minute:"хв",hour:"год",day:"д",minutesAgo:"{n} хв тому",hoursAgo:"{n} год тому",daysAgo:"{n} д тому"},login:{tagline:"Доступ до вашого терміналу звідусіль",heroLine1:"Any machine.",heroLine2:"One terminal.",heroLine3:"In your pocket.",featureTerminal:"Terminal",featureDesktop:"Desktop",featureFiles:"Files",termConnected:"host connected",termTunnel:"tunnel established",termReady:"ready",accessKey:"Ключ доступу",placeholder:"sk-xxx... або одноразовий ключ (ABC123)",rememberKey:"Запам'ятати цей ключ",connect:"Підключитися",connecting:"Підключення...",authenticating:"Автентифікація з токеном...",invalidKeyTail:"Wrong access key — check the last characters and try again.",scanQr:"Scan QR to login",qrScanTitle:"Scan QR Code",qrHint:"Point the camera at the QR code shown on the machine running 9Remote.",qrDetected:"QR Code detected!",qrAuthenticating:"Authenticating...",qrPleaseWait:"Please wait...",qrLibFail:"Failed to load the QR scanner library.",qrInitFail:"Could not start the scanner.",qrCamDenied:"Camera permission denied. Allow camera access and try again.",qrNoCamera:"No camera found on this device.",qrCamBusy:"Camera is in use by another app.",qrCamError:"Could not open the camera.",savedKeys:"Збережені ключі",login:"Увійти",lastLogin:"Останній вхід",namePlaceholder:"Name this key (optional)",rename:"Rename",deleteKeyTitle:"Delete key",deleteKeyConfirm:'Are you sure you want to delete "{name}"?',justNow:"Щойно",minutesAgo:"{n} хв тому",hoursAgo:"{n} год тому",daysAgo:"{n} д тому",tapToScan:"Натисніть для сканування",orEnterManually:"або введіть ключ вручну",addKey:"Add Key",secureTitle:"Secure & Encrypted",secureDesc:"All connections are end-to-end encrypted and secure.",featAccessTitle:"Access Anywhere",featAccessDesc:"Connect from any device, anywhere.",featSecureTitle:"Secure Connection",featSecureDesc:"End-to-end encryption keeps you safe.",featFastTitle:"Fast & Reliable",featFastDesc:"Low latency and high performance.",featSessionsTitle:"Multiple Sessions",featSessionsDesc:"Manage and switch between sessions.",home:"Головна",docs:"Документи"},menu:{reloadRestart:"Reload & Restart",restartHost:"Restart 9remote host",restartConfirmTitle:"Restart 9remote host?",restartConfirmMessage:"This restarts the host process (no reinstall). Terminal sessions are preserved. It takes a few seconds.",restartStarting:"Restarting host…",restartRestarting:"Restarting 9remote…",restartDone:"Restarted! Reconnecting…",restartTimeout:"Restart is taking too long",restartTimeoutHint:"Reconnect manually if it doesn't recover.",title:"Меню",language:"Мова",theme:"Тема",notifications:"Сповіщення",webgl:"GPU Render (Faster)",webglHint:"Вимкніть, якщо текст виглядає неправильно",notificationsHint:"Notify when agent finishes",orientation:"Орієнтація екрана",orientationPortrait:"Вертикально",orientationAuto:"Авто",files:"File Explorer",downloading:"Downloading",copying:"Copying",conflictTitle:"File already exists",conflictMessage:"{name} already exists. Replace or skip?",skip:"Skip",skipAll:"Skip all",replace:"Replace",replaceAll:"Replace all",sites:"Сайти",commandNotes:"Нотатки команд",community:"Спільнота",installApp:"Встановити застосунок",codespace:"Codespace",logout:"Вийти",settingsGeneral:"General",settingsAppearance:"Appearance",settingsTerminalTab:"Terminal",settingsMcp:"Plugins",mcpIntro:"Extra abilities you can give your AI coding tools.",mcpTools:"Allow",mcpRestartHint:"Turning it off applies at once. Turning it on needs the AI tool restarted.",mcpUnavailable:"Update this host to use MCP.",artifactFormats:"Formats it can show",mcpClients:"Works with",settingsWorkspace:"Workspace",settingsApplication:"Application",settingsAccount:"Account",themeLight:"Light",themeDark:"Dark",reload:"Перезавантажити застосунок",remoteDesktop:"Віддалений робочий стіл",settings:"Налаштування",enablePush:"Увімкнути push-сповіщення",disablePush:"Вимкнути push-сповіщення",pushHint:"Увімкніть push-сповіщення, щоб отримувати повідомлення, коли ШІ завершує завдання",pushActiveHint:"Push notifications are on for this device. You'll be alerted when AI completes tasks.",versionMismatch:"Агент {version} застарів",versionMismatchHint:"Деякі функції можуть не працювати. Виконайте:",updateNow:"Update now",updating:"Updating… reconnecting",webReloadTitle:"New web version available",webReloadHint:"Reload to get the latest interface.",reloadWeb:"Reload",updateAvailableTitle:"9Remote host update available",updateStarting:"Starting update…",updateInstalling:"Installing new version…",updateTimeout:"Update is taking too long",updateTimeoutHint:"Reload manually if it doesn't recover.",updateRestarting:"Restarting host…",updateReconnecting:"Reconnecting…",updateDone:"Updated! Reloading…",version:"Версія"},workspace:{loading:"Завантаження...",logoutTitle:"Вихід",logoutMessage:"Ви впевнені, що хочете вийти?",failedCreateSession:"Не вдалося створити сесію: {error}",failedRenameSession:"Не вдалося перейменувати сесію: {error}"},sessions:{headerTitle:"9remote.cc",connected:"Підключено",disconnected:"Відключено",codespaceStopped:"Codespace зупинено",placeholder:"Назва терміналу (необов'язково)",newButton:"+ Новий",empty:"Немає активних сесій",emptyHint:"Створіть нову сесію, щоб почати",created:"Створено {time}",deleteTitle:"Видалити сесію",deleteMessage:'Ви впевнені, що хочете видалити "{name}"?',editName:"Редагувати назву",newTerminal:"Новий термінал",options:"Options"},workspaces:{title:"Groups",newWorkspace:"Group",newWorkspacePrompt:"Group name",defaultName:"New Group",ungrouped:"Ungrouped",addTerminal:"Add terminal to group",moveToWorkspace:"Move to group",rename:"Rename group",delete:"Delete group",emptyWorkspace:"No terminals in this group",deleteTitle:"Delete Group",deleteMessage:'Delete group "{name}"? Terminals move to Ungrouped.'},terminal:{quotaNoData:"No quota data",quotaUsageTitle:"usage",back:"Назад",menu:"Меню",newTerminal:"Новий термінал",remoteDesktop:"Віддалений робочий стіл",defaultName:"Терм"},files:{selectWorkspace:"Виберіть робочу область",recentWorkspaces:"Останні робочі області",home:"Домашня",root:"Корінь",drive:"Диск {letter}",codespaces:"Codespaces",removeRecent:"Видалити з останніх",removeTitle:"Видалити робочу область",removeMessage:'Видалити "{name}" з останніх робочих областей?',setAsWorkspace:"Встановити як робочу область",openFolder:"Відкрити папку",newFile:"Новий файл",newFolder:"Нова папка",rename:"Перейменувати",delete:"Видалити",deleteFile:"Видалити файл",deleteFolder:"Видалити папку",deleteFileMessage:'Видалити "{name}"?',deleteFolderMessage:'Видалити папку "{name}" та весь її вміст?',emptyFolder:"Порожня папка",git:"Git",parent:"Батьківська папка",workspace:"Робоча область",failedLoad:"Не вдалося завантажити: {error}",failedDelete:"Не вдалося видалити: {error}",failedCreate:"Не вдалося створити: {error}",failedRename:"Не вдалося перейменувати: {error}",enterName:"Введіть назву",confirmRename:"Перейменувати на:",setWorkspace:"Встановити робочу область",setAsWorkspaceTitle:"Встановити як робочу область",switchWorkspace:"Змінити робочу область",searchFiles:"Пошук файлів",toggleHidden:"Перемкнути приховані файли",searchPlaceholder:"Пошук файлів...",searching:"Пошук...",noFilesFound:"Файли не знайдено",noGitRepo:"Немає Git-репозиторію",cannotOpenBinary:"Неможливо відкрити двійковий файл",createNew:"Створити новий",file:"Файл",folder:"Папка",placeholderFile:"ім'я-файлу.js",placeholderFolder:"назва-папки",pickFile:"Choose files",pickFolder:"Choose folder",copyPath:"Копіювати шлях",copyRelPath:"Copy Relative Path",copyName:"Copy Filename",delete:"Видалити",rename:"Перейменувати",deleteConfirmTitle:"Видалити",deleteConfirmMessage:'Видалити "{name}"?'},editor:{save:"Зберегти",saving:"Збереження...",saved:"Збережено",unsaved:"Незбережені зміни",close:"Закрити",discard:"Відхилити",discardTitle:"Відхилити зміни",discardMessage:"У вас є незбережені зміни. Відхилити їх?",unsavedTitle:"Save changes to {name}?",unsavedBody:"Your changes will be lost if you don't save them.",failedLoad:"Не вдалося завантажити файл: {error}",failedSave:"Не вдалося зберегти: {error}",openFull:"Open in full editor",artifact:"Artifact",readOnly:"Лише для читання",line:"Рядок",column:"Стовпець",gitDiff:"Git Diff",typeText:"Введіть текст і вставте...",insert:"Вставити",statusModified:"Змінено",statusAdded:"Додано",statusUntracked:"Невідстежуваний"},git:{title:"Git",branch:"Гілка",changes:"Зміни",staged:"У стейджі",unstaged:"Поза стейджем",untracked:"Невідстежувані",commit:"Коміт",commitAndPush:"Commit & Push",commitSuccess:"Commit successful",pushSuccess:"Push successful",stageFailed:"Failed to stage changes",commitFailed:"Commit failed",pushFailed:"Push failed",pullSuccess:"Pull successful",pullFailed:"Pull failed",stageAllConfirmTitle:"Stage All & Commit",stageAllConfirmMessage:"No changes are staged. Stage all changes and commit?",stageAndCommit:"Stage & Commit",gitActions:"Git actions",commitPlaceholder:"Commit message…",stageAllNote:"Stage all \xb7 {count}",upToDate:"Everything up-to-date",commitMessage:"Повідомлення коміту",push:"Push",pull:"Pull",fetch:"Fetch",stage:"У стейдж",stageAll:"Усе у стейдж",unstage:"Зі стейджу",discard:"Відхилити",discardChanges:"Відхилити зміни",discardMessage:'Відхилити зміни в "{name}"?',noChanges:"Немає змін",diff:"Diff",pushing:"Виконується push...",pulling:"Виконується pull...",committing:"Створення коміту...",failedCommit:"Не вдалося закомітити: {error}",failedPush:"Не вдалося виконати push: {error}",failedPull:"Не вдалося виконати pull: {error}",status:"Статус",diffTab:"Diff",modified:"Змінено",added:"Додано",deleted:"Видалено",untrackedTitle:"Невідстежувані",openFile:"Відкрити файл",discardChangesTitle:"Відхилити зміни",discardConfirmTitle:"Відхилити зміни",discardConfirmDelete:'Ви впевнені, що хочете видалити "{name}"? Цю дію неможливо скасувати.',discardConfirmDiscard:'Ви впевнені, що хочете відхилити зміни в "{name}"? Цю дію неможливо скасувати.'},remote:{title:"Віддалений робочий стіл",connecting:"Підключення...",disconnected:"Відключено",fullscreen:"Повний екран",exitFullscreen:"Вийти з повного екрана",receivingImage:"Receiving screen…",keyboard:"Клавіатура",mouse:"Миша",quality:"Якість",fps:"FPS",debug:"Налагодження",help:"Довідка",close:"Закрити",sendKey:"Надіслати клавішу",helpTitle:"Довідка віддаленого робочого столу",notAvailable:"Віддалений робочий стіл недоступний",customizeKeys:"Налаштувати клавіші",back:"Назад",resetZoom:"Скинути масштаб",refresh:"Оновити",rectangleSelection:"Прямокутне виділення",handMode:"Режим руки",toggleKeyboard:"Перемкнути нативну клавіатуру",hideControls:"Hide controls",showControls:"Show controls",textBatchInput:"Пакетне введення тексту",extraKeys:"Додаткові клавіші",customizeRemoteKeys:"Налаштувати клавіші віддаленого керування",exitRemote:"Вийти з віддаленого робочого столу",debugTitle:"Статистика налагодження",minimize:"Згорнути",transport:"Транспорт",latency:"Затримка",tilesPerSec:"Плиток/сек",bandwidth:"Пропускна здатність",clearStats:"Очистити статистику",lockTitle:"Windows заблоковано",lockGrantDesc:"Увімкніть \xabВіддалене розблокування ПК\xbb у 9remote host на цьому ПК.",lockDesc:"Введіть PIN-код або пароль Windows для цього комп'ютера",lockPlaceholder:"PIN-код або пароль Windows",unlock:"Розблокувати",unlocking:"Розблокування…",unlockFailed:"Не вдалося розблокувати — перевірте PIN-код/пароль і спробуйте знову."},remoteHelp:{modePc:"PC / Миша",modeTrackpad:"Дотик \xb7 Trackpad",modeDirect:"Дотик \xb7 Прямий",mouseTitle:"Миша",keyboardTitle:"Клавіатура",gesturesTrackpadTitle:"Жести (Trackpad ✋)",gesturesDirectTitle:"Жести (Прямий)",toolbarTitle:"Панель інструментів",mouseClickKey:"Клік / Перетягування",mouseClickDesc:"Лівий клік, перетягуйте для виділення/переміщення",mouseRightKey:"Правий клік",mouseRightDesc:"Контекстне меню на віддаленому пристрої",mouseWheelKey:"Колесо",mouseWheelDesc:"Прокрутка віддалено (Shift + Колесо = горизонтально)",mouseDoubleKey:"Подвійний клік",mouseDoubleDesc:"Подвійний клік на віддаленому пристрої",keyPhysicalKey:"Фізичні клавіші",keyPhysicalDesc:"Надсилаються напряму (Tab, F-клавіші тощо перехоплюються)",keyModifierKey:"Ctrl / Alt / Shift / ⌘",keyModifierDesc:"Закріплений модифікатор — комбінується з наступною клавішею",trackpadSwipeKey:"Свайп 1 пальцем",trackpadSwipeDesc:"Переміщення віртуального курсора",trackpadTapKey:"Дотик 1 пальцем",trackpadTapDesc:"Лівий клік у позиції курсора",trackpad2TapKey:"Дотик 2 пальцями",trackpad2TapDesc:"Правий клік у позиції курсора",trackpad2SwipeKey:"Свайп 2 пальцями",trackpad2SwipeDesc:"Прокрутка в позиції курсора",trackpadPinchKey:"Щипок 2 пальцями",trackpadPinchDesc:"Масштабування полотна",trackpadScrollLockKey:"Утримувати + тягнути",trackpadScrollLockDesc:"Утримуйте, щоб зафіксувати прокручування, тягніть у будь-якому напрямку",directTapKey:"Дотик 1 пальцем",directTapDesc:"Клік у позиції дотику",directLongKey:"Довге натискання 1 пальцем",directLongDesc:"Правий клік",directDoubleKey:"Подвійний дотик 1 пальцем",directDoubleDesc:"Подвійний клік",directScrollKey:"Свайп 2 пальцями",directScrollDesc:"Прокрутка віддалено",directPinchKey:"Щипок 2 пальцями",directPinchDesc:"Масштабування полотна",directPanKey:"Перетягування 1 пальцем (zoom>1)",directPanDesc:"Панорамування полотна",toolbarHandDesc:"Утримувати лівий клік (режим перетягування) — натисніть знову, щоб відпустити",toolbarMouseDirectDesc:"Перейти в Прямий режим",toolbarMouseTrackpadDesc:"Перейти в Trackpad (віртуальний курсор)",toolbarKeyboardDesc:"Нативна клавіатура / пакетне введення тексту",toolbarRectDesc:"Режим прямокутного виділення"},remoteControls:{enterToSend:"Tab / Ctrl+Num для перемикання вкладок",typeToSend:"Введіть текст для надсилання...",send:"Надіслати",trackpadMode:"Режим Trackpad",directMode:"Прямий режим",bottomRow:"Нижній ряд",extraPanel:"Додаткова панель",exitConfirmMessage:"Ви впевнені, що хочете вийти з поточної сесії віддаленого робочого столу?"},connection:{retrying:"Перепідключення...",waitingApproval:"Очікування підтвердження",approvalDescription:"9Remote host повинен схвалити цей пристрій, перш ніж ви зможете підключитися.",approvalHint:"Перевірте термінал на вашій машині.",rejectedTitle:"Пристрій відхилено",rejectedDescription:"Цей пристрій не був схвалений 9Remote host.",backToLogin:"Назад до входу",failed:"Не вдалося підключитися",failedDescription:"Не вдалося підключитися після {n} спроб",attemptOf:"Спроба {n} з {total}",exit:"Вийти",cancel:"Скасувати",retry:"Повторити зараз"},notifications:{claudeCode:"Claude Code",codex:"Codex",geminiCli:"Gemini CLI",openCode:"OpenCode",needsInput:"needs input",badgeTitle:"{blocked} needs input, {done} your turn",replied:"replied",agent:"Agent"},sites:{title:"Сайти",localSites:"Локальні сайти",selectSitePreview:"Виберіть сайт для попереднього перегляду",browserNewTab:"New tab",browserAddressPlaceholder:"localhost:3000 or /path",browserNotConnected:"Connect to your host first",portPlaceholder:"порт",loadingSites:"Завантаження сайтів...",notConnected:"Not connected to the host",noSitesFound:"Сайти не знайдено",startServerHint:"Запустіть локальний dev-сервер, щоб побачити його тут",siteNamePlaceholder:"Назва сайту",saveTitle:"Зберегти",editNameTitle:"Редагувати назву",removeTitle:"Видалити",removePortTitle:"Видалити порт",removePortMessage:"Видалити порт {port} зі збереженого списку?",popupBlocked:"Спливаюче вікно заблоковано! Будь ласка, дозвольте спливаючі вікна для цього сайту.",startProxyFailed:"Не вдалося запустити проксі-сесію для {name}",foundCount:"Знайдено {n} сайт{suffix}",focusOpenedTab:"Фокус на відкритій вкладці",openInNewTab:"Відкрити в новій вкладці",goBack:"Назад",goForward:"Вперед",loadingSite:"Завантаження...",empty:"Немає активних сайтів",emptyHint:"Запустіть локальний сервер, щоб побачити його тут",open:"Відкрити",refresh:"Оновити"},commandNotes:{title:"Нотатки команд",noSavedCommands:"Немає збережених команд",addFirstBelow:"Додайте свою першу команду нижче",clickToCopy:"Натисніть, щоб скопіювати",copiedBang:"Скопійовано!",copy:"Копіювати",edit:"Редагувати",delete:"Видалити",editCommandPlaceholder:"Редагувати команду...",addCommandPlaceholder:"Додати команду...",update:"Оновити",add:"Додати",empty:"Поки немає нотаток",emptyHint:"Зберігайте команди для швидкого доступу",add:"Додати нотатку",edit:"Редагувати нотатку",delete:"Видалити нотатку",deleteMessage:"Видалити цю нотатку?",name:"Назва",command:"Команда",save:"Зберегти",placeholderName:"напр. Запустити dev-сервер",placeholderCommand:"напр. npm run dev"},mobileKeyboard:{pasteHere:"Вставте тут (Cmd+V)",enterToSend:"Tab / Ctrl+Num для перемикання вкладок",typeCommand:"Введіть команду та надішліть...",send:"Надіслати",toggleExtraKeys:"Перемкнути додаткові клавіші",toggleTextInput:"Перемкнути введення тексту",customizeTerminalKeys:"Налаштувати клавіші терміналу",mainBar:"Основна панель",extraPanel:"Додаткова панель",fileTooLarge:"Файл занадто великий (макс. 5МБ)",readFileFailed:"Не вдалося прочитати файл",uploadFailed:"Не вдалося вивантажити файл: {error}"},terminalPane:{scrollToBottom:"Прокрутити донизу",changedFiles:"Changed files",pasteOrType:"Вставте або введіть тут",paste:"Вставити"},pwaGuide:{copyYourKey:"Скопіюйте свій ключ",copyKeyHint:"Натисніть на ключ нижче, щоб скопіювати — він знадобиться для входу після встановлення",tapToCopyApiKey:"Натисніть, щоб скопіювати API-ключ",copiedBang:"Скопійовано!",copy:"Копіювати",tapShareButton:"Натисніть кнопку \xabПоділитися\xbb",tapShareHint:"Натисніть кнопку \xabПоділитися\xbb внизу iOS Safari",addToHome:"Додати на головний екран",addToHomeHint:"Прокрутіть донизу та натисніть \xabДодати на головний екран\xbb",openAppPasteKey:"Відкрийте застосунок і вставте ключ",openAppPasteKeyHint:"Відкрийте встановлений застосунок і вставте свій ключ для входу",openMenu:"Відкрити меню",openMenuHint:"Натисніть кнопку меню (три крапки) в Android Chrome",installApp:"Встановити застосунок",installAppHint:"Натисніть \xabВстановити застосунок\xbb або \xabДодати на головний екран\xbb",lookInstallIcon:"Шукайте іконку встановлення",lookInstallIconHint:"Шукайте іконку встановлення в адресному рядку",clickInstallPaste:"Натисніть \xabВстановити\xbb та вставте ключ",installNow:"Install Now",installNowHint:"Install 9Remote as an app for quick access",installing:"Installing...",clickInstallPasteHint:"Натисніть встановити, відкрийте застосунок і вставте свій ключ для входу",alternativeHint:"Альтернатива: Відкрийте меню браузера → \xabВстановити 9Remote\xbb або \xabСтворити ярлик\xbb",loadingPlatform:"Завантаження визначення платформи...",iosPlatform:"iOS (iPhone/iPad)",androidPlatform:"Android",macosPlatform:"macOS",windowsPlatform:"Windows",desktopPlatform:"Робочий стіл",alreadyInstalled:"Вже встановлено!",alreadyInstalledHint:"Ви вже використовуєте 9Remote як встановлений застосунок",installationGuide:"Посібник зі встановлення",installationSteps:"Кроки встановлення:"},community:{title:"Спільнота",description:"Приєднуйтесь до спільноти 9Remote"},pwa:{title:"Встановити як застосунок",description:"Встановіть 9Remote на свій пристрій для найкращого досвіду",iosTitle:"iOS Safari",androidTitle:"Android Chrome",desktopTitle:"Робочий стіл"},codespace:{title:"Codespace",name:"Назва",status:"Статус",running:"Працює",autoStart:"Автозапуск 9Remote",autoStartHint:"Запускати 9Remote при відкритті codespace",stop:"Зупинити Codespace",stopHint:"Зупиніть, щоб заощадити використання",restartHint:"Щоб перезапустити, перейдіть на GitHub",unknown:"Невідомо"}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[967],{8910:(e,A,o)=>{"use strict";function t(e=10){if(!window.__TAURI__){if(window.ReactNativeWebView&&/Android/i.test(navigator.userAgent)){try{window.ReactNativeWebView.postMessage(JSON.stringify({type:"HAPTIC",style:"selection"}))}catch{}return}if(navigator.vibrate)return void navigator.vibrate(e);if("u">typeof document){if(!("u">typeof navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||window.DEVICE_INFO?.platform==="ios"||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)))return;let e=document.createElement("div"),A=Math.random().toString(36).slice(2);e.innerHTML=`<input type="checkbox" id="${A}" switch /><label for="${A}"></label>`,e.setAttribute("style","display:none !important;opacity:0 !important;visibility:hidden !important;"),document.body.appendChild(e),e.querySelector("label").click(),setTimeout(()=>e.remove(),100)}}}o.d(A,{e:()=>t})},58506:(e,A,o)=>{"use strict";o.r(A),o.d(A,{default:()=>a});var t=o(73365),i=o(6552);let n=[{question:"Which background should the pane use?",multiSelect:!1,options:[{label:"Keep the global pool",description:"Every pane follows the workspace setting."},{label:"Pin a wallpaper",description:"Only this session gets its own image."},{label:"Solid colour",description:"No image, just the theme surface."}]}],r=[{question:"Which panes should the new layout open?",multiSelect:!0,options:[{label:"Terminal",description:"A shell in the workspace root."},{label:"AI chat",description:"The agent pane for the active engine."},{label:"Files",description:"The explorer panel on the right."}]},{question:"Anything else to note?",options:[{label:"No",description:"Just open them."}]}];function a(){return(0,t.jsxs)("div",{className:"min-h-screen bg-bg p-6 flex flex-col gap-6 max-w-md",children:[(0,t.jsx)(i.J,{questions:n,onResolve:()=>{}}),(0,t.jsx)(i.J,{questions:r,onResolve:()=>{}}),(0,t.jsx)(i.J,{questions:n,answers:'User has answered your questions: "Which background should the pane use?"="Pin a wallpaper".'})]})}},61436:(e,A,o)=>{Promise.resolve().then(o.bind(o,58506))},64683:(e,A,o)=>{"use strict";o.d(A,{$o:()=>eN.A,AX:()=>ef.A,Ay:()=>Al,BK:()=>e7.A,BZ:()=>$.A,Bm:()=>J.A,Cp:()=>B.A,Do:()=>a.A,F1:()=>l.A,FE:()=>e3.A,FW:()=>eq.A,Fc:()=>eW.A,GD:()=>W.A,GO:()=>eg.A,Gr:()=>U.A,Gv:()=>eb.A,Hx:()=>en.A,Ir:()=>c.A,J4:()=>e1.A,JG:()=>m.A,JU:()=>D.A,Jl:()=>h.A,Kq:()=>Ar.A,LM:()=>es.A,Lt:()=>M.A,M6:()=>eY.A,MA:()=>s.A,Mr:()=>eE.A,P6:()=>eA.A,QR:()=>S.A,Qp:()=>r.A,RI:()=>i.A,TB:()=>e0.A,Ud:()=>Z.A,VA:()=>ew.A,Vn:()=>eB.A,W1:()=>eh.A,WE:()=>v.A,We:()=>e5.A,Wn:()=>k.A,X:()=>An.A,X_:()=>R.A,ZH:()=>_.A,ZU:()=>e9.A,Ze:()=>eT.A,Zr:()=>G.A,_O:()=>Ae.A,_V:()=>ee.A,a4:()=>ev.A,aJ:()=>u.A,ak:()=>K.A,bE:()=>e4.A,bd:()=>e6.A,cC:()=>p.A,c_:()=>w.A,dJ:()=>H.A,de:()=>Ai.A,dx:()=>V.A,e6:()=>ek.A,e9:()=>eH.A,eM:()=>eD.A,ek:()=>eK.A,es:()=>eC.A,f2:()=>X.A,f5:()=>L.A,gH:()=>eU.A,h1:()=>ed.A,iU:()=>N.A,jG:()=>e_.A,jj:()=>em.A,jl:()=>b.A,jz:()=>ex.A,kU:()=>O.A,kV:()=>eo.A,kr:()=>el.A,kt:()=>eJ.A,lM:()=>e2.A,lP:()=>eP.A,m0:()=>y.A,mN:()=>Q.A,nU:()=>ep.A,qz:()=>z.A,rX:()=>f.A,s3:()=>et.A,sU:()=>e$.A,sv:()=>j.A,ue:()=>eS.A,vR:()=>eL.A,vW:()=>ej.A,vd:()=>I.A,vj:()=>eV.A,vv:()=>er.A,wB:()=>eX.A,wO:()=>eQ.A,ww:()=>Y.A,xq:()=>eu.A,xv:()=>eF.A,y8:()=>ea.A,yQ:()=>g.A,yU:()=>eR.A,yd:()=>n.A,zP:()=>d.A,zW:()=>AA.A});var t=o(73365),i=o(87821),n=o(21878),r=o(79376),a=o(61659),l=o(6504),s=o(19307),c=o(74739),p=o(29967),d=o(17836),u=o(67494),h=o(66687),g=o(95188),m=o(54453),w=o(34582),f=o(70453),v=o(10949),b=o(64570),y=o(31258),P=o(59907),C=o(13374),k=o(17406),S=o(46431),M=o(29260),x=o(88433),F=o(49553),L=o(20478),U=o(17568),O=o(87831),R=o(1916),T=o(29418),_=o(18272),W=o(10550),q=o(9271),E=o(14251),N=o(50068),j=o(98173),H=o(10194),I=o(70362),J=o(17909),D=o(59437),G=o(33109),V=o(48433),B=o(86877),z=o(34271),X=o(60919),Z=o(35723),K=o(41046),Q=o(64629),$=o(6534),Y=o(5370),ee=o(59711),eA=o(39831),eo=o(9560),et=o(44159),ei=o(41098),en=o(20021),er=o(14797),ea=o(15504),el=o(93292),es=o(92165),ec=o(94304),ep=o(40789),ed=o(64871),eu=o(31805),eh=o(19621),eg=o(40081),em=o(38781),ew=o(88768),ef=o(68395),ev=o(88793),eb=o(25406),ey=o(10998),eP=o(64446),eC=o(12925),ek=o(93354),eS=o(73243),eM=o(89317),ex=o(12283),eF=o(1578),eL=o(90612),eU=o(43959),eO=o(24337),eR=o(76621),eT=o(59833),e_=o(67236),eW=o(37266),eq=o(97038),eE=o(72147),eN=o(68859),ej=o(93285),eH=o(20178),eI=o(65062),eJ=o(87030),eD=o(67519),eG=o(457),eV=o(58450),eB=o(48088),ez=o(56023),eX=o(59311),eZ=o(38177),eK=o(60659),eQ=o(1838),e$=o(34969),eY=o(42685),e1=o(99707),e3=o(6830),e8=o(20248),e6=o(11384),e5=o(50211),e7=o(64342),e0=o(60151),e2=o(81610),e9=o(11990),e4=o(52715),Ae=o(49387),AA=o(894),Ao=o(2031),At=o(58573),Ai=o(51328),An=o(3382),Ar=o(57717);let Aa={AlertCircle:i.A,ArrowDown:n.A,ArrowRight:r.A,ArrowUp:a.A,ArrowUpRight:l.A,Ban:s.A,Bell:c.A,Bot:p.A,Bug:d.A,Check:u.A,CheckCircle2:h.A,ChevronDown:g.A,ChevronLeft:m.A,ChevronRight:w.A,ChevronUp:f.A,ChevronsDownUp:v.A,Circle:b.A,ClipboardPaste:y.A,Command:P.A,Compass:C.A,Columns2:k.A,Copy:S.A,CornerDownLeft:M.A,Crown:x.A,Delete:F.A,Download:L.A,ExternalLink:U.A,Eye:O.A,EyeOff:R.A,Facebook:T.A,File:_.A,FileCode:W.A,FileJson:q.A,FilePlus:E.A,FileText:N.A,Files:j.A,Filter:H.A,Folder:I.A,FolderOpen:J.A,FolderPlus:D.A,GitBranch:G.A,GitFork:V.A,Github:B.A,Globe:z.A,GripVertical:X.A,Hand:Z.A,HardDrive:K.A,HelpCircle:Q.A,History:$.A,Home:Y.A,Image:ee.A,ImageOff:eA.A,KeyRound:eo.A,Keyboard:et.A,Laptop:ei.A,LayoutDashboard:en.A,Link2:er.A,ListChecks:ea.A,Loader2:el.A,Lock:es.A,LogIn:ec.A,LogOut:ep.A,Maximize2:ed.A,Minimize2:eu.A,Menu:eh.A,Mic:eg.A,MicOff:em.A,Monitor:ew.A,Moon:ef.A,MoreHorizontal:ev.A,MoreVertical:eb.A,MousePointer2:ey.A,Package:eP.A,Palette:eC.A,PanelLeft:ek.A,PanelLeftClose:eS.A,PanelLeftOpen:eM.A,PanelRight:ex.A,Paperclip:eF.A,Pause:eL.A,Pencil:eU.A,Pi:eO.A,Pin:eR.A,PinOff:eT.A,Play:e_.A,Plug:eW.A,Plus:eq.A,Power:eE.A,PowerOff:eN.A,QrCode:ej.A,RefreshCw:eH.A,Replace:eI.A,RotateCw:eJ.A,Save:eD.A,Scissors:eG.A,Search:eV.A,Send:eB.A,SendHorizontal:ez.A,Settings:eX.A,Share:eZ.A,Shield:eK.A,Smartphone:eQ.A,Sparkles:e$.A,Square:eY.A,SquarePen:e1.A,Star:e3.A,StickyNote:e8.A,Sun:e6.A,Target:e5.A,Terminal:e7.A,Trash2:e0.A,Triangle:e2.A,Type:e9.A,Undo2:e4.A,Upload:Ae.A,Users:AA.A,Volume2:Ao.A,VolumeX:At.A,Wallpaper:Ai.A,X:An.A,Zap:Ar.A};function Al({name:e,size:A=20,className:o="",...i}){let n=Aa[e];return n?(0,t.jsx)(n,{size:A,className:o,strokeWidth:2,...i}):(console.warn(`Icon "${e}" not found in the icon registry`),null)}}},e=>{e.O(0,[8207,6552,2347,5158,7358],()=>e(e.s=61436)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{20894:()=>{},30346:(e,t,a)=>{"use strict";a.d(t,{default:()=>s});var r=a(73365),l=a(1521),c=a(78762);let n=/9Remote-Mobile\/(\d+(?:\.\d+){0,2})/i,u=/^\d+(?:\.\d+){0,2}$/,i={android:"market://details?id=cc.remote9.app",ios:"itms-apps://apps.apple.com/app/id6796664210"};function o(){return"u"<typeof navigator?"android":window.DEVICE_INFO?.platform?window.DEVICE_INFO.platform:/iPhone|iPad|iPod/i.test(navigator.userAgent)||/^iP/.test(navigator.platform||"")||window.webkit?.messageHandlers?"ios":"android"}function s(){let{t:e}=(0,c.s)(),[t,a]=(0,l.useState)(!1);if((0,l.useEffect)(()=>{let e=navigator.userAgent;if(!window.ReactNativeWebView&&!n.test(String(e||"")))return;let t=o(),r=!1;return(async()=>{try{let l=await fetch(`/api/version?platform=${t}&_t=${Date.now()}`);if(!l.ok||r)return;let c=await l.json(),i=c?.minAppVersion;if(r||!i)return;let o=function(e,t){let a=t?.version;if("string"==typeof a&&u.test(a))return a;let r=n.exec(String(e||""));return r?r[1]:null}(e,window.DEVICE_INFO);(null===o||function(e,t){if(!u.test(String(e))||!u.test(String(t)))return!1;let a=String(e).split(".").map(Number),r=String(t).split(".").map(Number);for(let e=0;e<3;e++){let t=(a[e]||0)-(r[e]||0);if(0!==t)return t<0}return!1}(o,i))&&a(!0)}catch{}})(),()=>{r=!0}},[]),!t)return null;let s=i[o()]||i.android;return(0,r.jsxs)("div",{className:"fixed inset-0 z-[300] flex flex-col items-center justify-center gap-4 bg-[#0b0d0c] px-8 text-center",children:[(0,r.jsx)("span",{className:"material-symbols-rounded text-[56px] text-[#E56A4A]",children:"system_update_alt"}),(0,r.jsx)("h2",{className:"text-lg font-semibold text-white",children:e("appUpdate.title")}),(0,r.jsx)("p",{className:"max-w-xs text-sm text-white/60",children:e("appUpdate.body")}),(0,r.jsx)("a",{href:s,className:"mt-2 rounded-brand bg-[#E56A4A] px-6 py-2.5 text-sm font-semibold text-white",children:e("appUpdate.action")})]})}},32453:(e,t,a)=>{Promise.resolve().then(a.bind(a,72569)),Promise.resolve().then(a.bind(a,64457)),Promise.resolve().then(a.bind(a,24608)),Promise.resolve().then(a.t.bind(a,41453,23)),Promise.resolve().then(a.t.bind(a,45474,23)),Promise.resolve().then(a.t.bind(a,75550,23)),Promise.resolve().then(a.t.bind(a,20894,23)),Promise.resolve().then(a.bind(a,30346)),Promise.resolve().then(a.bind(a,95223)),Promise.resolve().then(a.bind(a,59584)),Promise.resolve().then(a.bind(a,44976))},44976:(e,t,a)=>{"use strict";a.d(t,{D:()=>s,ThemeProvider:()=>o});var r=a(73365),l=a(1521),c=a(79063);let n=(0,l.createContext)({theme:c.SS,setTheme:()=>{},toggleTheme:()=>{}}),u=e=>{if("u"<typeof document)return;let t=document.documentElement;t.classList.remove("light","dark"),t.classList.add(e),t.style.colorScheme=e;try{let t=window.__TAURI__?.window?.getCurrentWindow?.();t&&(t.setTheme?.(e)?.catch?.(()=>{}),t.setBackgroundColor?.("light"===e?"#e7e7e9":"#2a2a2a")?.catch?.(()=>{}))}catch{}},i=e=>{if(window.ReactNativeWebView)try{window.ReactNativeWebView.postMessage(JSON.stringify({type:"THEME_CHANGE",theme:e}))}catch(e){}};function o({children:e}){let[t,a]=(0,l.useState)(c.SS);(0,l.useEffect)(()=>{let e=localStorage.getItem(c.AQ)||localStorage.getItem("9remote-theme"),t=c.$.includes(e)?e:c.SS;a(t),u(t),i(t)},[]);let s=(0,l.useCallback)(e=>{c.$.includes(e)&&(a(e),u(e),i(e),localStorage.setItem(c.AQ,e),localStorage.setItem("9remote-theme",e))},[]),F=(0,l.useCallback)(()=>{s("dark"===t?"light":"dark")},[t,s]);return(0,r.jsx)(n.Provider,{value:{theme:t,setTheme:s,toggleTheme:F},children:e})}let s=()=>(0,l.useContext)(n)},59584:(e,t,a)=>{"use strict";a.d(t,{default:()=>n});var r=a(73365),l=a(1521);let c=()=>()=>{};function n({id:e,html:t}){return(0,l.useSyncExternalStore)(c,()=>!1,()=>!0)?(0,r.jsx)("script",{id:e,dangerouslySetInnerHTML:{__html:t}}):null}},79063:(e,t,a)=>{"use strict";a.d(t,{$:()=>r,AQ:()=>c,In:()=>s,SS:()=>l,aC:()=>u,g4:()=>o});let r=["dark","light"],l="dark",c="app_theme_v2";function n(e){return{background:e.bg,foreground:e.text,cursor:e.accent||e.peach||e.blue,cursorAccent:e.bg,selectionBackground:e.surface1,black:e.surfaceDim||e.bg,red:e.red,green:e.green,yellow:e.yellow,blue:e.blue,magenta:e.mauve,cyan:e.teal,white:e.subtext0||e.text,brightBlack:e.overlay0,brightRed:e.red,brightGreen:e.green,brightYellow:e.yellow,brightBlue:e.blue,brightMagenta:e.mauve,brightCyan:e.teal,brightWhite:e.text}}let u={dark:n({bg:"#1A1A1A",surface0:"#232323",surface1:"#2A2A2A",surfaceDim:"#101010",overlay0:"#5C5C5C",text:"#FFFFFF",subtext0:"#A0A0A0",red:"#FF8080",green:"#99FFE4",yellow:"#FFC799",blue:"#B0B0B0",mauve:"#FFD1A8",teal:"#66DDCC",peach:"#FFC799",accent:"#FFC799"}),light:n({bg:"#F5F5F5",surface0:"#E8E8E8",surface1:"#DDDDDD",surfaceDim:"#EFEFEF",overlay0:"#999999",text:"#1A1A1A",subtext0:"#5A5A5A",red:"#D9534F",green:"#2A9D8F",yellow:"#E07A3C",blue:"#6B6B6B",mauve:"#C97B5A",teal:"#3A9B8E",peach:"#E07A3C",accent:"#E07A3C"})},i={catppuccinMocha:n({bg:"#181825",surface0:"#31324A",surface1:"#45475A",surfaceDim:"#1E1E2E",overlay0:"#6C708E",text:"#CDD6F4",subtext0:"#A6ADC8",red:"#F38BA8",green:"#A6E3A1",yellow:"#F9E2AF",blue:"#89B4FA",mauve:"#CBA7F7",teal:"#94E2D5",peach:"#FAB387",accent:"#89B4FA"}),monokaiPro:n({bg:"#2D2A2E",surface0:"#353034",surface1:"#3D383C",surfaceDim:"#221F22",overlay0:"#72696A",text:"#FFF1F3",subtext0:"#C8C5C8",red:"#FD6883",green:"#ADDA78",yellow:"#F9CC6C",blue:"#F38D70",mauve:"#A8A9EB",teal:"#85DACC",peach:"#F38D70",accent:"#A8A9EB"}),gruvboxMaterial:n({bg:"#282828",surface0:"#3C3836",surface1:"#504945",surfaceDim:"#1D2021",overlay0:"#928374",text:"#D4BE98",subtext0:"#A89984",red:"#EA6962",green:"#A9B665",yellow:"#D8A657",blue:"#7DAEA3",mauve:"#D3869B",teal:"#89B482",peach:"#E78A4E",accent:"#E78A4E"}),dracula:n({bg:"#282A36",surface0:"#44475A",surface1:"#6272A4",surfaceDim:"#282A36",overlay0:"#6272A4",text:"#F8F8F2",subtext0:"#D2D2DC",red:"#FF5555",green:"#50FA7B",yellow:"#F1FA8C",blue:"#8BE9FD",mauve:"#FF79C6",teal:"#8BE9FD",peach:"#FFB86C",accent:"#BD93F9"}),everforest:n({bg:"#2D353B",surface0:"#343F44",surface1:"#3D484D",surfaceDim:"#232A2E",overlay0:"#7A8478",text:"#D3C6AA",subtext0:"#9DA9A0",red:"#E67E80",green:"#A7C080",yellow:"#DBBC7F",blue:"#7FBBB3",mauve:"#D699B6",teal:"#83C092",peach:"#E69875",accent:"#A7C080"}),linear:n({bg:"#08090A",surface0:"#0F1011",surface1:"#141516",surfaceDim:"#010102",overlay0:"#3E3E44",text:"#F7F8F8",subtext0:"#B4B4B8",red:"#F34E52",green:"#27A644",yellow:"#E4F222",blue:"#8FA6FF",mauve:"#8B5CF6",teal:"#02B8CC",peach:"#F7BF8B",accent:"#5E6AD2"}),synthwave:n({bg:"#262335",surface0:"#241B2F",surface1:"#34294F",surfaceDim:"#171520",overlay0:"#9D8BCA",text:"#FFFFFF",subtext0:"#FFFFFF99",red:"#FE4450",green:"#72F1B8",yellow:"#FEDE5D",blue:"#03EDF9",mauve:"#FF7EDB",teal:"#03EDF9",peach:"#F97E72",accent:"#FF7EDB"}),poimandres:n({bg:"#1B1E28",surface0:"#303340",surface1:"#3A4050",surfaceDim:"#14161F",overlay0:"#506477",text:"#E4F0FB",subtext0:"#A6ACCD",red:"#D0679D",green:"#5DE4C7",yellow:"#FFFAC2",blue:"#ADD7FF",mauve:"#F087BD",teal:"#5DE4C7",peach:"#F087BD",accent:"#5DE4C7"}),ayuMirage:n({bg:"#1F2430",surface0:"#212733",surface1:"#272D3A",surfaceDim:"#161B26",overlay0:"#686868",text:"#CBCCC6",subtext0:"#9A9B95",red:"#F08778",green:"#53BF97",yellow:"#FDCC60",blue:"#60B8D6",mauve:"#EC7171",teal:"#98E6CA",peach:"#FFA759",accent:"#FFCC66"}),githubDarkDimmed:n({bg:"#22272E",surface0:"#2D333B",surface1:"#373E47",surfaceDim:"#1C2128",overlay0:"#545D68",text:"#CDD9E5",subtext0:"#909DAB",red:"#F47067",green:"#57AB5A",yellow:"#C69026",blue:"#539BF5",mauve:"#B083F0",teal:"#39C5CF",peach:"#DAAA3F",accent:"#539BF5"}),palenight:n({bg:"#292D3E",surface0:"#313553",surface1:"#3A3F5F",surfaceDim:"#1F2233",overlay0:"#676E95",text:"#D0D0D0",subtext0:"#A0A0C0",red:"#E05252",green:"#2BE8A8",yellow:"#FFCB6B",blue:"#3FD0E0",mauve:"#C792EA",teal:"#3FD0E0",peach:"#FFCB6B",accent:"#82AAFF"}),nordDark:n({bg:"#2E3440",surface0:"#3B4252",surface1:"#434C5E",surfaceDim:"#232831",overlay0:"#4C566A",text:"#ECEFF4",subtext0:"#D8DEE9",red:"#BF616A",green:"#A3BE8C",yellow:"#EBCB8B",blue:"#81A1C1",mauve:"#B48EAD",teal:"#88C0D0",peach:"#D08770",accent:"#88C0D0"}),horizon:n({bg:"#1C1E26",surface0:"#232530",surface1:"#2E303E",surfaceDim:"#16161C",overlay0:"#6B6F8A",text:"#E0E0E0",subtext0:"#C5C8DA",red:"#E95678",green:"#29D398",yellow:"#FAB795",blue:"#26BBD9",mauve:"#EE64AC",teal:"#59E1E3",peach:"#FAB795",accent:"#EE64AC"}),kanagawaDragon:n({bg:"#181616",surface0:"#1D1C1C",surface1:"#252424",surfaceDim:"#0D0C0C",overlay0:"#7A6F7A",text:"#C5C9C5",subtext0:"#A6A69C",red:"#C4746E",green:"#87A987",yellow:"#E6C384",blue:"#8BA4B0",mauve:"#938AA9",teal:"#7AA89F",peach:"#FFA066",accent:"#8BA4B0"}),catppuccinLatte:n({bg:"#EFF1F5",surface0:"#CCD0DA",surface1:"#BCC0CC",surfaceDim:"#E6E9EF",overlay0:"#9CA0B0",text:"#4C4F69",subtext0:"#6C6F85",red:"#D20F39",green:"#40A02B",yellow:"#DF8E1D",blue:"#1E66F5",mauve:"#8839EF",teal:"#179299",peach:"#FE640B",accent:"#1E66F5"}),gruvboxLight:n({bg:"#FBF1C7",surface0:"#EBDBB2",surface1:"#D5C4A1",surfaceDim:"#F2E5BC",overlay0:"#928374",text:"#3C3836",subtext0:"#504945",red:"#9D0006",green:"#79740E",yellow:"#B57614",blue:"#076678",mauve:"#8F3F71",teal:"#427B58",peach:"#AF3A03",accent:"#B57614"}),githubLight:n({bg:"#FFFFFF",surface0:"#F6F8FA",surface1:"#EAEEF2",surfaceDim:"#EFF2F5",overlay0:"#8C959F",text:"#24292F",subtext0:"#57606A",red:"#CF222E",green:"#1A7F37",yellow:"#9A6700",blue:"#0969DA",mauve:"#8250DF",teal:"#1B7C83",peach:"#BC4C00",accent:"#0969DA"}),everforestLight:n({bg:"#FDF6E3",surface0:"#F4F0D9",surface1:"#EFEBD4",surfaceDim:"#E6E2CC",overlay0:"#9DA9A0",text:"#5C6A72",subtext0:"#7A8478",red:"#F85552",green:"#8DA101",yellow:"#DFA000",blue:"#3A94C5",mauve:"#DF69BA",teal:"#35A77C",peach:"#F57D3A",accent:"#8DA101"}),ayuLight:n({bg:"#FCFCFC",surface0:"#F3F3F3",surface1:"#E8E8E8",surfaceDim:"#F7F7F7",overlay0:"#C1C1C1",text:"#5C6166",subtext0:"#8A8F94",red:"#E7666A",green:"#80AB24",yellow:"#EBA54D",blue:"#4196DF",mauve:"#9870C3",teal:"#51B891",peach:"#E78F4D",accent:"#FF8552"}),tokyoDay:n({bg:"#D6D8DF",surface0:"#C8CBD4",surface1:"#B5B8C5",surfaceDim:"#E1E3EA",overlay0:"#9699AE",text:"#343B58",subtext0:"#565C70",red:"#C24242",green:"#41A6B5",yellow:"#8F5E15",blue:"#2959AA",mauve:"#7B43BA",teal:"#006C86",peach:"#D68910",accent:"#2959AA"}),roseDawn:n({bg:"#FAF4ED",surface0:"#F2E9E1",surface1:"#E9DDD2",surfaceDim:"#F5EBE0",overlay0:"#9893A5",text:"#576279",subtext0:"#797593",red:"#B4637A",green:"#618774",yellow:"#EA9D34",blue:"#286983",mauve:"#907AA9",teal:"#56949F",peach:"#D7827E",accent:"#D7827E"}),lavenderMist:n({bg:"#F6F3FB",surface0:"#EAE5F5",surface1:"#DDD6EE",surfaceDim:"#F0ECF8",overlay0:"#9B95B8",text:"#4A4467",subtext0:"#6B6491",red:"#C95D77",green:"#5FA17A",yellow:"#D9A441",blue:"#5B7FBE",mauve:"#8B7AB8",teal:"#5FA6A8",peach:"#D08A66",accent:"#8B7AB8"}),mintCream:n({bg:"#ECF6F0",surface0:"#DCEEE3",surface1:"#C9E3D2",surfaceDim:"#E2F1E9",overlay0:"#7FA396",text:"#2F4A40",subtext0:"#4E6B5F",red:"#C76B6B",green:"#3FA17A",yellow:"#C9A93E",blue:"#4A8DB8",mauve:"#9B6FA8",teal:"#3FA17A",peach:"#D58560",accent:"#3FA17A"})},o=[{key:"catppuccinMocha",label:"Catppuccin Mocha",mode:"dark"},{key:"monokaiPro",label:"Monokai Pro",mode:"dark"},{key:"dracula",label:"Dracula",mode:"dark"},{key:"everforest",label:"Everforest",mode:"dark"},{key:"gruvboxMaterial",label:"Gruvbox Material",mode:"dark"},{key:"linear",label:"Linear",mode:"dark"},{key:"synthwave",label:"Synthwave '84",mode:"dark"},{key:"poimandres",label:"Poimandres",mode:"dark"},{key:"ayuMirage",label:"Ayu Mirage",mode:"dark"},{key:"githubDarkDimmed",label:"GitHub Dimmed",mode:"dark"},{key:"palenight",label:"Palenight",mode:"dark"},{key:"nordDark",label:"Nord",mode:"dark"},{key:"horizon",label:"Horizon",mode:"dark"},{key:"kanagawaDragon",label:"Kanagawa Dragon",mode:"dark"},{key:"catppuccinLatte",label:"Catppuccin Latte",mode:"light"},{key:"gruvboxLight",label:"Gruvbox Light",mode:"light"},{key:"githubLight",label:"GitHub Light",mode:"light"},{key:"everforestLight",label:"Everforest Light",mode:"light"},{key:"ayuLight",label:"Ayu Light",mode:"light"},{key:"tokyoDay",label:"Tokyo Day",mode:"light"},{key:"roseDawn",label:"Rose Dawn",mode:"light"},{key:"lavenderMist",label:"Lavender Mist",mode:"light"},{key:"mintCream",label:"Mint Cream",mode:"light"}];function s(e,t){let a="light"===e?i.everforestLight:i.palenight;return t&&"default"!==t&&o.find(a=>a.key===t&&a.mode===e)&&i[t]||a}},95223:(e,t,a)=>{"use strict";a.d(t,{default:()=>l});var r=a(1521);function l(){let[e,t]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let e=window.matchMedia("(pointer: coarse) and (max-width: 900px)"),a=window.matchMedia("(orientation: landscape)"),r=()=>{t(e.matches),l(a.matches)};return r(),e.addEventListener("change",r),a.addEventListener("change",r),()=>{e.removeEventListener("change",r),a.removeEventListener("change",r)}},[]),(0,r.useEffect)(()=>{let t=!!window.ReactNativeWebView||/9Remote-Mobile/i.test(navigator.userAgent);if(!e||t)return;let a=!1;return(async()=>{try{await window.screen?.orientation?.lock?.("portrait"),a=!0}catch{}})(),()=>{a&&window.screen?.orientation?.unlock?.()}},[e]),null}}},e=>{e.O(0,[3285,611,8669,8762,2347,5158,7358],()=>e(e.s=32453)),_N_E=e.O()}]);
|
package/dist/web/_next/static/chunks/app/login/{page-df0619de376c5db8.js → page-2a046d10af50c87a.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{9973:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>J});var a=s(73365),n=s(1521),r=s(29717),l=s(20464),o=s(4018),i=s(2163),c=s(59893),d=s(64683),x=s(11865),m=s(80186),u=s(45111),p=s(42174),h=s(30240),g=s(8910),b=s(78762),f=s(52345),j=s(18057);function y({className:e="",showLabel:t=!0}){let{locale:s}=(0,b.s)(),[r,l]=(0,n.useState)(!1),o=f.dI.find(e=>e.code===s)||f.dI[0];return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("button",{onClick:()=>{(0,g.e)(),l(!0)},className:`flex items-center gap-1.5 bg-surface-2 hover:bg-surface-3 rounded-brand text-text text-sm px-2 py-1 transition-all duration-150 ease-out active:scale-[0.96] ${e}`,title:o.label,children:[(0,a.jsx)("img",{src:`https://flagcdn.com/w40/${o.country}.png`,alt:o.label,className:"w-[17px] h-[12px] object-cover rounded-[2px]",loading:"lazy"}),t&&(0,a.jsx)("span",{className:"hidden sm:inline",children:o.code.toUpperCase()})]}),(0,a.jsx)(j.A,{isOpen:r,onClose:()=>l(!1)})]})}var v=s(90753),w=s(38415),N=s(23346);let k=null;async function C(){k||(k=N.Ay.ready),await k}async function S(e,t){await C();let s=N.Ay.from_base64(e,N.Ay.base64_variants.ORIGINAL),a=N.Ay.from_string(t),n=N.Ay.crypto_box_seal(a,s);return N.Ay.to_base64(n,N.Ay.base64_variants.ORIGINAL)}function _(e=24){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}let A="9remote_github_token",L="9remote:githubTokenChange";async function z(e,t,s={}){let a=await fetch(`${w.pe}${t}`,{...s,headers:{...{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},...s.headers||{}}});if(!a.ok){let e=await a.text().catch(()=>"");throw Error(`GitHub ${a.status}: ${e||a.statusText}`)}return 204===a.status?null:a.json()}function I(){let[e,t]=(0,n.useState)(()=>localStorage.getItem(A)||""),[s,a]=(0,n.useState)(!1),[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>{let e=()=>{t(localStorage.getItem(A)||"")};return window.addEventListener(L,e),window.addEventListener("storage",e),()=>{window.removeEventListener(L,e),window.removeEventListener("storage",e)}},[!0]);let o=(0,n.useCallback)(e=>{t(e),e?localStorage.setItem(A,e):localStorage.removeItem(A),window.dispatchEvent(new Event(L))},[!0]),i=(0,n.useCallback)(()=>{o("")},[o]),c=(0,n.useCallback)(async(t=e)=>z(t,w.no.user),[e]),d=(0,n.useCallback)(async()=>{a(!0),l(null);try{return(await z(e,w.no.codespaces)).codespaces||[]}catch(e){return l(e.message),[]}finally{a(!1)}},[e]),x=(0,n.useCallback)(async t=>z(e,w.no.codespaceByName(t)),[e]),m=(0,n.useCallback)(async t=>z(e,w.no.startCodespace(t),{method:"POST"}),[e]),u=(0,n.useCallback)(async()=>z(e,w.no.userReposList),[e]),p=(0,n.useCallback)(async(t,s)=>z(e,w.no.createCodespaceForRepo(t,s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),[e]),h=(0,n.useCallback)(async(t,s)=>{let a=await z(e,w.no.codespaceSecretsPublicKey),n=await S(a.key,s);await z(e,w.no.codespaceSecret(w.Gf),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({encrypted_value:n,key_id:a.key_id,selected_repository_ids:[t]})})},[e]),g=(0,n.useCallback)(async(t,s)=>{let a=w.no.repoContents(t,s,w.Hu),n=!1;try{await z(e,a),n=!0}catch{}if(n)return{existed:!0};let r=JSON.stringify(w.cu,null,2);return await z(e,a,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"Add 9remote devcontainer",content:btoa(unescape(encodeURIComponent(r)))})}),{existed:!1}},[e]),b=(0,n.useCallback)(async(e,t)=>{for(let s=0;s<w.ij;s++){let s=await x(e);if(t?.(s.state),s.state===w.Gi.available)return s;await new Promise(e=>setTimeout(e,w.Nn))}throw Error("Codespace start timeout")},[x]);return{token:e,setToken:o,clearToken:i,loading:s,error:r,getUser:c,listCodespaces:d,getCodespace:x,startCodespace:m,waitUntilAvailable:b,listRepos:u,createCodespace:p,ensureDevcontainer:g,setApiKeySecret:h,generateApiKey:_}}function K({isOpen:e,onClose:t,onCreated:s}){let{listRepos:r,createCodespace:l,ensureDevcontainer:o,setApiKeySecret:i,generateApiKey:c,error:x}=I(),[p,h]=(0,n.useState)([]),[g,b]=(0,n.useState)(!1),[f,j]=(0,n.useState)(null),[y,v]=(0,n.useState)(""),[w,N]=(0,n.useState)(null),[k,C]=(0,n.useState)("");(0,n.useEffect)(()=>{e&&(N(null),b(!0),r().then(e=>h(Array.isArray(e)?e:[])).catch(e=>N(e.message)).finally(()=>b(!1)))},[e,r]),(0,n.useEffect)(()=>{if(!e||f)return;let s=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t?.())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[e,f,t]);let S=(0,n.useMemo)(()=>{let e=y.trim().toLowerCase();return e?p.filter(t=>t.full_name.toLowerCase().includes(e)):p},[p,y]),_=async e=>{j(e.full_name),N(null),C("Generating API key...");try{let t=c();C("Setting codespace secret..."),await i(e.id,t),C("Setting up devcontainer..."),await o(e.owner.login,e.name),C("Creating codespace...");let a=await l(e.owner.login,e.name);s({codespace:a,apiKey:t})}catch(e){N(e.message)}finally{j(null),C("")}};return e?(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-[2px] p-4",onClick:t,children:(0,a.jsxs)("div",{className:"card-elev p-6 max-w-md w-full max-h-[80dvh] flex flex-col border border-border",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsx)("h3",{className:"text-lg font-bold text-text",children:"Select repository"}),(0,a.jsx)("button",{onClick:t,className:"p-1 text-text-muted hover:text-text",children:(0,a.jsx)(d.X,{size:20})})]}),(0,a.jsxs)("div",{className:"relative mb-3",children:[(0,a.jsx)(d.vj,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-text-muted"}),(0,a.jsx)("input",{type:"text",value:y,onChange:e=>v(e.target.value),placeholder:"Search repos...",className:"w-full pl-9 pr-3 py-2 bg-surface-2 rounded-brand text-text placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-brand-500/40 text-sm"})]}),(w||x)&&(0,a.jsxs)("div",{className:"flex items-start gap-2 mb-3 p-2 bg-danger/10 rounded-brand text-xs text-danger",children:[(0,a.jsx)(d.RI,{size:14,className:"flex-shrink-0 mt-0.5"}),(0,a.jsx)("span",{className:"break-words",children:w||x})]}),(0,a.jsx)("div",{className:"flex-1 overflow-auto space-y-1",children:g?(0,a.jsx)(u.A,{text:"Loading repos..."}):0===S.length?(0,a.jsx)("div",{className:"text-center py-6 text-text-muted text-sm",children:"No repos"}):S.map(e=>{let t=f===e.full_name;return(0,a.jsxs)("div",{className:"p-2 bg-surface-2 hover:bg-surface-3 rounded-brand transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-sm text-text font-medium truncate",title:e.full_name,children:e.full_name}),e.private&&(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"private"})]}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>_(e),disabled:!!f,loading:t,className:"!py-1 !px-2 text-xs",children:[(0,a.jsx)(d.FW,{size:12}),"Create"]})]}),t&&k&&(0,a.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:k})]},e.id)})})]})}):null}let E="9remote_codespace_keys";function R(){try{return JSON.parse(localStorage.getItem(E)||"{}")}catch{return{}}}function M({onConnect:e,onLogout:t}){let{listCodespaces:s,startCodespace:r,waitUntilAvailable:l,loading:o,error:i,getUser:c}=I(),[x,p]=(0,n.useState)([]),[h,g]=(0,n.useState)(null),[b,f]=(0,n.useState)(null),[j,y]=(0,n.useState)(""),[v,N]=(0,n.useState)(!1),k=(0,n.useCallback)(async()=>{try{let e=await c();g(e)}catch{}p(await s())},[c,s]);(0,n.useEffect)(()=>{k()},[k]);let C=async t=>{var s;let a=(s=t.name,R()[s]||null);if(!a){y("No saved key for this codespace. Recreate it from web to enable auto-connect."),f(t.name),setTimeout(()=>{f(null),y("")},4e3);return}f(t.name),y("");try{let s=t;t.state!==w.Gi.available&&(y("Starting codespace..."),await r(t.name),s=await l(t.name,e=>{y(`State: ${e}`)})),e(s,a)}catch(e){y(`Error: ${e.message}`)}finally{f(null)}};return(0,a.jsxs)("div",{className:"card-elev p-8 max-w-md w-full border border-border",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,a.jsx)("div",{className:"p-2 bg-brand-500/10 rounded-brand",children:(0,a.jsx)(d.Cp,{className:"text-brand-500",size:24})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-text",children:"Codespaces"}),h&&(0,a.jsxs)("p",{className:"text-sm text-text-muted truncate",children:["@",h.login]})]}),(0,a.jsx)("button",{onClick:()=>N(!0),className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"New codespace",children:(0,a.jsx)(d.FW,{size:18})}),(0,a.jsx)("button",{onClick:k,disabled:o,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"Refresh",children:(0,a.jsx)(d.e9,{size:18,className:o?"animate-spin":""})}),(0,a.jsx)("button",{onClick:t,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"Logout",children:(0,a.jsx)(d.nU,{size:18})})]}),i&&(0,a.jsxs)("div",{className:"flex items-start gap-2 mb-4 p-3 bg-danger/10 rounded-brand text-sm text-danger",children:[(0,a.jsx)(d.RI,{size:16,className:"flex-shrink-0 mt-0.5"}),(0,a.jsx)("span",{className:"break-words",children:i})]}),o&&0===x.length?(0,a.jsx)(u.A,{text:"Loading codespaces..."}):0===x.length?(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-text-muted text-sm mb-4",children:"No codespaces yet."}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>N(!0),children:[(0,a.jsx)(d.FW,{size:16}),"Create new codespace"]})]}):(0,a.jsx)("div",{className:"space-y-2",children:x.map(e=>{let t=b===e.name,s=e.state===w.Gi.available;return(0,a.jsxs)("div",{className:"bg-surface-2 rounded-brand p-3 hover:bg-surface-3 transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-text font-medium truncate",title:e.display_name||e.name,children:e.display_name||e.name}),(0,a.jsxs)("div",{className:"text-xs text-text-muted truncate",title:`${e.repository?.full_name} \xb7 ${e.state}`,children:[e.repository?.full_name," \xb7 ",e.state]})]}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>C(e),disabled:t,loading:t,className:"!py-1.5 !px-3 text-sm",children:[(0,a.jsx)(d.jG,{size:14}),s?"Connect":"Start"]})]}),t&&j&&(0,a.jsx)("div",{className:"mt-2 text-xs text-text-muted",children:j})]},e.name)})}),(0,a.jsx)(K,{isOpen:v,onClose:()=>N(!1),onCreated:({codespace:e,apiKey:t})=>{var s;let a;s=e.name,(a=R())[s]=t,localStorage.setItem(E,JSON.stringify(a)),N(!1),k()}})]})}var T=s(97711),O=s(90084),P=s(86129),U=s(11155),F=s(2805),$=s(75687),D=s(73426),G=s(90076);function W(){let{t:e}=(0,b.s)(),[t,s]=(0,n.useState)(""),[g,f]=(0,n.useState)(!0),[j,N]=(0,n.useState)([]),[k,C]=(0,n.useState)(!1),[S,_]=(0,n.useState)(!1),[A,L]=(0,n.useState)("local"),[z,K]=(0,n.useState)(null),[E,R]=(0,n.useState)(""),[W,B]=(0,n.useState)(null),[J,H]=(0,n.useState)(null),[Q,V]=(0,n.useState)(null),X="3.0.33",{token:q,clearToken:Y}=I(),{getAuth:Z,setAuth:ee}=(0,T.Fo)(),et=(0,r.useSearchParams)(),es=(0,r.useRouter)(),{loading:ea,error:en,setError:er,authenticateWithToken:el,authenticateWithApiKey:eo}=(0,l.As)(),[ei,ec]=(0,n.useState)(!1),{loadKeys:ed,saveKey:ex,removeKey:em,renameKey:eu,hasStoredKeys:ep,updateLastLogin:eh}=(0,o.u)(),eg=(0,n.useMemo)(()=>j.some(e=>(0,U.PF)(e.key)),[j]),eb=(0,n.useMemo)(()=>et.get("t"),[et]),[ef]=(0,n.useState)(()=>{try{let e=sessionStorage.getItem("9remote_url_pairing");if(e)return e;let t=(0,$.k)(window.location.hash)||(0,$.k)(window.location.search);if(t?.tempKey)return sessionStorage.setItem("9remote_url_pairing",t.tempKey+(t.tail||"")),t.tempKey+(t.tail||"")}catch{}return null}),ej=!!eb||!!ef,ey=(0,n.useRef)(!1);(0,n.useEffect)(()=>{ey.current||eb||ef||sessionStorage.getItem(P.Jd)||(0,F._r)()&&window.location.port===String(G._8)||"1"===sessionStorage.getItem("9remote_manual_disconnect")||Z()?.apiKey&&(ey.current=!0,es.replace("/workspace/"))},[eb,ef,Z,es]),(0,n.useEffect)(()=>{if(window.location.hash||window.location.search){let e=(0,$.k)(window.location.hash)||(0,$.k)(window.location.search);e?.tempKey&&window.history.replaceState(null,"",window.location.pathname)}f("false"!==localStorage.getItem("9remote_remember_key_preference")),N(ed()),C(!0),sessionStorage.getItem(P.Jd)&&(sessionStorage.removeItem(P.Jd),ec(!0)),q&&L("github"),(0,F._r)()&&window.location.port===String(G._8)&&fetch("/api/ui/state").then(e=>e.ok?e.json():null).then(e=>{if(e?.permanentKey){V(e.permanentKey);let t="remote"===et.get("mode");if(t)try{sessionStorage.setItem("9remote_manual_disconnect","1")}catch{}if(!(t||"1"===sessionStorage.getItem("9remote_manual_disconnect"))){let t=e.permanentKey,s=(0,U.Uo)(t),a=(0,U.Cj)(t);(0,O.LG)(s,{tail:a}),ee({apiKey:s,tunnelUrl:window.location.origin,mode:"local",tempKey:null,localIp:null}),es.push("/workspace/")}}}).catch(()=>{})},[ed,q,es,ee,et]);let ev=(0,n.useCallback)(async e=>{let t=(0,$.k)(e);(0,D.U)("false"!==localStorage.getItem("9remote_remember_key_preference"));let s=await el(t?.tempKey||e,!0,t?.tail);try{sessionStorage.removeItem("9remote_url_pairing")}catch{}s.success&&(0,D.zm)(t,{remember:"false"!==localStorage.getItem("9remote_remember_key_preference")})},[el]),ew=(0,n.useRef)(!1);(0,n.useEffect)(()=>{(eb||ef)&&(ew.current||(ew.current=!0,eb?el(eb):ev(ef)))},[eb,ef,el,ev]);let eN=async()=>{let s=t.trim();if(!s)return;if((0,U.PF)(s))return void er(e("login.legacyKeyError"));let a=(0,$.k)(s),n=!!a?.tempKey,r=n?a.tempKey:(0,U.Uo)(s),l=n?a.tail:(0,U.Cj)(s);if(n&&(0,D.U)(g),(n?await el(a.tempKey,!0,a.tail):await eo(s)).success){if(n)return void(0,D.zm)(a,{remember:g});l&&(0,O.LG)(r,{tail:l}),g&&sessionStorage.setItem(P.El,s),es.push("/workspace/")}},ek=async t=>{let s;if(!t)return;if((0,U.PF)(t))return void er(e("login.legacyKeyError"));let a=(0,U.Cj)(t);a&&(0,O.LG)((0,U.Uo)(t),{tail:a});let n=a?t:(0,O.$4)(t);H(t);try{s=await eo(n)}finally{H(null)}s?.success&&(n!==t&&ex(n),eh(t),es.push("/workspace/"))},eC=e=>{eu(e,E.trim()),N(ed()),K(null)},eS=()=>{K(null)},e_=async e=>{let t=(0,$.k)(e);return!!t?.tempKey&&((0,D.U)("false"!==localStorage.getItem("9remote_remember_key_preference")),!!(await el(t.tempKey,!0,t.tail)).success&&((0,D.zm)(t,{remember:"false"!==localStorage.getItem("9remote_remember_key_preference")}),!0))};return ej&&ea?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsx)("div",{className:"card-elev p-8 max-w-md w-full border border-border",children:(0,a.jsx)(u.A,{size:"lg",text:e("login.authenticating")})})})]}):"github"===A&&q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsx)(M,{onConnect:(e,t)=>{let s=(0,w.xO)(e.name);ee({apiKey:(0,U.Uo)(t),tunnelUrl:s,mode:"remote"}),es.push("/workspace/")},onLogout:()=>{Y()}})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),k&&(0,F._r)()&&(0,a.jsxs)("a",{href:"/",className:"fixed top-4 left-4 z-50 inline-flex items-center gap-2 px-3 py-1.5 text-xs font-medium text-text hover:text-white bg-surface-2/90 hover:bg-surface-3 border border-border-subtle rounded-brand-lg backdrop-blur-md transition-all shadow-sm active:scale-[0.97]",title:"Back to Host QR",children:[(0,a.jsx)(d.Ay,{name:"ChevronLeft",size:15,className:"opacity-70"}),(0,a.jsx)(d.Ay,{name:"QrCode",size:15,className:"text-brand-500"}),(0,a.jsx)("span",{children:"Host QR"})]}),(0,a.jsxs)("div",{className:"min-h-screen grid lg:grid-cols-2",children:[(0,a.jsxs)("section",{className:"hidden lg:flex flex-col justify-between px-12 xl:px-20 py-12 relative overflow-hidden",children:[(0,a.jsx)("div",{className:"login-hero-glow","aria-hidden":!0}),(0,a.jsxs)("div",{className:"my-auto max-w-xl relative z-10",children:[(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-surface-2/60 border border-border-subtle font-mono text-[11px] text-text-muted mb-7",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-brand-500 animate-pulse-glow"}),e("login.termConnected")," \xb7 ",e("login.termTunnel")]}),(0,a.jsxs)("h1",{className:"text-6xl xl:text-7xl font-extrabold tracking-tight leading-[0.98] mb-6 text-text",children:[e("login.heroLine1"),(0,a.jsx)("br",{}),e("login.heroLine2"),(0,a.jsx)("br",{}),(0,a.jsx)("span",{className:"login-hero-grad",children:e("login.heroLine3")})]}),(0,a.jsx)("p",{className:"text-text-muted text-base lg:text-lg leading-relaxed max-w-md mb-8",children:e("login.tagline")}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 mb-9",children:["Terminal","Desktop","Files","WebRTC low-latency","iOS \xb7 Android \xb7 Web"].map(e=>(0,a.jsx)("span",{className:"font-mono text-xs text-text-muted px-3 py-1.5 rounded-full border border-border-subtle",children:e},e))}),(0,a.jsxs)("div",{className:"rounded-xl border border-border-subtle bg-surface-2/60 overflow-hidden max-w-md shadow-lg",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 border-b border-border-subtle",children:[(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#ff5f57]"}),(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#febc2e]"}),(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#28c840]"}),(0,a.jsx)("span",{className:"ml-2 font-mono text-[10px] text-text-subtle",children:"dev@mac — zsh"})]}),(0,a.jsxs)("div",{className:"p-3.5 font-mono text-[12px] leading-relaxed",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-subtle",children:"➜"})," 9remote start"]}),(0,a.jsx)("div",{className:"text-text-subtle",children:"↳ tunnel up \xb7 pairing open"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-brand-500",children:"[ok]"})," ",(0,a.jsx)("span",{className:"text-text",children:"machine"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"macbook-pro-m3"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-brand-500",children:"[ok]"})," ",(0,a.jsx)("span",{className:"text-text",children:"pty"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"daemon v3.1 \xb7 12 warm"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[#6aab6a]",children:"●"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"waiting for phone…"})," ",(0,a.jsx)("span",{className:"inline-block w-[7px] h-[13px] bg-brand-500 align-middle animate-cursor-blink"})]})]})]})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-x-5 gap-y-1 font-mono text-[11px] text-text-subtle pt-8 relative z-10",children:[(0,a.jsx)("span",{children:"› PTY persistent"}),(0,a.jsx)("span",{children:"› end-to-end encrypted"}),(0,a.jsx)("span",{children:"› open source"})]})]}),(0,a.jsxs)("section",{className:"flex items-center justify-center p-6 sm:p-10 lg:border-l lg:border-border-subtle lg:bg-surface-1 relative",children:[(0,a.jsx)("div",{className:"login-mobile-glow lg:hidden","aria-hidden":!0}),(0,a.jsxs)("div",{className:"relative z-10 w-full max-w-sm space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,a.jsx)("img",{src:"/icon-192.png",alt:"9Remote Logo",className:"w-10 h-10 rounded-[11px] object-contain shadow-lg shadow-brand-500/20"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h1",{className:"text-[22px] font-bold tracking-tight text-text leading-none",children:"9Remote"}),X&&(0,a.jsxs)("p",{className:"font-mono text-[11px] text-text-subtle mt-1",children:["v",X]})]}),(0,a.jsx)(y,{}),(0,a.jsx)(v.A,{})]}),(0,a.jsx)("p",{className:"text-text-muted text-lg font-medium leading-snug pr-4 mb-6 lg:hidden",children:e("login.tagline")}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-2.5",children:[(0,a.jsx)(d.Ay,{name:"KeyRound",className:"text-text-muted opacity-70",size:14}),(0,a.jsx)("span",{className:"text-[13px] font-semibold text-text",children:e("login.accessKey")})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{id:"accessKeyInput",type:"text",value:t,onChange:e=>{let t=e.target.value;s(t.length<=P.qM?t.toUpperCase():t.toLowerCase())},onKeyDown:e=>"Enter"===e.key&&t&&eN(),placeholder:e("login.placeholder"),className:"w-full pl-3.5 pr-20 py-3 bg-surface-2 border border-border-subtle rounded-[10px] font-mono text-sm text-text placeholder-text-subtle focus:outline-none focus:border-brand-500 focus:ring-2 focus:ring-brand-500/20 transition-all duration-150"}),(0,a.jsxs)("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 flex items-center gap-1",children:[t&&(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("button",{onMouseDown:e=>e.preventDefault(),onClick:()=>{s("")},className:"w-7 h-7 grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-text transition-colors",type:"button",children:(0,a.jsx)(d.X,{size:16})})}),(0,a.jsx)("button",{onMouseDown:e=>e.preventDefault(),onClick:()=>_(!0),className:"w-7 h-7 grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-brand-500 transition-colors",type:"button","aria-label":e("login.scanQr"),children:(0,a.jsx)(d.Ay,{name:"QrCode",size:16})})]})]}),(en||ei)&&(0,a.jsx)("p",{className:"mt-2 text-xs font-mono text-danger",children:"agent-offline"===en?e("login.agentOffline"):en&&"wrong-key-tail"!==en?en:e("login.invalidKeyTail")}),(0,a.jsxs)("label",{className:"flex items-center gap-2.5 cursor-pointer mt-4 select-none",children:[(0,a.jsx)("input",{type:"checkbox",checked:g,onChange:e=>{var t;return f(t=e.target.checked),void(localStorage.setItem("9remote_remember_key_preference",t),!t&&(0,T.U0)())},className:"w-[15px] h-[15px] accent-brand-500"}),(0,a.jsx)("span",{className:"text-[13px] text-text-muted",children:e("login.rememberKey")})]}),(0,a.jsx)(m.A,{variant:"primary",onClick:eN,loading:ea,className:"btn-cta w-full mt-4",children:(0,a.jsxs)("span",{className:"inline-flex items-center justify-center gap-2",children:[e("login.connect"),(0,a.jsx)(d.Ay,{name:"ArrowRight",size:16})]})}),k&&j.length>0&&(0,a.jsxs)("div",{className:"mt-5 pt-5 border-t border-border-subtle",children:[(0,a.jsx)("div",{className:"font-mono text-[11px] uppercase tracking-wider text-text-subtle mb-1 px-1",children:e("login.savedKeys")}),eg&&(0,a.jsxs)("div",{className:"my-2.5 px-3 py-2.5 bg-amber-500/10 border border-amber-500/30 rounded-brand-lg flex items-start gap-2.5",children:[(0,a.jsx)(d.Ay,{name:"AlertCircle",size:16,className:"text-amber-500 shrink-0 mt-0.5"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-text",children:e("login.legacyKeyUpdateRequired")}),(0,a.jsx)("div",{className:"text-xs text-text-muted mt-0.5",children:e("login.legacyKeyUpdateHint")}),(0,a.jsx)("code",{className:"inline-block mt-1.5 px-2 py-0.5 bg-surface-2 border border-border text-text text-xs rounded font-mono select-all",children:"npm i -g 9remote@latest"})]})]}),j.map(t=>{let s=z===t.id,n=J===t.key,r=(0,U.PF)(t.key);return(0,a.jsxs)("div",{className:`flex items-center gap-3 px-1 py-2 rounded-[10px] hover:bg-surface-2 transition-colors cursor-pointer ${r?"opacity-85":""}`,onClick:()=>!s&&!n&&ek(t.key),role:"button",tabIndex:0,children:[(0,a.jsx)("div",{className:`w-12 h-12 rounded-[12px] bg-surface-2 border ${r?"border-amber-500/40 text-amber-500":"border-border-subtle text-text-muted"} grid place-items-center flex-shrink-0`,children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",className:"w-[26px] h-[26px]",children:[(0,a.jsx)("rect",{x:"2",y:"4",width:"20",height:"13",rx:"2"}),(0,a.jsx)("line",{x1:"2",y1:"20",x2:"22",y2:"20"})]})}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:s?(0,a.jsxs)("div",{className:"flex items-center gap-1",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("input",{autoFocus:!0,value:E,onChange:e=>R(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eC(t.id),"Escape"===e.key&&eS()},placeholder:e("login.namePlaceholder"),className:"flex-1 min-w-0 bg-surface-2 border border-brand-500 rounded-md text-text text-[13px] px-2 py-1 outline-none"}),(0,a.jsx)("button",{onClick:()=>eC(t.id),className:"w-6 h-6 grid place-items-center rounded-md bg-brand-500 text-white","aria-label":e("common.done"),children:(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3 h-3",children:(0,a.jsx)("polyline",{points:"20 6 9 17 4 12"})})}),(0,a.jsx)("button",{onClick:eS,className:"w-6 h-6 grid place-items-center rounded-md bg-surface-2 text-text-muted","aria-label":e("common.cancel"),children:(0,a.jsx)(d.X,{size:13})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[13px] font-medium text-text truncate",title:t.label||e("agentSwitcher.unnamed"),children:t.label||e("agentSwitcher.unnamed")}),r&&(0,a.jsx)("span",{className:"shrink-0 px-1.5 py-0.5 text-[9px] font-semibold font-mono uppercase rounded bg-amber-500/15 text-amber-500 border border-amber-500/30",children:e("login.updateRequired")})]}),(0,a.jsx)("div",{className:"font-mono text-[11px] text-text-subtle mt-0.5 truncate",children:(0,i.o)(t.key)})]})}),!s&&(0,a.jsx)("span",{className:"font-mono text-[11px] text-text-subtle whitespace-nowrap",children:n?e("agentSwitcher.connecting"):(t=>{if(!t)return"";try{let s=new Date(t),a=new Date-s,n=Math.floor(a/6e4),r=Math.floor(a/36e5),l=Math.floor(a/864e5);if(n<1)return e("login.justNow");if(n<60)return e("login.minutesAgo",{n:n});if(r<24)return e("login.hoursAgo",{n:r});if(l<7)return e("login.daysAgo",{n:l});return s.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}catch{return""}})(t.lastLoginDate)}),!s&&(0,a.jsxs)("div",{className:"flex gap-0.5",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("button",{onClick:()=>{K(t.id),R(t.label||"")},title:e("common.edit"),className:"w-[26px] h-[26px] grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-text transition-colors",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:[(0,a.jsx)("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),(0,a.jsx)("path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z"})]})}),(0,a.jsx)("button",{onClick:()=>B(t),title:e("common.delete"),className:"w-[26px] h-[26px] grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-danger transition-colors",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:[(0,a.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,a.jsx)("path",{d:"M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})]},t.id)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 pt-1 text-text-subtle",children:[(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:(0,a.jsx)("path",{d:"M12 2l9 4v6c0 5-3.8 9.7-9 11-5.2-1.3-9-6-9-11V6l9-4z"})}),(0,a.jsx)("span",{className:"font-mono text-[11px]",children:e("login.secureTitle")})]})]})]})]}),(0,a.jsx)(x.A,{isOpen:S,onClose:()=>_(!1),onScan:e_}),(0,a.jsx)(p.A,{isOpen:!!W,onClose:()=>B(null),onConfirm:()=>{W&&(em(W.id),N(ed()))},title:e("login.deleteKeyTitle"),message:e("login.deleteKeyConfirm",{name:W?.label}),confirmText:e("common.delete")})]})}function B(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,a.jsx)(u.A,{text:"Loading..."}),(0,a.jsx)("a",{href:"/login",className:"text-sm text-text-muted hover:text-brand-500 underline underline-offset-4 transition-colors",children:"Reload"})]})})]})}function J(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)(B,{}),children:(0,a.jsx)(W,{})})}},59893:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var a=s(73365);function n({children:e,centered:t=!0,className:s=""}){return(0,a.jsx)("div",{className:`min-h-screen ${t?"flex items-center justify-center p-4":""} ${s}`,children:e})}},66859:(e,t,s)=>{Promise.resolve().then(s.bind(s,9973))},90753:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var a=s(73365),n=s(44976),r=s(8910);let l=({size:e=18})=>(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,a.jsx)("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"})]}),o=({size:e=18})=>(0,a.jsx)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})});function i({className:e="",size:t=18}){let{theme:s,toggleTheme:c}=(0,n.D)(),d="dark"===s;return(0,a.jsx)("button",{type:"button",onClick:()=>{(0,r.e)(),c()},"aria-label":d?"Switch to light theme":"Switch to dark theme",title:d?"Light mode":"Dark mode",className:`p-1.5 rounded-brand transition-colors text-[var(--color-text-muted)] hover:text-[var(--color-text)] hover:bg-[var(--color-surface-2)] ${e}`,children:d?(0,a.jsx)(l,{size:t}):(0,a.jsx)(o,{size:t})})}}},e=>{e.O(0,[1236,8207,1050,3346,8922,2081,5788,2347,5158,7358],()=>e(e.s=66859)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{9973:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>J});var a=s(73365),n=s(1521),r=s(29717),l=s(20464),o=s(4018),i=s(2163),c=s(59893),d=s(64683),x=s(11865),m=s(80186),u=s(45111),p=s(42174),h=s(30240),g=s(8910),b=s(78762),f=s(52345),j=s(18057);function y({className:e="",showLabel:t=!0}){let{locale:s}=(0,b.s)(),[r,l]=(0,n.useState)(!1),o=f.dI.find(e=>e.code===s)||f.dI[0];return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("button",{onClick:()=>{(0,g.e)(),l(!0)},className:`flex items-center gap-1.5 bg-surface-2 hover:bg-surface-3 rounded-brand text-text text-sm px-2 py-1 transition-all duration-150 ease-out active:scale-[0.96] ${e}`,title:o.label,children:[(0,a.jsx)("img",{src:`https://flagcdn.com/w40/${o.country}.png`,alt:o.label,className:"w-[17px] h-[12px] object-cover rounded-[2px]",loading:"lazy"}),t&&(0,a.jsx)("span",{className:"hidden sm:inline",children:o.code.toUpperCase()})]}),(0,a.jsx)(j.A,{isOpen:r,onClose:()=>l(!1)})]})}var v=s(90753),w=s(38415),N=s(23346);let k=null;async function C(){k||(k=N.Ay.ready),await k}async function S(e,t){await C();let s=N.Ay.from_base64(e,N.Ay.base64_variants.ORIGINAL),a=N.Ay.from_string(t),n=N.Ay.crypto_box_seal(a,s);return N.Ay.to_base64(n,N.Ay.base64_variants.ORIGINAL)}function _(e=24){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}let A="9remote_github_token",L="9remote:githubTokenChange";async function z(e,t,s={}){let a=await fetch(`${w.pe}${t}`,{...s,headers:{...{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},...s.headers||{}}});if(!a.ok){let e=await a.text().catch(()=>"");throw Error(`GitHub ${a.status}: ${e||a.statusText}`)}return 204===a.status?null:a.json()}function I(){let[e,t]=(0,n.useState)(()=>localStorage.getItem(A)||""),[s,a]=(0,n.useState)(!1),[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>{let e=()=>{t(localStorage.getItem(A)||"")};return window.addEventListener(L,e),window.addEventListener("storage",e),()=>{window.removeEventListener(L,e),window.removeEventListener("storage",e)}},[!0]);let o=(0,n.useCallback)(e=>{t(e),e?localStorage.setItem(A,e):localStorage.removeItem(A),window.dispatchEvent(new Event(L))},[!0]),i=(0,n.useCallback)(()=>{o("")},[o]),c=(0,n.useCallback)(async(t=e)=>z(t,w.no.user),[e]),d=(0,n.useCallback)(async()=>{a(!0),l(null);try{return(await z(e,w.no.codespaces)).codespaces||[]}catch(e){return l(e.message),[]}finally{a(!1)}},[e]),x=(0,n.useCallback)(async t=>z(e,w.no.codespaceByName(t)),[e]),m=(0,n.useCallback)(async t=>z(e,w.no.startCodespace(t),{method:"POST"}),[e]),u=(0,n.useCallback)(async()=>z(e,w.no.userReposList),[e]),p=(0,n.useCallback)(async(t,s)=>z(e,w.no.createCodespaceForRepo(t,s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),[e]),h=(0,n.useCallback)(async(t,s)=>{let a=await z(e,w.no.codespaceSecretsPublicKey),n=await S(a.key,s);await z(e,w.no.codespaceSecret(w.Gf),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({encrypted_value:n,key_id:a.key_id,selected_repository_ids:[t]})})},[e]),g=(0,n.useCallback)(async(t,s)=>{let a=w.no.repoContents(t,s,w.Hu),n=!1;try{await z(e,a),n=!0}catch{}if(n)return{existed:!0};let r=JSON.stringify(w.cu,null,2);return await z(e,a,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"Add 9remote devcontainer",content:btoa(unescape(encodeURIComponent(r)))})}),{existed:!1}},[e]),b=(0,n.useCallback)(async(e,t)=>{for(let s=0;s<w.ij;s++){let s=await x(e);if(t?.(s.state),s.state===w.Gi.available)return s;await new Promise(e=>setTimeout(e,w.Nn))}throw Error("Codespace start timeout")},[x]);return{token:e,setToken:o,clearToken:i,loading:s,error:r,getUser:c,listCodespaces:d,getCodespace:x,startCodespace:m,waitUntilAvailable:b,listRepos:u,createCodespace:p,ensureDevcontainer:g,setApiKeySecret:h,generateApiKey:_}}function K({isOpen:e,onClose:t,onCreated:s}){let{listRepos:r,createCodespace:l,ensureDevcontainer:o,setApiKeySecret:i,generateApiKey:c,error:x}=I(),[p,h]=(0,n.useState)([]),[g,b]=(0,n.useState)(!1),[f,j]=(0,n.useState)(null),[y,v]=(0,n.useState)(""),[w,N]=(0,n.useState)(null),[k,C]=(0,n.useState)("");(0,n.useEffect)(()=>{e&&(N(null),b(!0),r().then(e=>h(Array.isArray(e)?e:[])).catch(e=>N(e.message)).finally(()=>b(!1)))},[e,r]),(0,n.useEffect)(()=>{if(!e||f)return;let s=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t?.())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[e,f,t]);let S=(0,n.useMemo)(()=>{let e=y.trim().toLowerCase();return e?p.filter(t=>t.full_name.toLowerCase().includes(e)):p},[p,y]),_=async e=>{j(e.full_name),N(null),C("Generating API key...");try{let t=c();C("Setting codespace secret..."),await i(e.id,t),C("Setting up devcontainer..."),await o(e.owner.login,e.name),C("Creating codespace...");let a=await l(e.owner.login,e.name);s({codespace:a,apiKey:t})}catch(e){N(e.message)}finally{j(null),C("")}};return e?(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-[2px] p-4",onClick:t,children:(0,a.jsxs)("div",{className:"card-elev p-6 max-w-md w-full max-h-[80dvh] flex flex-col border border-border",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsx)("h3",{className:"text-lg font-bold text-text",children:"Select repository"}),(0,a.jsx)("button",{onClick:t,className:"p-1 text-text-muted hover:text-text",children:(0,a.jsx)(d.X,{size:20})})]}),(0,a.jsxs)("div",{className:"relative mb-3",children:[(0,a.jsx)(d.vj,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-text-muted"}),(0,a.jsx)("input",{type:"text",value:y,onChange:e=>v(e.target.value),placeholder:"Search repos...",className:"w-full pl-9 pr-3 py-2 bg-surface-2 rounded-brand text-text placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-brand-500/40 text-sm"})]}),(w||x)&&(0,a.jsxs)("div",{className:"flex items-start gap-2 mb-3 p-2 bg-danger/10 rounded-brand text-xs text-danger",children:[(0,a.jsx)(d.RI,{size:14,className:"flex-shrink-0 mt-0.5"}),(0,a.jsx)("span",{className:"break-words",children:w||x})]}),(0,a.jsx)("div",{className:"flex-1 overflow-auto space-y-1",children:g?(0,a.jsx)(u.A,{text:"Loading repos..."}):0===S.length?(0,a.jsx)("div",{className:"text-center py-6 text-text-muted text-sm",children:"No repos"}):S.map(e=>{let t=f===e.full_name;return(0,a.jsxs)("div",{className:"p-2 bg-surface-2 hover:bg-surface-3 rounded-brand transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-sm text-text font-medium truncate",title:e.full_name,children:e.full_name}),e.private&&(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"private"})]}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>_(e),disabled:!!f,loading:t,className:"!py-1 !px-2 text-xs",children:[(0,a.jsx)(d.FW,{size:12}),"Create"]})]}),t&&k&&(0,a.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:k})]},e.id)})})]})}):null}let E="9remote_codespace_keys";function R(){try{return JSON.parse(localStorage.getItem(E)||"{}")}catch{return{}}}function M({onConnect:e,onLogout:t}){let{listCodespaces:s,startCodespace:r,waitUntilAvailable:l,loading:o,error:i,getUser:c}=I(),[x,p]=(0,n.useState)([]),[h,g]=(0,n.useState)(null),[b,f]=(0,n.useState)(null),[j,y]=(0,n.useState)(""),[v,N]=(0,n.useState)(!1),k=(0,n.useCallback)(async()=>{try{let e=await c();g(e)}catch{}p(await s())},[c,s]);(0,n.useEffect)(()=>{k()},[k]);let C=async t=>{var s;let a=(s=t.name,R()[s]||null);if(!a){y("No saved key for this codespace. Recreate it from web to enable auto-connect."),f(t.name),setTimeout(()=>{f(null),y("")},4e3);return}f(t.name),y("");try{let s=t;t.state!==w.Gi.available&&(y("Starting codespace..."),await r(t.name),s=await l(t.name,e=>{y(`State: ${e}`)})),e(s,a)}catch(e){y(`Error: ${e.message}`)}finally{f(null)}};return(0,a.jsxs)("div",{className:"card-elev p-8 max-w-md w-full border border-border",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,a.jsx)("div",{className:"p-2 bg-brand-500/10 rounded-brand",children:(0,a.jsx)(d.Cp,{className:"text-brand-500",size:24})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-text",children:"Codespaces"}),h&&(0,a.jsxs)("p",{className:"text-sm text-text-muted truncate",children:["@",h.login]})]}),(0,a.jsx)("button",{onClick:()=>N(!0),className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"New codespace",children:(0,a.jsx)(d.FW,{size:18})}),(0,a.jsx)("button",{onClick:k,disabled:o,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"Refresh",children:(0,a.jsx)(d.e9,{size:18,className:o?"animate-spin":""})}),(0,a.jsx)("button",{onClick:t,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"Logout",children:(0,a.jsx)(d.nU,{size:18})})]}),i&&(0,a.jsxs)("div",{className:"flex items-start gap-2 mb-4 p-3 bg-danger/10 rounded-brand text-sm text-danger",children:[(0,a.jsx)(d.RI,{size:16,className:"flex-shrink-0 mt-0.5"}),(0,a.jsx)("span",{className:"break-words",children:i})]}),o&&0===x.length?(0,a.jsx)(u.A,{text:"Loading codespaces..."}):0===x.length?(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-text-muted text-sm mb-4",children:"No codespaces yet."}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>N(!0),children:[(0,a.jsx)(d.FW,{size:16}),"Create new codespace"]})]}):(0,a.jsx)("div",{className:"space-y-2",children:x.map(e=>{let t=b===e.name,s=e.state===w.Gi.available;return(0,a.jsxs)("div",{className:"bg-surface-2 rounded-brand p-3 hover:bg-surface-3 transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-text font-medium truncate",title:e.display_name||e.name,children:e.display_name||e.name}),(0,a.jsxs)("div",{className:"text-xs text-text-muted truncate",title:`${e.repository?.full_name} \xb7 ${e.state}`,children:[e.repository?.full_name," \xb7 ",e.state]})]}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>C(e),disabled:t,loading:t,className:"!py-1.5 !px-3 text-sm",children:[(0,a.jsx)(d.jG,{size:14}),s?"Connect":"Start"]})]}),t&&j&&(0,a.jsx)("div",{className:"mt-2 text-xs text-text-muted",children:j})]},e.name)})}),(0,a.jsx)(K,{isOpen:v,onClose:()=>N(!1),onCreated:({codespace:e,apiKey:t})=>{var s;let a;s=e.name,(a=R())[s]=t,localStorage.setItem(E,JSON.stringify(a)),N(!1),k()}})]})}var T=s(97711),O=s(90084),P=s(86129),U=s(11155),F=s(2805),$=s(75687),D=s(73426),G=s(90076);function W(){let{t:e}=(0,b.s)(),[t,s]=(0,n.useState)(""),[g,f]=(0,n.useState)(!0),[j,N]=(0,n.useState)([]),[k,C]=(0,n.useState)(!1),[S,_]=(0,n.useState)(!1),[A,L]=(0,n.useState)("local"),[z,K]=(0,n.useState)(null),[E,R]=(0,n.useState)(""),[W,B]=(0,n.useState)(null),[J,H]=(0,n.useState)(null),[Q,V]=(0,n.useState)(null),X="3.0.39",{token:q,clearToken:Y}=I(),{getAuth:Z,setAuth:ee}=(0,T.Fo)(),et=(0,r.useSearchParams)(),es=(0,r.useRouter)(),{loading:ea,error:en,setError:er,authenticateWithToken:el,authenticateWithApiKey:eo}=(0,l.As)(),[ei,ec]=(0,n.useState)(!1),{loadKeys:ed,saveKey:ex,removeKey:em,renameKey:eu,hasStoredKeys:ep,updateLastLogin:eh}=(0,o.u)(),eg=(0,n.useMemo)(()=>j.some(e=>(0,U.PF)(e.key)),[j]),eb=(0,n.useMemo)(()=>et.get("t"),[et]),[ef]=(0,n.useState)(()=>{try{let e=sessionStorage.getItem("9remote_url_pairing");if(e)return e;let t=(0,$.k)(window.location.hash)||(0,$.k)(window.location.search);if(t?.tempKey)return sessionStorage.setItem("9remote_url_pairing",t.tempKey+(t.tail||"")),t.tempKey+(t.tail||"")}catch{}return null}),ej=!!eb||!!ef,ey=(0,n.useRef)(!1);(0,n.useEffect)(()=>{ey.current||eb||ef||sessionStorage.getItem(P.Jd)||(0,F._r)()&&window.location.port===String(G._8)||"1"===sessionStorage.getItem("9remote_manual_disconnect")||Z()?.apiKey&&(ey.current=!0,es.replace("/workspace/"))},[eb,ef,Z,es]),(0,n.useEffect)(()=>{if(window.location.hash||window.location.search){let e=(0,$.k)(window.location.hash)||(0,$.k)(window.location.search);e?.tempKey&&window.history.replaceState(null,"",window.location.pathname)}f("false"!==localStorage.getItem("9remote_remember_key_preference")),N(ed()),C(!0),sessionStorage.getItem(P.Jd)&&(sessionStorage.removeItem(P.Jd),ec(!0)),q&&L("github"),(0,F._r)()&&window.location.port===String(G._8)&&fetch("/api/ui/state").then(e=>e.ok?e.json():null).then(e=>{if(e?.permanentKey){V(e.permanentKey);let t="remote"===et.get("mode");if(t)try{sessionStorage.setItem("9remote_manual_disconnect","1")}catch{}if(!(t||"1"===sessionStorage.getItem("9remote_manual_disconnect"))){let t=e.permanentKey,s=(0,U.Uo)(t),a=(0,U.Cj)(t);(0,O.LG)(s,{tail:a}),ee({apiKey:s,tunnelUrl:window.location.origin,mode:"local",tempKey:null,localIp:null}),es.push("/workspace/")}}}).catch(()=>{})},[ed,q,es,ee,et]);let ev=(0,n.useCallback)(async e=>{let t=(0,$.k)(e);(0,D.U)("false"!==localStorage.getItem("9remote_remember_key_preference"));let s=await el(t?.tempKey||e,!0,t?.tail);try{sessionStorage.removeItem("9remote_url_pairing")}catch{}s.success&&(0,D.zm)(t,{remember:"false"!==localStorage.getItem("9remote_remember_key_preference")})},[el]),ew=(0,n.useRef)(!1);(0,n.useEffect)(()=>{(eb||ef)&&(ew.current||(ew.current=!0,eb?el(eb):ev(ef)))},[eb,ef,el,ev]);let eN=async()=>{let s=t.trim();if(!s)return;if((0,U.PF)(s))return void er(e("login.legacyKeyError"));let a=(0,$.k)(s),n=!!a?.tempKey,r=n?a.tempKey:(0,U.Uo)(s),l=n?a.tail:(0,U.Cj)(s);if(n&&(0,D.U)(g),(n?await el(a.tempKey,!0,a.tail):await eo(s)).success){if(n)return void(0,D.zm)(a,{remember:g});l&&(0,O.LG)(r,{tail:l}),g&&sessionStorage.setItem(P.El,s),es.push("/workspace/")}},ek=async t=>{let s;if(!t)return;if((0,U.PF)(t))return void er(e("login.legacyKeyError"));let a=(0,U.Cj)(t);a&&(0,O.LG)((0,U.Uo)(t),{tail:a});let n=a?t:(0,O.$4)(t);H(t);try{s=await eo(n)}finally{H(null)}s?.success&&(n!==t&&ex(n),eh(t),es.push("/workspace/"))},eC=e=>{eu(e,E.trim()),N(ed()),K(null)},eS=()=>{K(null)},e_=async e=>{let t=(0,$.k)(e);return!!t?.tempKey&&((0,D.U)("false"!==localStorage.getItem("9remote_remember_key_preference")),!!(await el(t.tempKey,!0,t.tail)).success&&((0,D.zm)(t,{remember:"false"!==localStorage.getItem("9remote_remember_key_preference")}),!0))};return ej&&ea?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsx)("div",{className:"card-elev p-8 max-w-md w-full border border-border",children:(0,a.jsx)(u.A,{size:"lg",text:e("login.authenticating")})})})]}):"github"===A&&q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsx)(M,{onConnect:(e,t)=>{let s=(0,w.xO)(e.name);ee({apiKey:(0,U.Uo)(t),tunnelUrl:s,mode:"remote"}),es.push("/workspace/")},onLogout:()=>{Y()}})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),k&&(0,F._r)()&&(0,a.jsxs)("a",{href:"/",className:"fixed top-4 left-4 z-50 inline-flex items-center gap-2 px-3 py-1.5 text-xs font-medium text-text hover:text-white bg-surface-2/90 hover:bg-surface-3 border border-border-subtle rounded-brand-lg backdrop-blur-md transition-all shadow-sm active:scale-[0.97]",title:"Back to Host QR",children:[(0,a.jsx)(d.Ay,{name:"ChevronLeft",size:15,className:"opacity-70"}),(0,a.jsx)(d.Ay,{name:"QrCode",size:15,className:"text-brand-500"}),(0,a.jsx)("span",{children:"Host QR"})]}),(0,a.jsxs)("div",{className:"min-h-screen grid lg:grid-cols-2",children:[(0,a.jsxs)("section",{className:"hidden lg:flex flex-col justify-between px-12 xl:px-20 py-12 relative overflow-hidden",children:[(0,a.jsx)("div",{className:"login-hero-glow","aria-hidden":!0}),(0,a.jsxs)("div",{className:"my-auto max-w-xl relative z-10",children:[(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-surface-2/60 border border-border-subtle font-mono text-[11px] text-text-muted mb-7",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-brand-500 animate-pulse-glow"}),e("login.termConnected")," \xb7 ",e("login.termTunnel")]}),(0,a.jsxs)("h1",{className:"text-6xl xl:text-7xl font-extrabold tracking-tight leading-[0.98] mb-6 text-text",children:[e("login.heroLine1"),(0,a.jsx)("br",{}),e("login.heroLine2"),(0,a.jsx)("br",{}),(0,a.jsx)("span",{className:"login-hero-grad",children:e("login.heroLine3")})]}),(0,a.jsx)("p",{className:"text-text-muted text-base lg:text-lg leading-relaxed max-w-md mb-8",children:e("login.tagline")}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 mb-9",children:["Terminal","Desktop","Files","WebRTC low-latency","iOS \xb7 Android \xb7 Web"].map(e=>(0,a.jsx)("span",{className:"font-mono text-xs text-text-muted px-3 py-1.5 rounded-full border border-border-subtle",children:e},e))}),(0,a.jsxs)("div",{className:"rounded-xl border border-border-subtle bg-surface-2/60 overflow-hidden max-w-md shadow-lg",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 border-b border-border-subtle",children:[(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#ff5f57]"}),(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#febc2e]"}),(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#28c840]"}),(0,a.jsx)("span",{className:"ml-2 font-mono text-[10px] text-text-subtle",children:"dev@mac — zsh"})]}),(0,a.jsxs)("div",{className:"p-3.5 font-mono text-[12px] leading-relaxed",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-subtle",children:"➜"})," 9remote start"]}),(0,a.jsx)("div",{className:"text-text-subtle",children:"↳ tunnel up \xb7 pairing open"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-brand-500",children:"[ok]"})," ",(0,a.jsx)("span",{className:"text-text",children:"machine"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"macbook-pro-m3"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-brand-500",children:"[ok]"})," ",(0,a.jsx)("span",{className:"text-text",children:"pty"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"daemon v3.1 \xb7 12 warm"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[#6aab6a]",children:"●"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"waiting for phone…"})," ",(0,a.jsx)("span",{className:"inline-block w-[7px] h-[13px] bg-brand-500 align-middle animate-cursor-blink"})]})]})]})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-x-5 gap-y-1 font-mono text-[11px] text-text-subtle pt-8 relative z-10",children:[(0,a.jsx)("span",{children:"› PTY persistent"}),(0,a.jsx)("span",{children:"› end-to-end encrypted"}),(0,a.jsx)("span",{children:"› open source"})]})]}),(0,a.jsxs)("section",{className:"flex items-center justify-center p-6 sm:p-10 lg:border-l lg:border-border-subtle lg:bg-surface-1 relative",children:[(0,a.jsx)("div",{className:"login-mobile-glow lg:hidden","aria-hidden":!0}),(0,a.jsxs)("div",{className:"relative z-10 w-full max-w-sm space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,a.jsx)("img",{src:"/icon-192.png",alt:"9Remote Logo",className:"w-10 h-10 rounded-[11px] object-contain shadow-lg shadow-brand-500/20"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h1",{className:"text-[22px] font-bold tracking-tight text-text leading-none",children:"9Remote"}),X&&(0,a.jsxs)("p",{className:"font-mono text-[11px] text-text-subtle mt-1",children:["v",X]})]}),(0,a.jsx)(y,{}),(0,a.jsx)(v.A,{})]}),(0,a.jsx)("p",{className:"text-text-muted text-lg font-medium leading-snug pr-4 mb-6 lg:hidden",children:e("login.tagline")}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-2.5",children:[(0,a.jsx)(d.Ay,{name:"KeyRound",className:"text-text-muted opacity-70",size:14}),(0,a.jsx)("span",{className:"text-[13px] font-semibold text-text",children:e("login.accessKey")})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{id:"accessKeyInput",type:"text",value:t,onChange:e=>{let t=e.target.value;s(t.length<=P.qM?t.toUpperCase():t.toLowerCase())},onKeyDown:e=>"Enter"===e.key&&t&&eN(),placeholder:e("login.placeholder"),className:"w-full pl-3.5 pr-20 py-3 bg-surface-2 border border-border-subtle rounded-[10px] font-mono text-sm text-text placeholder-text-subtle focus:outline-none focus:border-brand-500 focus:ring-2 focus:ring-brand-500/20 transition-all duration-150"}),(0,a.jsxs)("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 flex items-center gap-1",children:[t&&(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("button",{onMouseDown:e=>e.preventDefault(),onClick:()=>{s("")},className:"w-7 h-7 grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-text transition-colors",type:"button",children:(0,a.jsx)(d.X,{size:16})})}),(0,a.jsx)("button",{onMouseDown:e=>e.preventDefault(),onClick:()=>_(!0),className:"w-7 h-7 grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-brand-500 transition-colors",type:"button","aria-label":e("login.scanQr"),children:(0,a.jsx)(d.Ay,{name:"QrCode",size:16})})]})]}),(en||ei)&&(0,a.jsx)("p",{className:"mt-2 text-xs font-mono text-danger",children:"agent-offline"===en?e("login.agentOffline"):en&&"wrong-key-tail"!==en?en:e("login.invalidKeyTail")}),(0,a.jsxs)("label",{className:"flex items-center gap-2.5 cursor-pointer mt-4 select-none",children:[(0,a.jsx)("input",{type:"checkbox",checked:g,onChange:e=>{var t;return f(t=e.target.checked),void(localStorage.setItem("9remote_remember_key_preference",t),!t&&(0,T.U0)())},className:"w-[15px] h-[15px] accent-brand-500"}),(0,a.jsx)("span",{className:"text-[13px] text-text-muted",children:e("login.rememberKey")})]}),(0,a.jsx)(m.A,{variant:"primary",onClick:eN,loading:ea,className:"btn-cta w-full mt-4",children:(0,a.jsxs)("span",{className:"inline-flex items-center justify-center gap-2",children:[e("login.connect"),(0,a.jsx)(d.Ay,{name:"ArrowRight",size:16})]})}),k&&j.length>0&&(0,a.jsxs)("div",{className:"mt-5 pt-5 border-t border-border-subtle",children:[(0,a.jsx)("div",{className:"font-mono text-[11px] uppercase tracking-wider text-text-subtle mb-1 px-1",children:e("login.savedKeys")}),eg&&(0,a.jsxs)("div",{className:"my-2.5 px-3 py-2.5 bg-amber-500/10 border border-amber-500/30 rounded-brand-lg flex items-start gap-2.5",children:[(0,a.jsx)(d.Ay,{name:"AlertCircle",size:16,className:"text-amber-500 shrink-0 mt-0.5"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-text",children:e("login.legacyKeyUpdateRequired")}),(0,a.jsx)("div",{className:"text-xs text-text-muted mt-0.5",children:e("login.legacyKeyUpdateHint")}),(0,a.jsx)("code",{className:"inline-block mt-1.5 px-2 py-0.5 bg-surface-2 border border-border text-text text-xs rounded font-mono select-all",children:"npm i -g 9remote@latest"})]})]}),j.map(t=>{let s=z===t.id,n=J===t.key,r=(0,U.PF)(t.key);return(0,a.jsxs)("div",{className:`flex items-center gap-3 px-1 py-2 rounded-[10px] hover:bg-surface-2 transition-colors cursor-pointer ${r?"opacity-85":""}`,onClick:()=>!s&&!n&&ek(t.key),role:"button",tabIndex:0,children:[(0,a.jsx)("div",{className:`w-12 h-12 rounded-[12px] bg-surface-2 border ${r?"border-amber-500/40 text-amber-500":"border-border-subtle text-text-muted"} grid place-items-center flex-shrink-0`,children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",className:"w-[26px] h-[26px]",children:[(0,a.jsx)("rect",{x:"2",y:"4",width:"20",height:"13",rx:"2"}),(0,a.jsx)("line",{x1:"2",y1:"20",x2:"22",y2:"20"})]})}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:s?(0,a.jsxs)("div",{className:"flex items-center gap-1",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("input",{autoFocus:!0,value:E,onChange:e=>R(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eC(t.id),"Escape"===e.key&&eS()},placeholder:e("login.namePlaceholder"),className:"flex-1 min-w-0 bg-surface-2 border border-brand-500 rounded-md text-text text-[13px] px-2 py-1 outline-none"}),(0,a.jsx)("button",{onClick:()=>eC(t.id),className:"w-6 h-6 grid place-items-center rounded-md bg-brand-500 text-white","aria-label":e("common.done"),children:(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3 h-3",children:(0,a.jsx)("polyline",{points:"20 6 9 17 4 12"})})}),(0,a.jsx)("button",{onClick:eS,className:"w-6 h-6 grid place-items-center rounded-md bg-surface-2 text-text-muted","aria-label":e("common.cancel"),children:(0,a.jsx)(d.X,{size:13})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[13px] font-medium text-text truncate",title:t.label||e("agentSwitcher.unnamed"),children:t.label||e("agentSwitcher.unnamed")}),r&&(0,a.jsx)("span",{className:"shrink-0 px-1.5 py-0.5 text-[9px] font-semibold font-mono uppercase rounded bg-amber-500/15 text-amber-500 border border-amber-500/30",children:e("login.updateRequired")})]}),(0,a.jsx)("div",{className:"font-mono text-[11px] text-text-subtle mt-0.5 truncate",children:(0,i.o)(t.key)})]})}),!s&&(0,a.jsx)("span",{className:"font-mono text-[11px] text-text-subtle whitespace-nowrap",children:n?e("agentSwitcher.connecting"):(t=>{if(!t)return"";try{let s=new Date(t),a=new Date-s,n=Math.floor(a/6e4),r=Math.floor(a/36e5),l=Math.floor(a/864e5);if(n<1)return e("login.justNow");if(n<60)return e("login.minutesAgo",{n:n});if(r<24)return e("login.hoursAgo",{n:r});if(l<7)return e("login.daysAgo",{n:l});return s.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}catch{return""}})(t.lastLoginDate)}),!s&&(0,a.jsxs)("div",{className:"flex gap-0.5",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("button",{onClick:()=>{K(t.id),R(t.label||"")},title:e("common.edit"),className:"w-[26px] h-[26px] grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-text transition-colors",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:[(0,a.jsx)("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),(0,a.jsx)("path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z"})]})}),(0,a.jsx)("button",{onClick:()=>B(t),title:e("common.delete"),className:"w-[26px] h-[26px] grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-danger transition-colors",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:[(0,a.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,a.jsx)("path",{d:"M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})]},t.id)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 pt-1 text-text-subtle",children:[(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:(0,a.jsx)("path",{d:"M12 2l9 4v6c0 5-3.8 9.7-9 11-5.2-1.3-9-6-9-11V6l9-4z"})}),(0,a.jsx)("span",{className:"font-mono text-[11px]",children:e("login.secureTitle")})]})]})]})]}),(0,a.jsx)(x.A,{isOpen:S,onClose:()=>_(!1),onScan:e_}),(0,a.jsx)(p.A,{isOpen:!!W,onClose:()=>B(null),onConfirm:()=>{W&&(em(W.id),N(ed()))},title:e("login.deleteKeyTitle"),message:e("login.deleteKeyConfirm",{name:W?.label}),confirmText:e("common.delete")})]})}function B(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,a.jsx)(u.A,{text:"Loading..."}),(0,a.jsx)("a",{href:"/login",className:"text-sm text-text-muted hover:text-brand-500 underline underline-offset-4 transition-colors",children:"Reload"})]})})]})}function J(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)(B,{}),children:(0,a.jsx)(W,{})})}},59893:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var a=s(73365);function n({children:e,centered:t=!0,className:s=""}){return(0,a.jsx)("div",{className:`min-h-screen ${t?"flex items-center justify-center p-4":""} ${s}`,children:e})}},66859:(e,t,s)=>{Promise.resolve().then(s.bind(s,9973))},90753:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var a=s(73365),n=s(44976),r=s(8910);let l=({size:e=18})=>(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,a.jsx)("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"})]}),o=({size:e=18})=>(0,a.jsx)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})});function i({className:e="",size:t=18}){let{theme:s,toggleTheme:c}=(0,n.D)(),d="dark"===s;return(0,a.jsx)("button",{type:"button",onClick:()=>{(0,r.e)(),c()},"aria-label":d?"Switch to light theme":"Switch to dark theme",title:d?"Light mode":"Dark mode",className:`p-1.5 rounded-brand transition-colors text-[var(--color-text-muted)] hover:text-[var(--color-text)] hover:bg-[var(--color-surface-2)] ${e}`,children:d?(0,a.jsx)(l,{size:t}):(0,a.jsx)(o,{size:t})})}}},e=>{e.O(0,[1236,8207,1050,3346,8922,8762,5788,2347,5158,7358],()=>e(e.s=66859)),_N_E=e.O()}]);
|