CrashX / public /index.html
Eleeter
update files
84491aa
Raw
History Blame Contribute Delete
8.91 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CrashX</title>
<meta name="description" content="AI-powered Minecraft crash log analyzer." />
<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@400;500;600&family=JetBrains+Mono:wght@400&display=swap"
rel="stylesheet" />
<link rel="stylesheet" href="/css/main.css?v=5.0" />
<script>
// Apply theme early to prevent flash
if (localStorage.getItem('crashx-theme') === 'light') {
document.documentElement.classList.add('light-theme');
}
if (localStorage.getItem('crashx-sidebar-closed') === 'true') {
document.documentElement.classList.add('sidebar-closed-init');
}
</script>
</head>
<body>
<div id="app-container">
<!-- Sidebar -->
<nav id="sidebar" aria-label="Chat history">
<div class="sidebar-header">
<button id="btn-new-analysis" class="new-chat-btn">
<div class="new-chat-icon">
<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="12" y1="5" x2="12" y2="19"></line>
<line x1="5" y1="12" x2="19" y2="12"></line>
</svg>
</div>
<span>New Analysis</span>
</button>
</div>
<div class="sidebar-scroll">
<div class="history-group">
<div class="history-label">Previous 7 Days</div>
<div id="history-list" role="list">
<!-- History items will be injected here -->
</div>
</div>
</div>
<div class="sidebar-footer">
<div class="profile-dropdown-container">
<!-- Dropdown Menu -->
<div id="profile-dropdown" class="dropdown-menu">
<button id="btn-theme-toggle" class="dropdown-item">
<div class="theme-icon-container">
<svg class="theme-icon icon-for-dark" width="16" height="16" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg class="theme-icon icon-for-light" width="16" height="16" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</div>
<span id="theme-text">Switch to Light Mode</span>
</button>
<div class="dropdown-divider"></div>
<button id="btn-sidebar-signin" class="dropdown-item">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path>
<polyline points="10 17 15 12 10 7"></polyline>
<line x1="15" y1="12" x2="3" y2="12"></line>
</svg>
<span>Sign in to sync</span>
</button>
</div>
<!-- Profile Button -->
<button id="btn-profile-menu" class="sidebar-action-btn profile-btn">
<div class="avatar-placeholder">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
<circle cx="12" cy="7" r="4"></circle>
</svg>
</div>
<span>Guest User</span>
</button>
</div>
</div>
</nav>
<!-- Main Content Area -->
<main id="main-content">
<!-- Topbar -->
<header id="topbar">
<button id="btn-toggle-sidebar" class="icon-btn" aria-label="Toggle sidebar">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
<line x1="9" y1="3" x2="9" y2="21"></line>
</svg>
</button>
<div class="model-selector">
<span class="logo-text">CrashX</span>
<span class="model-version">AI</span>
</div>
</header>
<!-- Chat / Results Area -->
<div id="chat-container">
<div id="messages-area">
<!-- Welcome Screen -->
<div id="welcome-screen" class="welcome-screen">
<div class="welcome-logo">
<svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path
d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z">
</path>
<polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline>
<line x1="12" y1="22.08" x2="12" y2="12"></line>
</svg>
</div>
<h1>What crashed today?</h1>
</div>
</div>
</div>
<!-- Input Area -->
<div id="input-container">
<div class="input-wrapper">
<!-- Queue Status -->
<div id="queue-bar" class="queue-bar">
<span class="spinner"></span>
<span id="queue-bar-text">Analyzing...</span>
</div>
<div class="input-box">
<textarea id="crash-log-input" placeholder="Paste your Minecraft crash log here..." rows="1"
spellcheck="false"></textarea>
<button id="btn-analyze" class="send-btn" disabled>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" class="send-icon">
<path d="M5 12h14M12 5l7 7-7 7" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div class="disclaimer">
CrashX can make mistakes. Verify before making system changes.
</div>
</div>
</main>
</div>
<!-- Error Toast -->
<div id="error-toast" class="toast"></div>
<script src="/js/three.min.js"></script>
<script type="module" src="/js/main.js"></script>
</body>
</html>