forked from React-Group/interstellar_ai
		
	main #28
					 6 changed files with 63 additions and 38 deletions
				
			
		|  | @ -11,7 +11,7 @@ const Login: React.FC = () => { | ||||||
|   // Credentials state
 |   // Credentials state
 | ||||||
|   const [email, setEmail] = useState(''); |   const [email, setEmail] = useState(''); | ||||||
|   const [password, setPassword] = useState(''); |   const [password, setPassword] = useState(''); | ||||||
|   const [accountName, setAccountName] = useState(''); // Set the account name
 |   const [accountName, setAccountName] = useState(''); | ||||||
|   const [newAccountEmail, setNewAccountEmail] = useState(''); |   const [newAccountEmail, setNewAccountEmail] = useState(''); | ||||||
|   const [newAccountPassword, setNewAccountPassword] = useState(''); |   const [newAccountPassword, setNewAccountPassword] = useState(''); | ||||||
|   const [newAccountName, setNewAccountName] = useState(''); |   const [newAccountName, setNewAccountName] = useState(''); | ||||||
|  | @ -27,7 +27,7 @@ const Login: React.FC = () => { | ||||||
|   // Function to toggle the sign-up popup
 |   // Function to toggle the sign-up popup
 | ||||||
|   const toggleSignUpPopup = () => { |   const toggleSignUpPopup = () => { | ||||||
|     setShowSignUpPopup(!showSignUpPopup); |     setShowSignUpPopup(!showSignUpPopup); | ||||||
|     setShowLoginPopup(false); // Hide login popup when opening the sign-up popup
 |     setShowLoginPopup(false); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   // Function to handle login
 |   // Function to handle login
 | ||||||
|  | @ -40,6 +40,11 @@ const Login: React.FC = () => { | ||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   const handleLogout = () => { | ||||||
|  |     setIsLoggedIn(false); | ||||||
|  |     setShowSettingsPopup(false); // Optionally close settings popup on logout
 | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   // Function to handle account creation
 |   // Function to handle account creation
 | ||||||
|   const handleCreateAccount = () => { |   const handleCreateAccount = () => { | ||||||
|     console.log('New Account Created:', newAccountEmail, newAccountPassword); |     console.log('New Account Created:', newAccountEmail, newAccountPassword); | ||||||
|  | @ -53,7 +58,6 @@ const Login: React.FC = () => { | ||||||
|   return ( |   return ( | ||||||
|     <div> |     <div> | ||||||
|       {/* Login or Settings Button */} |       {/* Login or Settings Button */} | ||||||
| 
 |  | ||||||
|       <button className='header-login-button' onClick={isLoggedIn ? toggleSettingsPopup : toggleLoginPopup}> |       <button className='header-login-button' onClick={isLoggedIn ? toggleSettingsPopup : toggleLoginPopup}> | ||||||
|         {isLoggedIn ? 'Settings' : 'Log In'} |         {isLoggedIn ? 'Settings' : 'Log In'} | ||||||
|       </button> |       </button> | ||||||
|  | @ -124,13 +128,13 @@ const Login: React.FC = () => { | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
| 
 | 
 | ||||||
|              {/* New Account Name Input */} |             {/* New Account Name Input */} | ||||||
|              <div> |             <div> | ||||||
|               <input |               <input | ||||||
|                 type="text" |                 type="text" | ||||||
|                 placeholder="Name" |                 placeholder="Name" | ||||||
|                 value={newAccountName} |                 value={newAccountName} | ||||||
|                 onChange={(e) => setAccountName(e.target.value)} |                 onChange={(e) => setNewAccountName(e.target.value)} | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
| 
 | 
 | ||||||
|  | @ -153,12 +157,12 @@ const Login: React.FC = () => { | ||||||
|             <button className="close-popup" onClick={toggleSignUpPopup} aria-label="Close popup"> |             <button className="close-popup" onClick={toggleSignUpPopup} aria-label="Close popup"> | ||||||
|               Close |               Close | ||||||
|             </button> |             </button> | ||||||
|           </div>   |           </div> | ||||||
|         </div> |         </div> | ||||||
|       )} |       )} | ||||||
| 
 | 
 | ||||||
|       {/* Conditional rendering of the Settings Popup */} |       {/* Conditional rendering of the Settings Popup */} | ||||||
|       {showSettingsPopup && <Settings closeSettings={toggleSettingsPopup} accountName={accountName} />} |       {showSettingsPopup && <Settings closeSettings={toggleSettingsPopup} accountName={accountName}/>} | ||||||
|     </div> |     </div> | ||||||
|   ); |   ); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -19,6 +19,12 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ( | ||||||
|       return false; // Default to false if item is null or empty
 |       return false; // Default to false if item is null or empty
 | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     interface SettingsProps { | ||||||
|  |       closeSettings: () => void; | ||||||
|  |       accountName: string; | ||||||
|  |       handleLogout: () => void; // Add this line to accept handleLogout as a prop
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     // Active section
 |     // Active section
 | ||||||
|     const [activeSection, setActiveSection] = useState(() => localStorage.getItem('activeSection') || 'general'); |     const [activeSection, setActiveSection] = useState(() => localStorage.getItem('activeSection') || 'general'); | ||||||
| 
 | 
 | ||||||
|  | @ -842,6 +848,16 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ( | ||||||
|                 onChange={(e) => setNewPassword(e.target.value)} |                 onChange={(e) => setNewPassword(e.target.value)} | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
|  |             <div className="settings-option"> | ||||||
|  |               <button | ||||||
|  |                 onClick={() => { | ||||||
|  |                   closeSettings(); // Optionally close settings after logout
 | ||||||
|  |                 }} | ||||||
|  |                 className="logout-button" | ||||||
|  |               > | ||||||
|  |                 Logout | ||||||
|  |               </button> | ||||||
|  |             </div> | ||||||
|           </div> |           </div> | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -19,4 +19,5 @@ export const exportSettings = (settings: any) => { | ||||||
|     }; |     }; | ||||||
|     reader.readAsText(file); |     reader.readAsText(file); | ||||||
|   }; |   }; | ||||||
|  | 
 | ||||||
|    |    | ||||||
|  | @ -1,18 +1,19 @@ | ||||||
| import Header from "./components/Header"; | import { ReactNode } from 'react'; | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| export const metadata = { | export const metadata = { | ||||||
|   title: 'AI Assistant | Interstellar Development', |   title: 'AI Assistant | Interstellar Development', | ||||||
|   description: 'A little AI chat that is able to assist you in little tasks', |   description: 'A little AI chat that is able to assist you in little tasks', | ||||||
| } | }; | ||||||
| 
 | 
 | ||||||
| export default function RootLayout({ | export default function RootLayout({ children }: { children: ReactNode }) { | ||||||
|   children, |  | ||||||
| }: { |  | ||||||
|   children: React.ReactNode |  | ||||||
| }) { |  | ||||||
|   return ( |   return ( | ||||||
|     <html lang="en"> |     <html lang="en"> | ||||||
|  |       <head> | ||||||
|  |         <title>{metadata.title}</title> | ||||||
|  |         <meta name="description" content={metadata.description} /> | ||||||
|  |         {/* Tried adding the favicon here */} | ||||||
|  |         <link rel="icon" href="./public/favicon.ico" type="image/x-icon" /> | ||||||
|  |       </head> | ||||||
|       <body> |       <body> | ||||||
|         <main>{children}</main> |         <main>{children}</main> | ||||||
|       </body> |       </body> | ||||||
|  |  | ||||||
							
								
								
									
										47
									
								
								app/page.tsx
									
										
									
									
									
								
							
							
						
						
									
										47
									
								
								app/page.tsx
									
										
									
									
									
								
							|  | @ -7,6 +7,7 @@ import Documentation from './components/Documentation'; // Ensure the import pat | ||||||
| import History from './components/History'; | import History from './components/History'; | ||||||
| import Models from './components/Models'; | import Models from './components/Models'; | ||||||
| import Credits from './components/Credits'; | import Credits from './components/Credits'; | ||||||
|  | import Head from 'next/head'; | ||||||
| import './styles/master.css'; | import './styles/master.css'; | ||||||
| 
 | 
 | ||||||
| const LandingPage: React.FC = () => { | const LandingPage: React.FC = () => { | ||||||
|  | @ -51,29 +52,31 @@ const LandingPage: React.FC = () => { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   return ( |   return ( | ||||||
|     <div className="container"> |     <> | ||||||
|       <Header |       <div className="container"> | ||||||
|         toggleDivs={toggleDivs} |         <Header | ||||||
|         showDivs={showDivs} |           toggleDivs={toggleDivs} | ||||||
|         onViewChange={handleViewChange} |           showDivs={showDivs} | ||||||
|         showHistoryModelsToggle={true} |           onViewChange={handleViewChange} | ||||||
|         showToggle={view === 'AI'} // Pass the condition here
 |           showHistoryModelsToggle={true} | ||||||
|       /> |           showToggle={view === 'AI'} // Pass the condition here
 | ||||||
|       <div className={`left-panel ${showDivs ? 'visible' : 'hidden'}`}> |           /> | ||||||
|         {showDivs && ( |         <div className={`left-panel ${showDivs ? 'visible' : 'hidden'}`}> | ||||||
|           <div className="history-models"> |           {showDivs && ( | ||||||
|             <History /> |             <div className="history-models"> | ||||||
|             <Models /> |               <History /> | ||||||
|           </div> |               <Models /> | ||||||
|         )} |             </div> | ||||||
|  |           )} | ||||||
|  |         </div> | ||||||
|  |         <div className={`conversation-container ${showDivs ? 'collapsed' : 'expanded'}`} ref={conversationRef}> | ||||||
|  |           {view === 'AI' && <AI />} | ||||||
|  |           {view === 'FAQ' && <FAQ />} | ||||||
|  |           {view === 'Documentation' && <Documentation />} | ||||||
|  |           {view === 'Credits' && <Credits />} {/* Now Credits will render properly */} | ||||||
|  |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div className={`conversation-container ${showDivs ? 'collapsed' : 'expanded'}`} ref={conversationRef}> |     </> | ||||||
|         {view === 'AI' && <AI />} |  | ||||||
|         {view === 'FAQ' && <FAQ />} |  | ||||||
|         {view === 'Documentation' && <Documentation />} |  | ||||||
|         {view === 'Credits' && <Credits />} {/* Now Credits will render properly */} |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   ); |   ); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								public/favicon.ico
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/favicon.ico
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 4.2 KiB | 
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue