Spaces:
Running
Running
| <html lang="en" class="dark"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Settings - MyVirtualPal</title> | |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <style> | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); | |
| body { | |
| font-family: 'Inter', sans-serif; | |
| } | |
| .gradient-bg { | |
| background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); | |
| } | |
| .settings-card { | |
| background: rgba(30, 41, 59, 0.7); | |
| backdrop-filter: blur(10px); | |
| } | |
| </style> | |
| </head> | |
| <body class="gradient-bg text-gray-100 min-h-screen"> | |
| <div class="container mx-auto py-8 px-4"> | |
| <!-- Header --> | |
| <header class="flex justify-between items-center mb-8"> | |
| <div class="flex items-center space-x-3"> | |
| <a href="index.html" class="p-2 rounded-full hover:bg-gray-800 transition"> | |
| <i data-feather="arrow-left"></i> | |
| </a> | |
| <h1 class="text-2xl font-bold">Settings</h1> | |
| </div> | |
| <div> | |
| <button class="p-2 rounded-full hover:bg-gray-800 transition"> | |
| <i data-feather="save"></i> | |
| </button> | |
| </div> | |
| </header> | |
| <!-- Settings Cards --> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> | |
| <!-- VRM Model Settings --> | |
| <div class="settings-card rounded-xl p-6 shadow-lg"> | |
| <div class="flex items-center justify-between mb-4"> | |
| <h2 class="text-lg font-semibold flex items-center space-x-2"> | |
| <i data-feather="user" class="w-5 h-5"></i> | |
| <span>VRM Model</span> | |
| </h2> | |
| <button class="text-indigo-400 hover:text-indigo-300"> | |
| <i data-feather="refresh-cw" class="w-5 h-5"></i> | |
| </button> | |
| </div> | |
| <div class="space-y-4"> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Model File</label> | |
| <div class="flex space-x-2"> | |
| <input type="text" placeholder="Select VRM file..." class="flex-1 bg-gray-800 border border-gray-700 rounded-lg py-2 px-3 focus:outline-none focus:ring-2 focus:ring-indigo-500"> | |
| <button class="bg-gray-800 hover:bg-gray-700 text-white rounded-lg px-4 transition hovered-element" data-click-bound="true"> | |
| Browse | |
| </button> | |
| </div> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Model Scale</label> | |
| <input type="range" min="0.5" max="2" step="0.1" value="1" class="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer"> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Animation</label> | |
| <select class="w-full bg-gray-800 border border-gray-700 rounded-lg py-2 px-3 focus:outline-none focus:ring-2 focus:ring-indigo-500"> | |
| <option>Idle</option> | |
| <option>Happy</option> | |
| <option>Thoughtful</option> | |
| <option>Listening</option> | |
| </select> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- AI Settings --> | |
| <div class="settings-card rounded-xl p-6 shadow-lg"> | |
| <div class="flex items-center justify-between mb-4"> | |
| <h2 class="text-lg font-semibold flex items-center space-x-2"> | |
| <i data-feather="cpu" class="w-5 h-5"></i> | |
| <span>AI Configuration</span> | |
| </h2> | |
| <button class="text-indigo-400 hover:text-indigo-300"> | |
| <i data-feather="info" class="w-5 h-5"></i> | |
| </button> | |
| </div> | |
| <div class="space-y-4"> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Personality</label> | |
| <select class="w-full bg-gray-800 border border-gray-700 rounded-lg py-2 px-3 focus:outline-none focus:ring-2 focus:ring-indigo-500"> | |
| <option>Friendly</option> | |
| <option>Professional</option> | |
| <option>Casual</option> | |
| <option>Humorous</option> | |
| </select> | |
| </div> | |
| <div> | |
| <label class="flex items-center space-x-2"> | |
| <input type="checkbox" class="rounded bg-gray-800 border-gray-700 text-indigo-600 focus:ring-indigo-500"> | |
| <span class="text-sm">Enable Voice Responses</span> | |
| </label> | |
| </div> | |
| <div> | |
| <label class="flex items-center space-x-2"> | |
| <input type="checkbox" class="rounded bg-gray-800 border-gray-700 text-indigo-600 focus:ring-indigo-500" checked> | |
| <span class="text-sm">Enable Local Processing</span> | |
| </label> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Appearance --> | |
| <div class="settings-card rounded-xl p-6 shadow-lg"> | |
| <div class="flex items-center justify-between mb-4"> | |
| <h2 class="text-lg font-semibold flex items-center space-x-2"> | |
| <i data-feather="eye" class="w-5 h-5"></i> | |
| <span>Appearance</span> | |
| </h2> | |
| </div> | |
| <div class="space-y-4"> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Theme</label> | |
| <div class="flex space-x-2"> | |
| <button class="flex-1 py-2 px-3 rounded-lg border border-gray-700 bg-gray-800"> | |
| Dark | |
| </button> | |
| <button class="flex-1 py-2 px-3 rounded-lg border border-gray-700 hover:bg-gray-800"> | |
| Light | |
| </button> | |
| <button class="flex-1 py-2 px-3 rounded-lg border border-gray-700 hover:bg-gray-800"> | |
| System | |
| </button> | |
| </div> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Accent Color</label> | |
| <div class="grid grid-cols-5 gap-2"> | |
| <button class="h-8 rounded-full bg-indigo-600 border-2 border-indigo-400"></button> | |
| <button class="h-8 rounded-full bg-blue-600"></button> | |
| <button class="h-8 rounded-full bg-green-600"></button> | |
| <button class="h-8 rounded-full bg-yellow-600"></button> | |
| <button class="h-8 rounded-full bg-red-600"></button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- System --> | |
| <div class="settings-card rounded-xl p-6 shadow-lg"> | |
| <div class="flex items-center justify-between mb-4"> | |
| <h2 class="text-lg font-semibold flex items-center space-x-2"> | |
| <i data-feather="settings" class="w-5 h-5"></i> | |
| <span>System</span> | |
| </h2> | |
| </div> | |
| <div class="space-y-4"> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Performance Mode</label> | |
| <select class="w-full bg-gray-800 border border-gray-700 rounded-lg py-2 px-3 focus:outline-none focus:ring-2 focus:ring-indigo-500"> | |
| <option>Balanced</option> | |
| <option>Performance</option> | |
| <option>Battery Saver</option> | |
| </select> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-1">Resource Usage</label> | |
| <div class="bg-gray-800 rounded-lg p-3 text-sm"> | |
| <div class="flex justify-between mb-1"> | |
| <span>CPU</span> | |
| <span>12%</span> | |
| </div> | |
| <div class="w-full bg-gray-700 rounded-full h-1.5"> | |
| <div class="bg-indigo-600 h-1.5 rounded-full" style="width: 12%"></div> | |
| </div> | |
| <div class="flex justify-between mt-3 mb-1"> | |
| <span>GPU</span> | |
| <span>24%</span> | |
| </div> | |
| <div class="w-full bg-gray-700 rounded-full h-1.5"> | |
| <div class="bg-indigo-600 h-1.5 rounded-full" style="width: 24%"></div> | |
| </div> | |
| <div class="flex justify-between mt-3 mb-1"> | |
| <span>Memory</span> | |
| <span>1.2GB / 8GB</span> | |
| </div> | |
| <div class="w-full bg-gray-700 rounded-full h-1.5"> | |
| <div class="bg-indigo-600 h-1.5 rounded-full" style="width: 15%"></div> | |
| </div> | |
| </div> | |
| </div> | |
| <button class="w-full mt-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg transition"> | |
| Show Advanced Settings | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| // Initialize Feather Icons | |
| feather.replace(); | |
| // Add event handlers to all interactive elements | |
| document.querySelectorAll('button, input[type="checkbox"], select, input[type="range"]').forEach(element => { | |
| if (!element.hasAttribute('data-click-bound')) { | |
| element.addEventListener('click', (e) => { | |
| e.preventDefault(); | |
| if (element.tagName === 'BUTTON') { | |
| // Handle theme buttons | |
| if (element.parentElement.classList.contains('flex') && | |
| element.parentElement.classList.contains('space-x-2')) { | |
| element.parentElement.querySelectorAll('button').forEach(btn => { | |
| btn.classList.remove('bg-gray-800'); | |
| btn.classList.add('hover:bg-gray-800'); | |
| }); | |
| element.classList.add('bg-gray-800'); | |
| element.classList.remove('hover:bg-gray-800'); | |
| return; | |
| } | |
| // Handle color buttons | |
| if (element.parentElement.classList.contains('grid') && | |
| element.parentElement.classList.contains('grid-cols-5')) { | |
| element.parentElement.querySelectorAll('button').forEach(btn => { | |
| btn.classList.remove('border-2', 'border-indigo-400'); | |
| }); | |
| element.classList.add('border-2', 'border-indigo-400'); | |
| return; | |
| } | |
| // Handle other buttons | |
| alert(`Button clicked: ${element.querySelector('i')?.getAttribute('data-feather') || 'Settings action'}`); | |
| } | |
| }); | |
| element.setAttribute('data-click-bound', 'true'); | |
| } | |
| }); | |
| </script> | |
| </body> | |
| </html> | |