forked from React-Group/interstellar_ai
		
	
		
			
				
	
	
		
			244 lines
		
	
	
		
			No EOL
		
	
	
		
			8.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			No EOL
		
	
	
		
			8.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import React, { useState } from'react';
 | |
| 
 | |
| const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ({ closeSettings, accountName }) => {
 | |
|   const [activeSection, setActiveSection] = useState('general');
 | |
| 
 | |
|   const renderSettingsContent = () => {
 | |
|     switch (activeSection) {
 | |
|       case 'general':
 | |
|         return (
 | |
|           <div className="settings-section">
 | |
|             <h2>General Settings</h2>
 | |
|             <div className="settings-option">
 | |
|               <p>Change Language</p>
 | |
|               <select>
 | |
|                 <option value="en">English</option>
 | |
|                 <option value="es">Spanish</option>
 | |
|                 <option value="fr">French</option>
 | |
|                 <option value="de">German</option>
 | |
|                 <option value="it">Italian</option>
 | |
|                 <option value="pt">Portuguese</option>
 | |
|                 <option value="zh">Chinese</option>
 | |
|                 <option value="ja">Japanese</option>
 | |
|                 <option value="ko">Korean</option>
 | |
|                 <option value="ar">Arabic</option>
 | |
|                 <option value="ru">Russian</option>
 | |
|                 <option value="he">Hebrew</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Notifications</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Enable notifications
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Notification Frequency</p>
 | |
|               <select>
 | |
|                 <option value="instant">Instant</option>
 | |
|                 <option value="daily">Daily</option>
 | |
|                 <option value="weekly">Weekly</option>
 | |
|                 <option value="monthly">Monthly</option>
 | |
|                 <option value="quarterly">Quarterly</option>
 | |
|                 <option value="annually">Annually</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Time Zone</p>
 | |
|               <select>
 | |
|                 <option value="utc">UTC</option>
 | |
|                 <option value="est">EST</option>
 | |
|                 <option value="pst">PST</option>
 | |
|                 <option value="gmt">GMT</option>
 | |
|                 <option value="cst">CST</option>
 | |
|                 <option value="mst">MST</option>
 | |
|                 <option value="bst">BST</option>
 | |
|                 <option value="cest">CEST</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Auto-Save</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Enable auto-save
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Auto-Save Frequency</p>
 | |
|               <select>
 | |
|                 <option value="5">Every 5 minutes</option>
 | |
|                 <option value="10">Every 10 minutes</option>
 | |
|                 <option value="15">Every 15 minutes</option>
 | |
|                 <option value="30">Every 30 minutes</option>
 | |
|                 <option value="60">Every hour</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Default Currency</p>
 | |
|               <select>
 | |
|                 <option value="usd">USD</option>
 | |
|                 <option value="eur">EUR</option>
 | |
|                 <option value="gbp">GBP</option>
 | |
|                 <option value="jpy">JPY</option>
 | |
|                 <option value="cny">CNY</option>
 | |
|                 <option value="aud">AUD</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Date Format</p>
 | |
|               <select>
 | |
|                 <option value="mm/dd/yyyy">MM/DD/YYYY</option>
 | |
|                 <option value="dd/mm/yyyy">DD/MM/YYYY</option>
 | |
|                 <option value="yyyy-mm-dd">YYYY-MM-DD</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Time Format</p>
 | |
|               <select>
 | |
|                 <option value="12-hour">12-hour clock</option>
 | |
|                 <option value="24-hour">24-hour clock</option>
 | |
|               </select>
 | |
|             </div>
 | |
|           </div>
 | |
|         );
 | |
|       case 'privacy':
 | |
|         return (
 | |
|           <div className="settings-section">
 | |
|             <h2>Privacy Settings</h2>
 | |
|             <div className="settings-option">
 | |
|               <p>Data Collection</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Allow data collection
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Location Access</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Enable location access
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Two-Factor Authentication</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Enable 2FA
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Data Export</p>
 | |
|               <button>Export Data</button>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Cookie Policy</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Accept cookie policy
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>GDPR Compliance</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> I agree to GDPR terms
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>CCPA Compliance</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> I agree to CCPA terms
 | |
|               </label>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Biometric Data</p>
 | |
|               <label>
 | |
|                 <input type="checkbox" /> Allow biometric data collection
 | |
|               </label>
 | |
|             </div>
 | |
|           </div>
 | |
|         );
 | |
|       case 'theme':
 | |
|         return (
 | |
|           <div className="settings-section">
 | |
|             <h2>Theme Settings</h2>
 | |
|             <div className="settings-option">
 | |
|               <p>Choose Theme Color</p>
 | |
|               <input type="color" />
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Font Size</p>
 | |
|               <input type="range" min="10" max="30" />
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Background Pattern</p>
 | |
|               <select>
 | |
|                 <option value="solid">Solid</option>
 | |
|                 <option value="striped">Striped</option>
 | |
|                 <option value="dots">Dotted</option>
 | |
|                 <option value="grid">Grid</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Font Family</p>
 | |
|               <select>
 | |
|                 <option value="arial">Arial</option>
 | |
|                 <option value="calibri">Calibri</option>
 | |
|                 <option value="helvetica">Helvetica</option>
 | |
|               </select>
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Button Style</p>
 | |
|               <select>
 | |
|                 <option value="flat">Flat</option>
 | |
|                 <option value="raised">Raised</option>
 | |
|                 <option value="rounded">Rounded</option>
 | |
|               </select>
 | |
|             </div>
 | |
|           </div>
 | |
|         );
 | |
|       case 'account':
 | |
|         return (
 | |
|           <div className="settings-section">
 | |
|             <h2>Account Settings</h2>
 | |
|             <div className="settings-option">
 | |
|               <p>Change Name</p>
 | |
|               <input type="text" placeholder="New Name" />
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Change Email</p>
 | |
|               <input type="email" placeholder="New Email" />
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Change Password</p>
 | |
|               <input type="password" placeholder="New Password" />
 | |
|             </div>
 | |
|             <div className="settings-option">
 | |
|               <p>Delete Account</p>
 | |
|               <button>Delete Account</button>
 | |
|             </div>
 | |
|           </div>
 | |
|         );
 | |
|       default:
 | |
|         return null;
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   return (
 | |
|     <div className="popup-overlay">
 | |
|       <div className="settings-content">
 | |
|         <div className="settings-container">
 | |
|           <div className="sidebar">
 | |
|             <ul>
 | |
|               <li onClick={() => setActiveSection('general')}>General</li>
 | |
|               <li onClick={() => setActiveSection('privacy')}>Privacy</li>
 | |
|               <li onClick={() => setActiveSection('theme')}>Theme</li>
 | |
|               <li onClick={() => setActiveSection('account')}>Account</li>
 | |
|             </ul>
 | |
|           </div>
 | |
|           <div className="settings-main">
 | |
|             <h2>Settings for {accountName}</h2>
 | |
|             {renderSettingsContent()}
 | |
|             <button className="close-popup" onClick={closeSettings}>Close</button>
 | |
|           </div>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
|   );
 | |
| };
 | |
| 
 | |
| export default Settings; |