Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"/> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | |
| <title>NyayaSetu — Indian Legal Research</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="/static/style.css"> | |
| </head> | |
| <body> | |
| <div class="app-layout"> | |
| <!-- ── SIDEBAR ── --> | |
| <aside class="sidebar" id="sidebar"> | |
| <div class="sidebar-brand"> | |
| <div class="brand-mark">⚖</div> | |
| <div class="brand-text"> | |
| <span class="brand-name">NyayaSetu</span> | |
| <span class="brand-sub">Legal Research</span> | |
| </div> | |
| <button class="sidebar-toggle" onclick="toggleSidebar()" title="Toggle sidebar"> | |
| <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <line x1="3" y1="6" x2="21" y2="6"></line> | |
| <line x1="3" y1="12" x2="21" y2="12"></line> | |
| <line x1="3" y1="18" x2="21" y2="18"></line> | |
| </svg> | |
| </button> | |
| </div> | |
| <button class="new-chat-btn" onclick="newChat()"> | |
| <span class="new-chat-icon">+</span> | |
| New Research Session | |
| </button> | |
| <button class="analytics-btn" onclick="showAnalytics()"> | |
| <span class="analytics-icon">📊</span> | |
| System Analytics | |
| </button> | |
| <button class="analytics-btn" onclick="window.location.href='/court/ui'"> | |
| <span class="analytics-icon">⚖️</span> | |
| Moot Court | |
| </button> | |
| <div class="sidebar-section-label">SESSIONS</div> | |
| <div id="sessions-list" class="sessions-list"> | |
| <div class="sessions-empty">No sessions yet</div> | |
| </div> | |
| <div class="sidebar-footer"> | |
| <div class="footer-disclaimer"> | |
| <span class="disclaimer-icon">⚠</span> | |
| <span>Not legal advice. Consult a qualified advocate.</span> | |
| </div> | |
| <div class="footer-meta"> | |
| Supreme Court of India · 1950–2024<br> | |
| 443,598 judgment chunks indexed | |
| </div> | |
| </div> | |
| </aside> | |
| <!-- ── MAIN ── --> | |
| <div class="main-wrapper"> | |
| <!-- Top bar --> | |
| <header class="topbar"> | |
| <div class="topbar-left"> | |
| <span class="topbar-title" id="topbar-title">New Research Session</span> | |
| </div> | |
| <div class="topbar-right"> | |
| <div class="status-pill" id="status-pill"> | |
| <span class="status-dot"></span> | |
| <span id="status-text">Ready</span> | |
| </div> | |
| </div> | |
| </header> | |
| <!-- ── WELCOME SCREEN ── --> | |
| <div id="screen-welcome" class="screen screen-welcome active"> | |
| <div class="welcome-inner"> | |
| <div class="welcome-emblem">⚖</div> | |
| <h1 class="welcome-heading">Ask Indian Law</h1> | |
| <p class="welcome-body"> | |
| Search across 26,688 Supreme Court judgments.<br> | |
| Every answer is cited. Every source is traceable. | |
| </p> | |
| <div class="suggestion-grid"> | |
| <button class="suggestion-pill" onclick="usesuggestion(this)">What are fundamental rights under the Constitution?</button> | |
| <button class="suggestion-pill" onclick="usesuggestion(this)">What is the right to privacy under Article 21?</button> | |
| <button class="suggestion-pill" onclick="usesuggestion(this)">How does the Supreme Court define bail in non-bailable offences?</button> | |
| <button class="suggestion-pill" onclick="usesuggestion(this)">What is the basic structure doctrine?</button> | |
| <button class="suggestion-pill" onclick="usesuggestion(this)">What does Article 15 prohibit?</button> | |
| <button class="suggestion-pill" onclick="usesuggestion(this)">How is freedom of speech limited under Article 19?</button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ── CHAT SCREEN ── --> | |
| <div id="screen-chat" class="screen screen-chat"> | |
| <div id="messages-container" class="messages-container"> | |
| <div id="messages-list" class="messages-list"></div> | |
| </div> | |
| </div> | |
| <!-- ── ANALYTICS SCREEN ── --> | |
| <div id="screen-analytics" class="screen screen-analytics"> | |
| <div class="analytics-inner"> | |
| <div class="analytics-header"> | |
| <h2>System Analytics</h2> | |
| <p>Live metrics from inference logs</p> | |
| </div> | |
| <div class="analytics-grid"> | |
| <div class="stat-card"> | |
| <div class="stat-value" id="stat-total">—</div> | |
| <div class="stat-label">Total Queries</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value" id="stat-verified">—</div> | |
| <div class="stat-label">Verified Rate</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value" id="stat-latency">—</div> | |
| <div class="stat-label">Avg Latency</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value" id="stat-ood">—</div> | |
| <div class="stat-label">Out-of-Domain Rate</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value" id="stat-sources">—</div> | |
| <div class="stat-label">Avg Sources / Query</div> | |
| </div> | |
| </div> | |
| <div class="analytics-charts"> | |
| <div class="chart-card"> | |
| <h3>Stage Distribution</h3> | |
| <div id="chart-stages" class="chart-container"></div> | |
| </div> | |
| <div class="chart-card"> | |
| <h3>Entity Types Extracted</h3> | |
| <div id="chart-entities" class="chart-container"></div> | |
| </div> | |
| <div class="chart-card"> | |
| <h3>Recent Query Latencies (ms)</h3> | |
| <div id="chart-latency" class="chart-container"></div> | |
| </div> | |
| </div> | |
| <div class="analytics-footer"> | |
| <button class="refresh-btn" onclick="loadAnalytics()">↻ Refresh</button> | |
| <span class="analytics-note">Data from current session logs. Resets on container restart.</span> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ── SOURCES PANEL ── --> | |
| <div id="sources-panel" class="sources-panel"> | |
| <div class="sources-panel-header"> | |
| <span class="sources-panel-title">Sources</span> | |
| <button class="sources-panel-close" onclick="closeSourcesPanel()">✕</button> | |
| </div> | |
| <div id="sources-panel-body" class="sources-panel-body"></div> | |
| </div> | |
| <div id="sources-overlay" class="sources-overlay" onclick="closeSourcesPanel()"></div> | |
| <!-- ── INPUT ── --> | |
| <div class="input-zone"> | |
| <div class="input-box"> | |
| <textarea | |
| id="query-input" | |
| class="query-textarea" | |
| placeholder="Ask a question about Indian law…" | |
| rows="1" | |
| maxlength="1000" | |
| ></textarea> | |
| <button id="send-btn" class="send-btn" onclick="submitQuery()"> | |
| <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> | |
| <line x1="22" y1="2" x2="11" y2="13"></line> | |
| <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon> | |
| </svg> | |
| </button> | |
| </div> | |
| <p class="input-disclaimer">NyayaSetu is not a substitute for professional legal advice.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <script src="/static/app.js?v=2"></script> | |
| </body> | |
| </html> |