Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Web3 Research Co-Pilot</title> | |
| <!-- Prevent flash of unstyled content --> | |
| <script>(function(){var t=localStorage.getItem('theme')||'dark';document.documentElement.setAttribute('data-theme',t);})()</script> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> | |
| <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22><path fill=%22%236366f1%22 d=%22M12 2L2 7v10c0 5.5 3.8 7.7 9 9 5.2-1.3 9-3.5 9-9V7l-10-5z%22/></svg>"> | |
| <script src="https://cdn.jsdelivr.net/npm/marked@9/marked.min.js"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css" id="hljs-theme"> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script> | |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet"> | |
| {% set root_path = request.scope.get('root_path', '').rstrip('/') %} | |
| <link rel="stylesheet" href="{{ root_path }}/static/styles.css"> | |
| </head> | |
| <body> | |
| <!-- Toast notification --> | |
| <div id="statusIndicator" class="toast"> | |
| <i class="fas fa-circle-info toast-icon"></i> | |
| <span id="statusText">Ready</span> | |
| </div> | |
| <div class="app"> | |
| <!-- Header --> | |
| <header class="header"> | |
| <div class="header-left"> | |
| <svg class="logo-icon" width="26" height="26" viewBox="0 0 24 24" fill="none"> | |
| <path d="M12 2L2 7v10c0 5.5 3.8 7.7 9 9 5.2-1.3 9-3.5 9-9V7L12 2z" fill="url(#logoGrad)"/> | |
| <defs> | |
| <linearGradient id="logoGrad" x1="0%" y1="0%" x2="100%" y2="100%"> | |
| <stop offset="0%" style="stop-color:#6366f1"/> | |
| <stop offset="100%" style="stop-color:#22d3ee"/> | |
| </linearGradient> | |
| </defs> | |
| </svg> | |
| <span class="header-title"><span class="brand">Web3</span> Research Co-Pilot</span> | |
| </div> | |
| <div class="header-right"> | |
| <div id="statusBadge" class="status-badge checking"> | |
| <span class="status-dot"></span> | |
| <span id="statusBadgeText">Connecting</span> | |
| </div> | |
| <div class="model-select"> | |
| <button class="model-btn active" id="btnOllama" onclick="setModel('ollama')"> | |
| <i class="fas fa-microchip"></i> Local | |
| </button> | |
| <button class="model-btn" id="btnGemini" onclick="setModel('gemini')"> | |
| <i class="fas fa-cloud"></i> Gemini | |
| </button> | |
| </div> | |
| <button id="themeToggle" class="icon-btn" title="Toggle theme"> | |
| <i class="fas fa-sun"></i> | |
| </button> | |
| </div> | |
| </header> | |
| <!-- Main --> | |
| <main class="main"> | |
| <div class="chat-wrap"> | |
| <div id="chatMessages" class="chat-messages"> | |
| <div class="welcome-screen"> | |
| <svg class="welcome-icon" width="52" height="52" viewBox="0 0 24 24" fill="none"> | |
| <path d="M12 2L2 7v10c0 5.5 3.8 7.7 9 9 5.2-1.3 9-3.5 9-9V7L12 2z" fill="url(#welcomeGrad)"/> | |
| <defs> | |
| <linearGradient id="welcomeGrad" x1="0%" y1="0%" x2="100%" y2="100%"> | |
| <stop offset="0%" style="stop-color:#6366f1"/> | |
| <stop offset="100%" style="stop-color:#22d3ee"/> | |
| </linearGradient> | |
| </defs> | |
| </svg> | |
| <h2>Web3 Research Co-Pilot</h2> | |
| <p>Professional cryptocurrency analysis and market intelligence</p> | |
| <div class="example-chips"> | |
| <button class="chip" onclick="setQuery('Analyze Bitcoin price trends and institutional adoption patterns')"> | |
| <i class="fas fa-chart-line"></i> BTC Analysis | |
| </button> | |
| <button class="chip" onclick="setQuery('Compare top DeFi protocols by TVL, yield, and risk metrics across chains')"> | |
| <i class="fas fa-coins"></i> DeFi Compare | |
| </button> | |
| <button class="chip" onclick="setQuery('Evaluate Ethereum Layer 2 scaling solutions and adoption metrics')"> | |
| <i class="fas fa-layer-group"></i> L2 Research | |
| </button> | |
| <button class="chip" onclick="setQuery('Find optimal yield farming strategies with risk assessment')"> | |
| <i class="fas fa-seedling"></i> Yield Farming | |
| </button> | |
| <button class="chip" onclick="setQuery('Track whale movements and large Bitcoin transactions today')"> | |
| <i class="fas fa-fish"></i> Whale Tracker | |
| </button> | |
| <button class="chip" onclick="setQuery('Analyze gas fees and network congestion across blockchains')"> | |
| <i class="fas fa-gauge-high"></i> Gas Analytics | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Input --> | |
| <div class="input-area"> | |
| <div class="input-box"> | |
| <textarea | |
| id="queryInput" | |
| class="input-field" | |
| placeholder="Ask about crypto markets, DeFi protocols, blockchain analytics..." | |
| maxlength="1000" | |
| rows="1" | |
| ></textarea> | |
| <div class="input-actions"> | |
| <span class="char-count" id="charCount">0 / 1000</span> | |
| <button id="sendBtn" class="send-btn" title="Send (Enter)"> | |
| <i class="fas fa-paper-plane"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <p class="input-hint"><kbd>Enter</kbd> to send · <kbd>Shift+Enter</kbd> for new line</p> | |
| </div> | |
| </div> | |
| </main> | |
| </div> | |
| <script src="{{ root_path }}/static/app.js"></script> | |
| </body> | |
| </html> | |