8 lines
48 KiB
JavaScript
8 lines
48 KiB
JavaScript
import{d as pe,z as ue,y as he,a0 as me,c,a as e,J as h,D as s,m as ge,a1 as fe,f as w,E as a,G as p,F as C,P as ee,h as te,i as se,T as ne,x as ve,j as g,Q as oe,b as be,r as R,u as we,q as l,t as xe}from"./index-DnbYEqLr.js";import{S as d,P as r}from"./api-CHkUAu4g.js";const j={bitcoin:{state:r.Running,"static-files":{license:"MIT",instructions:"Bitcoin Core node for the Neode network",icon:"/assets/img/app-icons/bitcoin.svg"},manifest:{id:"bitcoin",title:"Bitcoin Core",version:"24.0.0",description:{short:"Full Bitcoin node implementation",long:"Bitcoin Core is the reference implementation of Bitcoin. It provides a full node implementation that validates and relays transactions, maintains the blockchain, and serves as a wallet."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/bitcoin/bitcoin","upstream-repo":"https://github.com/bitcoin/bitcoin","support-site":"https://github.com/bitcoin/bitcoin/issues","marketing-site":"https://bitcoin.org","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"bitcoin.onion","lan-address":"http://localhost:18443"}},status:d.Running}},"btcpay-server":{state:r.Running,"static-files":{license:"MIT",instructions:"BTCPay Server payment processor",icon:"/assets/img/app-icons/btcpay-server.png"},manifest:{id:"btcpay-server",title:"BTCPay Server",version:"1.12.0",description:{short:"Self-hosted Bitcoin payment processor",long:"BTCPay Server is a free, open-source cryptocurrency payment processor. Accept Bitcoin payments without intermediaries or fees. Complete merchant solution with invoicing, point of sale, and more."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/btcpayserver/btcpayserver","upstream-repo":"https://github.com/btcpayserver/btcpayserver","support-site":"https://github.com/btcpayserver/btcpayserver/issues","marketing-site":"https://btcpayserver.org","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"btcpay.onion","lan-address":"http://localhost:14142"}},status:d.Running}},homeassistant:{state:r.Running,"static-files":{license:"Apache-2.0",instructions:"Home automation platform",icon:"/assets/img/app-icons/homeassistant.png"},manifest:{id:"homeassistant",title:"Home Assistant",version:"2024.1.0",description:{short:"Open source home automation platform",long:"Home Assistant is an open-source home automation platform running on Python. It tracks and controls all devices at home and offers a platform for automating control."},"release-notes":"Initial release",license:"Apache-2.0","wrapper-repo":"https://github.com/home-assistant/core","upstream-repo":"https://github.com/home-assistant/core","support-site":"https://github.com/home-assistant/core/issues","marketing-site":"https://www.home-assistant.io","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"homeassistant.onion","lan-address":"http://localhost:8123"}},status:d.Running}},lorabell:{state:r.Running,"static-files":{license:"MIT",instructions:"A LoRa based doorbell",icon:"/assets/img/app-icons/lorabell.png"},manifest:{id:"lorabell",title:"LoraBell",version:"1.0.0",description:{short:"A LoRa based doorbell",long:"A LoRa based doorbell - receive doorbell notifications over LoRa radio."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"#","upstream-repo":"#","support-site":"#","marketing-site":"#","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"lorabell.onion","lan-address":"http://192.168.1.166"}},status:d.Running}},grafana:{state:r.Running,"static-files":{license:"Apache-2.0",instructions:"Analytics and monitoring platform",icon:"/assets/img/grafana.png"},manifest:{id:"grafana",title:"Grafana",version:"10.2.0",description:{short:"Analytics and monitoring platform",long:"Grafana is an open-source analytics and monitoring platform. Create dashboards, query metrics, and visualize data from multiple sources."},"release-notes":"Initial release",license:"Apache-2.0","wrapper-repo":"https://github.com/grafana/grafana","upstream-repo":"https://github.com/grafana/grafana","support-site":"https://github.com/grafana/grafana/issues","marketing-site":"https://grafana.com","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"grafana.onion","lan-address":"http://localhost:3000"}},status:d.Running}},endurain:{state:r.Stopped,"static-files":{license:"MIT",instructions:"Endurain application",icon:"/assets/img/endurain.png"},manifest:{id:"endurain",title:"Endurain",version:"1.0.0",description:{short:"Endurain application platform",long:"Endurain provides a platform for decentralized applications and services."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/endurain/endurain","upstream-repo":"https://github.com/endurain/endurain","support-site":"https://github.com/endurain/endurain/issues","marketing-site":"https://endurain.io","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"endurain.onion","lan-address":"http://localhost:8084"}},status:d.Stopped}},fedimint:{state:r.Running,"static-files":{license:"MIT",instructions:"Federated Bitcoin mint",icon:"/assets/img/app-icons/fedimint.png"},manifest:{id:"fedimint",title:"Fedimint",version:"0.3.0",description:{short:"Federated Bitcoin minting service",long:"Fedimint is a federated Bitcoin mint that enables private, scalable Bitcoin transactions through a federation of guardians."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/fedimint/fedimint","upstream-repo":"https://github.com/fedimint/fedimint","support-site":"https://github.com/fedimint/fedimint/issues","marketing-site":"https://fedimint.org","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"fedimint.onion","lan-address":"http://localhost:8175"}},status:d.Running}},"morphos-server":{state:r.Running,"static-files":{license:"MIT",instructions:"MorphOS server application",icon:"/assets/img/morphos.png"},manifest:{id:"morphos-server",title:"MorphOS Server",version:"1.0.0",description:{short:"MorphOS server platform",long:"MorphOS Server provides a flexible server platform for various applications and services."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/morphos/morphos","upstream-repo":"https://github.com/morphos/morphos","support-site":"https://github.com/morphos/morphos/issues","marketing-site":"https://morphos.io","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"morphos.onion","lan-address":"http://localhost:8081"}},status:d.Running}},"lightning-stack":{state:r.Running,"static-files":{license:"MIT",instructions:"Lightning Network stack",icon:"/assets/img/app-icons/lightning-stack.png"},manifest:{id:"lightning-stack",title:"Lightning Stack",version:"0.12.0",description:{short:"Complete Lightning Network implementation",long:"Lightning Stack provides a complete Lightning Network node implementation with LND, CLN, and supporting services for fast Bitcoin transactions."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/lightningnetwork/lnd","upstream-repo":"https://github.com/lightningnetwork/lnd","support-site":"https://github.com/lightningnetwork/lnd/issues","marketing-site":"https://lightning.network","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"lightning.onion","lan-address":"http://localhost:8080"}},status:d.Running}},mempool:{state:r.Running,"static-files":{license:"AGPL-3.0",instructions:"Bitcoin mempool explorer",icon:"/assets/img/app-icons/mempool.png"},manifest:{id:"mempool",title:"Mempool",version:"2.5.0",description:{short:"Bitcoin mempool and blockchain explorer",long:"Mempool is an open-source Bitcoin mempool and blockchain explorer. View transactions, blocks, and network statistics in real-time."},"release-notes":"Initial release",license:"AGPL-3.0","wrapper-repo":"https://github.com/mempool/mempool","upstream-repo":"https://github.com/mempool/mempool","support-site":"https://github.com/mempool/mempool/issues","marketing-site":"https://mempool.space","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"mempool.onion","lan-address":"http://localhost:4080"}},status:d.Running}},ollama:{state:r.Running,"static-files":{license:"MIT",instructions:"Local AI model runner",icon:"/assets/img/app-icons/ollama.png"},manifest:{id:"ollama",title:"Ollama",version:"0.1.0",description:{short:"Run large language models locally",long:"Ollama allows you to run large language models locally on your Neode server. Download and run models like Llama, Mistral, and more without cloud dependencies."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"https://github.com/ollama/ollama","upstream-repo":"https://github.com/ollama/ollama","support-site":"https://github.com/ollama/ollama/issues","marketing-site":"https://ollama.ai","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"ollama.onion","lan-address":"http://localhost:11434"}},status:d.Running}},searxng:{state:r.Running,"static-files":{license:"AGPL-3.0",instructions:"Privacy-respecting search engine",icon:"/assets/img/app-icons/searxng.png"},manifest:{id:"searxng",title:"SearXNG",version:"2024.1.0",description:{short:"Privacy-respecting metasearch engine",long:"SearXNG is a privacy-respecting, hackable metasearch engine. Aggregate results from multiple search engines without tracking or ads."},"release-notes":"Initial release",license:"AGPL-3.0","wrapper-repo":"https://github.com/searxng/searxng","upstream-repo":"https://github.com/searxng/searxng","support-site":"https://github.com/searxng/searxng/issues","marketing-site":"https://searxng.org","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"searxng.onion","lan-address":"http://localhost:8082"}},status:d.Running}},onlyoffice:{state:r.Running,"static-files":{license:"AGPL-3.0",instructions:"Office suite and document collaboration",icon:"/assets/img/onlyoffice.webp"},manifest:{id:"onlyoffice",title:"OnlyOffice",version:"7.5.0",description:{short:"Office suite and document collaboration",long:"OnlyOffice is a secure office suite that enables real-time collaborative editing of documents, spreadsheets, and presentations. Self-hosted alternative to Google Workspace and Microsoft 365."},"release-notes":"Initial release",license:"AGPL-3.0","wrapper-repo":"https://github.com/ONLYOFFICE/DocumentServer","upstream-repo":"https://github.com/ONLYOFFICE/DocumentServer","support-site":"https://github.com/ONLYOFFICE/DocumentServer/issues","marketing-site":"https://www.onlyoffice.com","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"onlyoffice.onion","lan-address":"http://localhost:8083"}},status:d.Running}},penpot:{state:r.Running,"static-files":{license:"MPL-2.0",instructions:"Design and prototyping platform",icon:"/assets/img/penpot.webp"},manifest:{id:"penpot",title:"Penpot",version:"2.0.0",description:{short:"Open-source design and prototyping platform",long:"Penpot is an open-source design and prototyping platform for teams. Create designs, prototypes, and collaborate in real-time. Self-hosted alternative to Figma."},"release-notes":"Initial release",license:"MPL-2.0","wrapper-repo":"https://github.com/penpot/penpot","upstream-repo":"https://github.com/penpot/penpot","support-site":"https://github.com/penpot/penpot/issues","marketing-site":"https://penpot.app","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"penpot.onion","lan-address":"http://localhost:9001"}},status:d.Running}},indeedhub:{state:r.Running,"static-files":{license:"MIT",instructions:"Decentralized media streaming platform",icon:"/assets/img/app-icons/indeedhub.png"},manifest:{id:"indeedhub",title:"Indeehub",version:"0.1.0",description:{short:"Decentralized media streaming platform",long:"Indeehub is a decentralized media streaming platform built on Nostr. Stream Bitcoin-focused documentaries, educational content, and independent films. Netflix-inspired interface with glassmorphism design, supporting content creators through the decentralized web."},"release-notes":"Initial release with Netflix-inspired interface",license:"MIT","wrapper-repo":"https://github.com/indeedhub/indeedhub","upstream-repo":"https://github.com/indeedhub/indeedhub","support-site":"https://github.com/indeedhub/indeedhub/issues","marketing-site":"https://indeedhub.com","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"http://localhost:8190"}},status:d.Running}},botfights:{state:r.Running,"static-files":{license:"MIT",instructions:"AI bot arena",icon:"/assets/img/app-icons/botfights.svg"},manifest:{id:"botfights",title:"BotFights",version:"1.0.0",description:{short:"AI bot arena — build, train, and battle autonomous agents",long:"BotFights is an AI bot arena where you can build, train, and battle autonomous agents. Create intelligent bots using various strategies, pit them against other players' creations, and climb the leaderboard. Features real-time battle visualization, multiple game modes, and a growing community of bot builders."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://botfights.net",website:"https://botfights.net","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://botfights.net"}},status:d.Running}},nwnn:{state:r.Running,"static-files":{license:"MIT",instructions:"Decentralized news aggregator",icon:"/assets/img/app-icons/nwnn.png"},manifest:{id:"nwnn",title:"Next Web News Network",version:"1.0.0",description:{short:"Decentralized news aggregator, synced from Telegram",long:"Next Web News Network (NWNN) is a decentralized news aggregation platform that curates and syncs content from Telegram channels. Stay informed with the latest developments in Bitcoin, decentralization, and sovereign technology. Clean reading experience with no ads or tracking."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://nwnn.l484.com",website:"https://nwnn.l484.com","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://nwnn.l484.com"}},status:d.Running}},"484-kitchen":{state:r.Running,"static-files":{license:"MIT",instructions:"K484 application platform",icon:"/assets/img/app-icons/484-kitchen.png"},manifest:{id:"484-kitchen",title:"484 Kitchen",version:"1.0.0",description:{short:"K484 application platform",long:"484 Kitchen is a creative application platform from the K484 collective. Explore experimental tools, interactive experiences, and cutting-edge web applications built with a focus on sovereignty and decentralization."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://484.kitchen",website:"https://484.kitchen","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://484.kitchen"}},status:d.Running}},"call-the-operator":{state:r.Running,"static-files":{license:"MIT",instructions:"Escape the Matrix",icon:"/assets/img/app-icons/call-the-operator.png"},manifest:{id:"call-the-operator",title:"Call the Operator",version:"1.0.0",description:{short:"Escape the Matrix — explore decentralized alternatives",long:"Call the Operator is an interactive guide to escaping the centralized matrix. Discover decentralized alternatives to mainstream services, learn about self-sovereignty, and take back control of your digital life. Beautiful dreamcore aesthetic with immersive 3D visuals."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://cta.tx1138.com",website:"https://cta.tx1138.com","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://cta.tx1138.com"}},status:d.Running}},"arch-presentation":{state:r.Running,"static-files":{license:"MIT",instructions:"Archipelago presentation",icon:"/assets/img/app-icons/arch-presentation.png"},manifest:{id:"arch-presentation",title:"Arch Presentation",version:"1.0.0",description:{short:"Archipelago: The Future of Decentralized Infrastructure",long:"The official Archipelago presentation deck. Learn about the vision, architecture, and roadmap of the Archipelago Bitcoin Node OS. Interactive slides showcasing the future of decentralized personal infrastructure, self-sovereign computing, and the Web5 stack."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://present.l484.com",website:"https://present.l484.com","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://present.l484.com"}},status:d.Running}},"syntropy-institute":{state:r.Running,"static-files":{license:"MIT",instructions:"Frequency analysis and therapy",icon:"/assets/img/app-icons/syntropy-institute.png"},manifest:{id:"syntropy-institute",title:"Syntropy Institute",version:"1.0.0",description:{short:"Medicine Reimagined — frequency analysis and therapy",long:"Syntropy Institute presents a new paradigm in health and wellness through frequency analysis and therapy. Explore cutting-edge research into bioresonance, quantum biology, and the energetic foundations of health. A bridge between ancient healing wisdom and modern technology."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://syntropy.institute",website:"https://syntropy.institute","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://syntropy.institute"}},status:d.Running}},"t-zero":{state:r.Running,"static-files":{license:"MIT",instructions:"Documentary series",icon:"/assets/img/app-icons/t-zero.png"},manifest:{id:"t-zero",title:"T-0",version:"1.0.0",description:{short:"Documentary series on decentralization and Bitcoin",long:"T-0 (Tee Minus Zero) is a documentary series exploring the intersection of decentralization, Bitcoin, and personal sovereignty. Follow the stories of builders, dreamers, and freedom advocates creating the infrastructure for a more sovereign future."},"release-notes":"Initial release",license:"MIT","wrapper-repo":"","upstream-repo":"","support-site":"","marketing-site":"https://teeminuszero.net",website:"https://teeminuszero.net","donation-url":null},installed:{"current-dependents":{},"current-dependencies":{},"last-backup":null,"interface-addresses":{main:{"tor-address":"","lan-address":"https://teeminuszero.net"}},status:d.Running}}},ke={class:"app-details-container pb-16 md:pb-16"},ye={key:0},_e={class:"glass-card p-6 mb-6"},Me={class:"hidden md:flex items-center gap-6"},Ie=["src","alt"],Ce={class:"flex-1 min-w-0"},Re={class:"text-2xl font-bold text-white mb-1"},Te={class:"text-white/70 text-sm mb-2"},Ae={class:"flex items-center gap-2"},Be={class:"text-white/50 text-xs"},ze={class:"flex items-center gap-2 flex-shrink-0"},Se={class:"md:hidden"},De={class:"flex items-start gap-4 mb-4"},Le=["src","alt"],je={class:"flex-1 min-w-0"},Pe={class:"text-xl font-bold text-white mb-1"},Ee={class:"text-white/70 text-xs mb-2 line-clamp-2"},Ne={class:"flex flex-wrap items-center gap-2"},Oe={class:"text-white/50 text-xs"},Fe=["title"],He={class:"grid grid-cols-2 gap-2"},Ve={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},$e={class:"lg:col-span-2 space-y-6"},Ue={class:"glass-card p-6"},Ge={class:"text-2xl font-bold text-white mb-4"},Ke={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},qe={class:"text-white/60 text-sm mt-3 text-center"},We={class:"glass-card p-6"},Ye={class:"text-2xl font-bold text-white mb-4"},Ze={class:"text-white/80 leading-relaxed whitespace-pre-line"},Xe={key:0,class:"glass-card p-6"},Je={class:"text-2xl font-bold text-white mb-4"},Qe={class:"space-y-3"},et={class:"space-y-6"},tt={class:"glass-card p-6"},st={class:"text-lg font-bold text-white mb-4"},nt={class:"space-y-3"},ot={class:"flex items-center justify-between py-2 border-b border-white/10"},it={class:"text-white/60 text-sm"},at={class:"text-white font-medium"},rt={key:0,class:"flex items-center justify-between py-2 border-b border-white/10"},lt={class:"text-white/60 text-sm"},ct={class:"text-white font-medium"},dt={class:"flex items-center justify-between py-2 border-b border-white/10"},pt={class:"text-white/60 text-sm"},ut={class:"text-white font-medium capitalize"},ht={key:1,class:"flex items-center justify-between py-2 border-b border-white/10"},mt={class:"text-white/60 text-sm"},gt={class:"text-white font-medium"},ft={class:"flex items-center justify-between py-2"},vt={class:"text-white/60 text-sm"},bt={key:0,class:"glass-card p-6"},wt={class:"text-lg font-bold text-white mb-4"},xt={class:"space-y-3"},kt={class:"flex items-center gap-3 py-2 border-b border-white/10"},yt={class:"flex-1"},_t={class:"text-white/80 font-medium text-sm"},Mt={class:"text-white/50 text-xs capitalize"},It={class:"flex items-center gap-3 py-2"},Ct={class:"flex-1"},Rt={class:"text-white/80 font-medium text-sm"},Tt={class:"text-white/50 text-xs capitalize"},At={key:1,class:"glass-card p-6"},Bt={class:"text-lg font-bold text-white mb-4"},zt={class:"space-y-3"},St={key:0,class:"flex items-start gap-3"},Dt={class:"flex-1 min-w-0"},Lt={class:"text-white/80 font-medium"},jt=["href"],Pt={key:1,class:"flex items-start gap-3"},Et={class:"flex-1 min-w-0"},Nt={class:"text-white/80 font-medium"},Ot={class:"text-amber-300/90 text-sm font-mono break-all"},Ft={class:"text-white/50 text-xs mt-1"},Ht={key:2,class:"glass-card p-6"},Vt={class:"text-lg font-bold text-white mb-4"},$t={class:"space-y-3"},Ut={class:"flex items-start gap-3"},Gt={class:"flex-1"},Kt={class:"text-white/80 font-medium"},qt={class:"text-white/60 text-sm"},Wt={class:"flex items-start gap-3"},Yt={class:"flex-1"},Zt={class:"text-white/80 font-medium"},Xt={class:"text-white/60 text-sm"},Jt={class:"glass-card p-6"},Qt={class:"text-lg font-bold text-white mb-4"},es={class:"space-y-2"},ts=["href"],ss={href:"#",class:"flex items-center gap-2 text-blue-400 hover:text-blue-300 transition-colors"},ns={href:"#",class:"flex items-center gap-2 text-blue-400 hover:text-blue-300 transition-colors"},os={key:1,class:"glass-card p-12 text-center"},is={class:"text-2xl font-semibold text-white mb-2"},as={class:"text-white/70"},rs={class:"flex items-start gap-4 mb-6"},ls={class:"flex-1 min-w-0"},cs={class:"text-xl font-semibold text-white mb-2"},ds={class:"text-white/70 text-sm"},ps={class:"flex flex-col-reverse md:flex-row gap-3 md:justify-end"},us={key:0,class:"fixed bottom-20 left-1/2 -translate-x-1/2 z-50 max-w-md w-full px-4",role:"alert","aria-live":"assertive"},hs={class:"bg-red-500/20 border border-red-500/40 backdrop-blur-sm rounded-lg px-4 py-3 text-red-200 text-sm flex items-center justify-between gap-3"},ms=["aria-label"],gs=pe({__name:"AppDetails",setup(fs){const T=ve(),P=we(),f=ue(),{t:i}=he(),v=g(()=>P.params.id),E={indeedhub:`${window.location.protocol}//${window.location.hostname}:7777`,botfights:"https://botfights.net",nwnn:"https://nwnn.l484.com","484-kitchen":"https://484.kitchen","call-the-operator":"https://cta.tx1138.com","arch-presentation":"https://present.l484.com","syntropy-institute":"https://syntropy.institute","t-zero":"https://teeminuszero.net"},x=g(()=>v.value in E),ie={mempool:"mempool-web","mempool-electrs":"mempool-electrs",electrs:"mempool-electrs",btcpay:"btcpay-server","btcpay-server":"btcpay-server",fedimint:"fedimint","fedimint-gateway":"fedimint-gateway",lnd:"lnd","lnd-ui":"lnd",bitcoin:"bitcoin-knots","bitcoin-knots":"bitcoin-knots",homeassistant:"homeassistant","home-assistant":"homeassistant",grafana:"grafana",searxng:"searxng",ollama:"ollama",onlyoffice:"onlyoffice",penpot:"penpot",nextcloud:"nextcloud",vaultwarden:"vaultwarden",jellyfin:"jellyfin",photoprism:"photoprism",immich:"immich",filebrowser:"filebrowser","nginx-proxy-manager":"nginx-proxy-manager",portainer:"portainer","uptime-kuma":"uptime-kuma",tailscale:"tailscale"},ae={immich:["immich_server","immich-server"],nextcloud:["nextcloud-aio","nextcloud-server"]};function N(n){return ie[n]??n}const o=g(()=>{const n=v.value,t=N(n);if(f.packages[t])return f.packages[t];if(f.packages[n])return f.packages[n];const u=ae[n];if(u){for(const m of u)if(f.packages[m])return f.packages[m]}return j[n]?j[n]:null}),k=g(()=>{const n=o.value?.installed?.["interface-addresses"]?.main;return!n||!n["lan-address"]&&!A(n["tor-address"])?null:n});function A(n){return!!(n&&n.endsWith(".onion")&&n.length>=60&&n.length<=70)}const re=g(()=>{const n=k.value?.["lan-address"];return n?n.includes("localhost")?n.replace("localhost",window.location.hostname):n:"#"}),le=g(()=>{const n=k.value?.["tor-address"];return!n||!A(n)?"":n.startsWith("http")?n:`http://${n}`}),O=g(()=>N(v.value)),B=g(()=>{const n=f.packages["fedimint-gateway"];return n?n.state:"not installed"}),_=R("");let z;function M(n){_.value=n,z&&clearTimeout(z),z=setTimeout(()=>{_.value=""},5e3)}const y=R({show:!1,appTitle:""}),F=R(null),H=R(null);function S(){H.value?.focus?.(),y.value.show=!1}me(F,g(()=>y.value.show),S,{restoreFocusRef:H});const V=g(()=>P.query.from==="marketplace"?i("appDetails.backToStore"):i("appDetails.backToApps")),D=g(()=>{if(!o.value)return!1;if(x.value)return!0;const n=o.value.manifest.interfaces?.main?.ui||o.value.installed?.["interface-addresses"]?.main,t=o.value.state==="running";return n&&t}),$=g(()=>["Self-hosted and privacy-focused","Easy installation and updates","Automatic backups","Secure by default"]);function U(n){const t=n.target,u=t.src,m=v.value;if(j[m]){const b=[`https://raw.githubusercontent.com/Start9Labs/${m}-startos/main/icon.png`,`https://raw.githubusercontent.com/Start9Labs/${m}-startos/main/icon.svg`,`/assets/img/app-icons/${m}.png`,`/assets/img/app-icons/${m}.svg`],Q=b.findIndex(I=>u.includes(I));if(Q<b.length-1){const I=b[Q+1];if(I!==void 0){t.src=I;return}}}const L=`data:image/svg+xml,${encodeURIComponent(`
|
||
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<rect width="80" height="80" rx="16" fill="rgba(255,255,255,0.1)"/>
|
||
<path d="M40 25L50 35H45V50H35V35H30L40 25Z" fill="rgba(255,255,255,0.6)"/>
|
||
<path d="M25 55H55V60H25V55Z" fill="rgba(255,255,255,0.4)"/>
|
||
</svg>
|
||
`)}`;u.includes("data:image")?t.src="/assets/img/logo-archipelago.svg":t.src=L}function G(){T.back()}function K(){if(!o.value)return;const n=v.value,t=E[n];if(t){oe().open({url:t,title:o.value.manifest.title});return}const u={lorabell:{dev:"http://192.168.1.166",prod:"http://192.168.1.166"},atob:{dev:"http://localhost:8102",prod:"https://app.atobitcoin.io"},k484:{dev:"http://localhost:8103",prod:"http://localhost:8103"},indeedhub:{dev:"https://archipelago.indeehub.studio",prod:"https://archipelago.indeehub.studio"},bitcoin:{dev:"http://localhost:8332",prod:"http://localhost:8332"},"btcpay-server":{dev:"http://localhost:23000",prod:"http://localhost:23000"},homeassistant:{dev:"http://localhost:8123",prod:"http://localhost:8123"},grafana:{dev:"http://localhost:3000",prod:"http://localhost:3000"},endurain:{dev:"http://localhost:8080",prod:"http://localhost:8080"},fedimint:{dev:"http://localhost:8175",prod:"http://192.168.1.228:8175"},"fedimint-gateway":{dev:"http://localhost:8176",prod:"http://192.168.1.228:8176"},"morphos-server":{dev:"http://localhost:8081",prod:"http://localhost:8081"},"lightning-stack":{dev:"http://localhost:9735",prod:"http://localhost:9735"},mempool:{dev:"http://localhost:4080",prod:"http://localhost:4080"},ollama:{dev:"http://localhost:11434",prod:"http://localhost:11434"},searxng:{dev:"http://localhost:8888",prod:"http://localhost:8888"},onlyoffice:{dev:"http://localhost:9980",prod:"http://localhost:9980"},penpot:{dev:"http://localhost:9001",prod:"http://localhost:9001"},nextcloud:{dev:"http://localhost:8085",prod:"http://localhost:8085"},vaultwarden:{dev:"http://localhost:8082",prod:"http://localhost:8082"},jellyfin:{dev:"http://localhost:8096",prod:"http://localhost:8096"},photoprism:{dev:"http://localhost:2342",prod:"http://localhost:2342"},immich:{dev:"http://localhost:2283",prod:"http://localhost:2283"},filebrowser:{dev:"http://localhost:8083",prod:"http://localhost:8083"},"nginx-proxy-manager":{dev:"http://localhost:81",prod:"http://localhost:81"},portainer:{dev:"http://localhost:9000",prod:"http://localhost:9000"},"uptime-kuma":{dev:"http://localhost:3001",prod:"http://localhost:3001"},tailscale:{dev:"http://localhost:8240",prod:"http://localhost:8240"},lnd:{dev:"http://localhost:8081",prod:"http://localhost:8081"},"bitcoin-knots":{dev:"http://localhost:8334",prod:"http://localhost:8334"},botfights:{dev:"https://botfights.net",prod:"https://botfights.net"},nwnn:{dev:"https://nwnn.l484.com",prod:"https://nwnn.l484.com"},"484-kitchen":{dev:"https://484.kitchen",prod:"https://484.kitchen"},"call-the-operator":{dev:"https://cta.tx1138.com",prod:"https://cta.tx1138.com"},"arch-presentation":{dev:"https://present.l484.com",prod:"https://present.l484.com"},"syntropy-institute":{dev:"https://syntropy.institute",prod:"https://syntropy.institute"},"t-zero":{dev:"https://teeminuszero.net",prod:"https://teeminuszero.net"}};if(u[n]){let b=u[n].prod;b.includes("localhost")&&(b=b.replace("localhost",window.location.hostname)),oe().open({url:b,title:o.value.manifest.title});return}const m=o.value.manifest.interfaces?.main?.["tor-config"],L=o.value.manifest.interfaces?.main?.["lan-config"];(m||L)&&M(i("appDetails.noLaunchUrl"))}async function q(){try{await f.startPackage(v.value)}catch(n){M(`Failed to start: ${n instanceof Error?n.message:"Unknown error"}`)}}async function W(){try{await f.stopPackage(v.value)}catch(n){M(`Failed to stop: ${n instanceof Error?n.message:"Unknown error"}`)}}async function Y(){try{await f.restartPackage(v.value)}catch(n){M(`Failed to restart: ${n instanceof Error?n.message:"Unknown error"}`)}}function ce(){o.value&&(y.value={show:!0,appTitle:o.value.manifest.title})}async function de(){y.value.show=!1;try{await f.uninstallPackage(v.value),T.push("/dashboard/apps").catch(()=>{})}catch(n){M(`Failed to uninstall: ${n instanceof Error?n.message:"Unknown error"}`)}}async function Z(){ce()}function X(n){switch(n){case r.Running:return"bg-green-500/20 text-green-200 border border-green-500/30";case r.Stopped:return"bg-gray-500/20 text-gray-200 border border-gray-500/30";case r.Starting:case r.Stopping:case r.Restarting:return"bg-yellow-500/20 text-yellow-200 border border-yellow-500/30";case r.Installing:return"bg-blue-500/20 text-blue-200 border border-blue-500/30";default:return"bg-gray-500/20 text-gray-200 border border-gray-500/30"}}function J(n){switch(n){case r.Running:return"bg-green-400";case r.Stopped:return"bg-gray-400";case r.Starting:case r.Stopping:case r.Restarting:return"bg-yellow-400 animate-pulse";case r.Installing:return"bg-blue-400 animate-pulse";default:return"bg-gray-400"}}return(n,t)=>(l(),c("div",ke,[e("button",{onClick:G,class:"hidden md:flex mb-6 items-center gap-2 text-white/70 hover:text-white transition-colors"},[t[5]||(t[5]=e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)),h(" "+s(V.value),1)]),(l(),ge(fe,{to:"body"},[e("button",{onClick:G,class:"md:hidden mobile-back-btn glass-button px-6 py-3 rounded-lg font-medium shadow-2xl flex items-center justify-center gap-2"},[t[6]||(t[6]=e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)),e("span",null,s(V.value),1)])])),o.value?(l(),c("div",ye,[e("div",_e,[e("div",Me,[e("img",{src:o.value["static-files"]?.icon||`/assets/img/app-icons/${o.value.manifest?.id||v.value}.png`,alt:o.value.manifest.title,class:"w-20 h-20 rounded-xl shadow-xl flex-shrink-0",onError:U},null,40,Ie),e("div",Ce,[e("h1",Re,s(o.value.manifest.title),1),e("p",Te,s(o.value.manifest.description.short),1),e("div",Ae,[e("span",{class:w(["inline-flex items-center px-2.5 py-1 rounded-lg text-xs font-medium",X(o.value.state)])},[e("span",{class:w(["w-1.5 h-1.5 rounded-full mr-1.5",J(o.value.state)])},null,2),h(" "+s(o.value.state),1)],2),e("span",Be,"v"+s(o.value.manifest.version),1)])]),e("div",ze,[O.value==="lnd"?(l(),c("button",{key:0,onClick:t[0]||(t[0]=u=>a(T).push("/dashboard/apps/lnd/channels")),class:"glass-button glass-button-sm px-4 py-2.5 rounded-lg text-sm font-medium flex items-center gap-2"},[t[7]||(t[7]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)),h(" "+s(a(i)("appDetails.channels")),1)])):p("",!0),D.value?(l(),c("button",{key:1,onClick:K,class:"glass-button glass-button-sm px-6 py-2.5 rounded-lg text-sm font-semibold flex items-center gap-2"},[t[8]||(t[8]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})],-1)),h(" "+s(a(i)("common.launch")),1)])):p("",!0),x.value?p("",!0):(l(),c(C,{key:2},[o.value.state==="stopped"?(l(),c("button",{key:0,onClick:q,class:"px-4 py-2.5 bg-green-500/20 border border-green-500/40 rounded-lg text-green-200 text-sm font-medium hover:bg-green-500/30 transition-colors flex items-center gap-2"},[t[9]||(t[9]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"})],-1)),h(" "+s(a(i)("common.start")),1)])):p("",!0),e("button",{onClick:Y,class:"px-4 py-2.5 glass-button rounded-lg text-sm font-medium hover:bg-white/15 transition-colors flex items-center gap-2"},[t[10]||(t[10]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1)),h(" "+s(a(i)("common.restart")),1)]),o.value.state==="running"?(l(),c("button",{key:1,onClick:W,class:"px-4 py-2.5 bg-yellow-500/20 border border-yellow-500/40 rounded-lg text-yellow-200 text-sm font-medium hover:bg-yellow-500/30 transition-colors flex items-center gap-2"},[t[11]||(t[11]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 10a1 1 0 011-1h4a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4z"})],-1)),h(" "+s(a(i)("common.stop")),1)])):p("",!0),e("button",{onClick:Z,class:"px-4 py-2.5 bg-red-600/20 border border-red-600/40 rounded-lg text-red-300 text-sm font-medium hover:bg-red-600/30 transition-colors flex items-center gap-2"},[t[12]||(t[12]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)),h(" "+s(a(i)("common.uninstall")),1)])],64))])]),e("div",Se,[e("div",De,[e("img",{src:o.value["static-files"]?.icon||`/assets/img/app-icons/${o.value.manifest?.id||v.value}.png`,alt:o.value.manifest.title,class:"w-20 h-20 rounded-xl shadow-xl flex-shrink-0",onError:U},null,40,Le),e("div",je,[e("h1",Pe,s(o.value.manifest.title),1),e("p",Ee,s(o.value.manifest.description.short),1),e("div",Ne,[e("span",{class:w(["inline-flex items-center px-2 py-0.5 rounded text-xs font-medium",X(o.value.state)])},[e("span",{class:w(["w-1.5 h-1.5 rounded-full mr-1",J(o.value.state)])},null,2),h(" "+s(o.value.state),1)],2),e("span",Oe,"v"+s(o.value.manifest.version),1)])]),x.value?p("",!0):(l(),c("button",{key:0,onClick:Z,class:"flex-shrink-0 w-10 h-10 rounded-lg bg-red-600/20 border border-red-600/40 text-red-300 hover:bg-red-600/30 transition-colors flex items-center justify-center",title:a(i)("common.uninstall")},[...t[13]||(t[13]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])],8,Fe))]),e("div",He,[D.value?(l(),c("button",{key:0,onClick:K,class:w([x.value?"col-span-2":"","glass-button glass-button-sm px-4 py-2.5 rounded-lg text-sm font-semibold flex items-center justify-center gap-2"])},[t[14]||(t[14]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})],-1)),h(" "+s(a(i)("common.launch")),1)],2)):p("",!0),x.value?p("",!0):(l(),c(C,{key:1},[o.value.state==="stopped"?(l(),c("button",{key:0,onClick:q,class:"px-4 py-2.5 bg-green-500/20 border border-green-500/40 rounded-lg text-green-200 text-sm font-medium hover:bg-green-500/30 transition-colors flex items-center justify-center gap-2"},[t[15]||(t[15]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"})],-1)),h(" "+s(a(i)("common.start")),1)])):p("",!0),o.value.state==="running"?(l(),c("button",{key:1,onClick:W,class:"px-4 py-2.5 bg-yellow-500/20 border border-yellow-500/40 rounded-lg text-yellow-200 text-sm font-medium hover:bg-yellow-500/30 transition-colors flex items-center justify-center gap-2"},[t[16]||(t[16]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 10a1 1 0 011-1h4a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4z"})],-1)),h(" "+s(a(i)("common.stop")),1)])):p("",!0),e("button",{onClick:Y,class:w([[D.value&&(o.value.state==="stopped"||o.value.state==="running")?"col-span-2":""],"px-4 py-2.5 glass-button rounded-lg text-sm font-medium hover:bg-white/15 transition-colors flex items-center justify-center gap-2"])},[t[17]||(t[17]=e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1)),h(" "+s(a(i)("common.restart")),1)],2)],64))])])]),e("div",Ve,[e("div",$e,[e("div",Ue,[e("h2",Ge,s(a(i)("appDetails.screenshots")),1),e("div",Ke,[(l(),c(C,null,ee(4,u=>e("div",{key:u,class:"aspect-video rounded-xl bg-white/5 border border-white/10 flex items-center justify-center hover:bg-white/10 transition-colors cursor-pointer"},[...t[18]||(t[18]=[e("svg",{class:"w-16 h-16 text-white/20",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1)])])),64))]),e("p",qe,s(a(i)("appDetails.screenshotPlaceholder")),1)]),e("div",We,[e("h2",Ye,s(a(i)("appDetails.about",{name:o.value.manifest.title})),1),e("p",Ze,s(o.value.manifest.description.long),1)]),$.value.length>0?(l(),c("div",Xe,[e("h2",Je,s(a(i)("appDetails.features")),1),e("ul",Qe,[(l(!0),c(C,null,ee($.value,(u,m)=>(l(),c("li",{key:m,class:"flex items-start gap-3 text-white/80"},[t[19]||(t[19]=e("svg",{class:"w-6 h-6 text-green-400 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",null,s(u),1)]))),128))])])):p("",!0)]),e("div",et,[e("div",tt,[e("h3",st,s(a(i)("appDetails.information")),1),e("div",nt,[e("div",ot,[e("span",it,s(a(i)("common.version")),1),e("span",at,s(o.value.manifest.version),1)]),o.value.manifest.author?(l(),c("div",rt,[e("span",lt,s(a(i)("common.developer")),1),e("span",ct,s(o.value.manifest.author),1)])):p("",!0),e("div",dt,[e("span",pt,s(a(i)("common.status")),1),e("span",ut,s(o.value.state),1)]),o.value.manifest.license?(l(),c("div",ht,[e("span",mt,s(a(i)("common.license")),1),e("span",gt,s(o.value.manifest.license),1)])):p("",!0),e("div",ft,[e("span",vt,s(a(i)("common.category")),1),t[20]||(t[20]=e("span",{class:"text-white font-medium"},"App",-1))])])]),O.value==="fedimint"?(l(),c("div",bt,[e("h3",wt,s(a(i)("appDetails.services")),1),e("div",xt,[e("div",kt,[e("span",{class:w(["w-2 h-2 rounded-full",o.value.state==="running"?"bg-green-400":"bg-yellow-400"])},null,2),e("div",yt,[e("p",_t,s(a(i)("appDetails.guardian")),1),e("p",Mt,s(o.value.state),1)])]),e("div",It,[e("span",{class:w(["w-2 h-2 rounded-full",B.value==="running"?"bg-green-400":B.value==="stopped"?"bg-yellow-400":"bg-red-400"])},null,2),e("div",Ct,[e("p",Rt,s(a(i)("appDetails.gateway")),1),e("p",Tt,s(B.value),1)])])])])):p("",!0),k.value?(l(),c("div",At,[e("h3",Bt,s(a(i)("appDetails.access")),1),e("div",zt,[k.value["lan-address"]?(l(),c("div",St,[t[21]||(t[21]=e("svg",{class:"w-5 h-5 text-green-400 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"})],-1)),e("div",Dt,[e("p",Lt,s(a(i)("appDetails.lan")),1),e("a",{href:re.value,target:"_blank",rel:"noopener noreferrer",class:"text-blue-400 hover:text-blue-300 text-sm break-all"},s(k.value["lan-address"]),9,jt)])])):p("",!0),A(k.value["tor-address"])?(l(),c("div",Pt,[t[22]||(t[22]=e("svg",{class:"w-5 h-5 text-amber-400 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})],-1)),e("div",Et,[e("p",Nt,s(a(i)("appDetails.tor")),1),e("span",Ot,s(le.value),1),e("p",Ft,s(a(i)("appDetails.requiresTor")),1)])])):p("",!0)])])):p("",!0),x.value?p("",!0):(l(),c("div",Ht,[e("h3",Vt,s(a(i)("appDetails.requirements")),1),e("div",$t,[e("div",Ut,[t[23]||(t[23]=e("svg",{class:"w-5 h-5 text-blue-400 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"})],-1)),e("div",Gt,[e("p",Kt,s(a(i)("appDetails.ram")),1),e("p",qt,s(a(i)("appDetails.ramDesc")),1)])]),e("div",Wt,[t[24]||(t[24]=e("svg",{class:"w-5 h-5 text-purple-400 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4"})],-1)),e("div",Yt,[e("p",Zt,s(a(i)("appDetails.storage")),1),e("p",Xt,s(a(i)("appDetails.storageDesc")),1)])])])])),e("div",Jt,[e("h3",Qt,s(a(i)("appDetails.links")),1),e("div",es,[o.value.manifest.website?(l(),c("a",{key:0,href:o.value.manifest.website,target:"_blank",rel:"noopener noreferrer",class:"flex items-center gap-2 text-blue-400 hover:text-blue-300 transition-colors"},[t[25]||(t[25]=e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"})],-1)),h(" "+s(a(i)("appDetails.website")),1)],8,ts)):p("",!0),e("a",ss,[t[26]||(t[26]=e("svg",{class:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.840 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})],-1)),h(" "+s(a(i)("appDetails.sourceCode")),1)]),e("a",ns,[t[27]||(t[27]=e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),h(" "+s(a(i)("appDetails.documentation")),1)])])])])])])):(l(),c("div",os,[t[28]||(t[28]=e("svg",{class:"w-24 h-24 text-white/20 mx-auto mb-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("h3",is,s(a(i)("appDetails.notFoundTitle")),1),e("p",as,s(a(i)("appDetails.notFoundMessage")),1)])),te(ne,{name:"modal"},{default:se(()=>[y.value.show?(l(),c("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4",onClick:t[3]||(t[3]=u=>S())},[t[30]||(t[30]=e("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm"},null,-1)),e("div",{ref_key:"uninstallModalRef",ref:F,onClick:t[2]||(t[2]=be(()=>{},["stop"])),class:"glass-card p-6 md:p-8 max-w-md w-full relative z-10"},[e("div",rs,[t[29]||(t[29]=e("div",{class:"p-3 bg-red-500/20 rounded-lg flex-shrink-0"},[e("svg",{class:"w-6 h-6 text-red-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})])],-1)),e("div",ls,[e("h3",cs,s(a(i)("appDetails.uninstallTitle")),1),e("p",ds,s(a(i)("appDetails.uninstallConfirm",{name:y.value.appTitle})),1)])]),e("div",ps,[e("button",{onClick:t[1]||(t[1]=u=>S()),class:"w-full md:w-auto px-6 py-3 glass-button rounded-lg text-sm font-medium"},s(a(i)("common.cancel")),1),e("button",{onClick:de,class:"w-full md:w-auto px-6 py-3 bg-red-600/80 hover:bg-red-600 rounded-lg text-white text-sm font-medium transition-colors"},s(a(i)("common.uninstall")),1)])],512)])):p("",!0)]),_:1}),te(ne,{name:"fade"},{default:se(()=>[_.value?(l(),c("div",us,[e("div",hs,[e("span",null,s(_.value),1),e("button",{onClick:t[4]||(t[4]=u=>_.value=""),"aria-label":a(i)("apps.dismissError"),class:"text-red-300 hover:text-white shrink-0"},"×",8,ms)])])):p("",!0)]),_:1})]))}}),ws=xe(gs,[["__scopeId","data-v-46d35a3e"]]);export{ws as default};
|