| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>DashX - Profile</title> |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.10.8/sweetalert2.min.css" rel="stylesheet"> |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet"> |
| <link href="styles.css" rel="stylesheet"> |
| <style> |
| .navbar { |
| background: rgba(44, 62, 80, 0.95) !important; |
| backdrop-filter: blur(10px); |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); |
| box-shadow: 0 2px 20px rgba(0, 0, 0, 0.2); |
| } |
| |
| .navbar-brand { |
| font-size: 1.5rem; |
| font-weight: 700; |
| color: #fff !important; |
| } |
| |
| .navbar-brand i { |
| color: #e74c3c; |
| font-size: 1.8rem; |
| margin-right: 0.5rem; |
| } |
| |
| .nav-link { |
| color: #ecf0f1 !important; |
| font-weight: 500; |
| transition: all 0.3s ease; |
| padding: 0.5rem 1rem !important; |
| border-radius: 6px; |
| margin: 0 0.25rem; |
| } |
| |
| .nav-link:hover { |
| background: rgba(255, 255, 255, 0.1); |
| transform: translateY(-1px); |
| } |
| |
| .nav-link.text-danger { |
| color: #e74c3c !important; |
| } |
| |
| .nav-link.text-danger:hover { |
| background: rgba(231, 76, 60, 0.1); |
| color: #ff6b6b !important; |
| } |
| |
| </style> |
| </head> |
| <body> |
| <nav class="navbar navbar-expand-lg navbar-dark"> |
| <div class="container"> |
| <a class="navbar-brand" href="/"> |
| <i class="fas fa-bolt"></i> DashX |
| </a> |
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"> |
| <span class="navbar-toggler-icon"></span> |
| </button> |
| <div class="collapse navbar-collapse" id="navbarNav"> |
| <ul class="navbar-nav ms-auto"> |
| <li class="nav-item"> |
| <a class="nav-link" href="/dashboard"> |
| <i class="fas fa-chart-line"></i> Dashboard |
| </a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link text-danger" href="#" onclick="logout()"> |
| <i class="fas fa-sign-out-alt"></i> Logout |
| </a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </nav> |
|
|
| <div class="profile-container"> |
| <div class="profile-header"> |
| <div class="profile-avatar" id="profileAvatar"> |
| <img id="profileImage" src="" alt="Profile" style="display: none; width: 100%; height: 100%; border-radius: 50%; object-fit: cover;"> |
| <i class="fas fa-user-circle" id="defaultAvatar"></i> |
| </div> |
| <div class="profile-info"> |
| <h2 id="profileUsername">Loading...</h2> |
| <p id="profileEmail">Loading...</p> |
| <span class="badge" id="profileRole">User</span> |
| <span class="badge premium" id="premiumBadge" style="display: none;">Premium</span> |
| <span class="badge" id="adminBadge" style="display: none; background: linear-gradient(135deg, #853030 0%, #292727 100%);">Admin</span> |
| </div> |
| </div> |
|
|
| <div class="profile-content"> |
| <div class="profile-section"> |
| <h3><i class="fas fa-info-circle"></i> Account Information</h3> |
| <div class="info-grid"> |
| <div class="info-item"> |
| <label>API Key</label> |
| <div class="api-key-display"> |
| <code id="profileApiKey">Loading...</code> |
| <button onclick="copyApiKey()" class="btn btn-sm"> |
| <i class="fas fa-copy"></i> |
| </button> |
| </div> |
| </div> |
| <div class="info-item"> |
| <label>Total Requests</label> |
| <span class="info-value" id="profileRequests">0</span> |
| </div> |
| <div class="info-item"> |
| <label>Today's Requests</label> |
| <span class="info-value" id="profileRequestsToday">0</span> |
| </div> |
| <div class="info-item"> |
| <label>Daily Limit</label> |
| <span class="info-value" id="profileLimit">30</span> |
| </div> |
| </div> |
| </div> |
|
|
| <div class="profile-section"> |
| <h3><i class="fas fa-chart-bar"></i> Usage Statistics</h3> |
| <div class="usage-progress"> |
| <div class="progress-item"> |
| <label>Today's Usage</label> |
| <div class="progress-bar"> |
| <div class="progress-fill" id="usageProgress"></div> |
| </div> |
| <span class="progress-text" id="usageText">0 / 30</span> |
| </div> |
| </div> |
| </div> |
|
|
| <div class="profile-section"> |
| <h3><i class="fas fa-cog"></i> Account Settings</h3> |
| <div class="settings-grid"> |
| <div class="setting-item"> |
| <label>Change Username</label> |
| <div class="input-group"> |
| <input type="text" id="newUsername" placeholder="Enter new username"> |
| <button onclick="updateUsername()" class="btn btn-primary"> |
| <i class="fas fa-save"></i> Update |
| </button> |
| </div> |
| </div> |
|
|
| <div class="setting-item"> |
| <label>Profile Picture URL</label> |
| <div class="input-group"> |
| <input type="url" id="profileUrlInput" placeholder="Enter image URL"> |
| <button onclick="updateProfileUrl()" class="btn btn-primary"> |
| <i class="fas fa-image"></i> Update |
| </button> |
| </div> |
| </div> |
|
|
| <div class="setting-item" id="premiumFeatures" style="display: none;"> |
| <label>Premium Features</label> |
| <div class="premium-actions"> |
| <button onclick="regenerateApiKey()" class="btn btn-warning"> |
| <i class="fas fa-sync"></i> Regenerate API Key |
| </button> |
| </div> |
| <label>Custom API Key</label> |
| <div class="input-group"> |
| <input type="text" id="customApiKeyInput" placeholder="Enter custom API key"> |
| <button onclick="updateCustomApiKey()" class="btn btn-primary"> |
| <i class="fas fa-key"></i> Update |
| </button> |
| </div> |
| <small style="opacity: 0.7;">Premium feature - Set your own custom API key</small> |
|
|
| </div> |
| </div> |
| </div> |
|
|
| <div class="profile-section"> |
| <h3><i class="fas fa-history"></i> Recent Activity</h3> |
| <div class="activity-list" id="recentActivity"> |
| <div class="activity-item"> |
| <i class="fas fa-spinner fa-spin"></i> |
| <span>Loading activity...</span> |
| </div> |
| </div> |
| </div> |
|
|
| <div class="profile-section danger-zone"> |
| <h3><i class="fas fa-exclamation-triangle"></i> Danger Zone</h3> |
| <div class="danger-actions"> |
| <button onclick="deleteAccount()" class="btn btn-danger"> |
| <i class="fas fa-trash"></i> Delete Account |
| </button> |
| <p class="warning-text">This action cannot be undone. All your data will be permanently deleted.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.10.8/sweetalert2.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script> |
| <script src="profile.js"></script> |
| </body> |
| </html> |