2024-09-19 12:18:04 +02:00
|
|
|
"use client";
|
2024-09-18 09:47:23 +02:00
|
|
|
import React, { useState, useEffect, useRef } from 'react';
|
2024-09-20 10:34:16 +02:00
|
|
|
import Header from './components/Header';
|
|
|
|
import AI from './components/AI';
|
|
|
|
import FAQ from './components/Faq'; // Ensure the import path is correct
|
|
|
|
import Documentation from './components/Documentation'; // Ensure the import path is correct
|
|
|
|
import History from './components/History';
|
|
|
|
import Models from './components/Models';
|
2024-09-25 12:12:19 +02:00
|
|
|
import Credits from './components/Credits';
|
2024-10-01 09:29:52 +02:00
|
|
|
import Settings from './components/settings/Settings';
|
|
|
|
import { applyIOMarketTheme, applyWhiteTheme, applyBlackTheme, applyCustomTheme } from './components/settings/theme'
|
2024-09-26 14:38:59 +02:00
|
|
|
import Head from 'next/head';
|
2024-09-18 11:17:34 +02:00
|
|
|
import './styles/master.css';
|
2024-09-18 09:47:23 +02:00
|
|
|
|
2024-09-18 10:03:36 +02:00
|
|
|
const LandingPage: React.FC = () => {
|
|
|
|
const [showDivs, setShowDivs] = useState(true);
|
2024-09-25 12:12:19 +02:00
|
|
|
const [view, setView] = useState<'AI' | 'FAQ' | 'Documentation' | 'Credits'>('AI'); // Added 'Credits' here
|
2024-09-18 09:47:23 +02:00
|
|
|
const conversationRef = useRef<HTMLDivElement>(null);
|
|
|
|
|
|
|
|
const toggleDivs = () => {
|
|
|
|
setShowDivs(prevState => !prevState);
|
|
|
|
};
|
|
|
|
|
2024-09-25 12:12:19 +02:00
|
|
|
const handleViewChange = (view: 'AI' | 'FAQ' | 'Documentation' | 'Credits') => { // Added 'Credits' here as well
|
2024-09-19 09:54:00 +02:00
|
|
|
setView(view);
|
|
|
|
if (view !== 'AI') {
|
|
|
|
setShowDivs(false);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2024-09-30 16:07:01 +02:00
|
|
|
const [selectedTheme, setSelectedTheme] = useState<string>('');
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const savedTheme = localStorage.getItem('selectedTheme');
|
|
|
|
if (savedTheme) {
|
|
|
|
setSelectedTheme(savedTheme);
|
|
|
|
// Apply the saved theme on initial load
|
|
|
|
switch (savedTheme) {
|
|
|
|
case 'IOMARKET':
|
|
|
|
applyIOMarketTheme();
|
|
|
|
break;
|
|
|
|
case 'WHITE':
|
|
|
|
applyWhiteTheme();
|
|
|
|
break;
|
|
|
|
case 'BLACK':
|
|
|
|
applyBlackTheme();
|
|
|
|
break;
|
|
|
|
case 'CUSTOM':
|
2024-09-30 16:12:04 +02:00
|
|
|
applyCustomTheme();
|
2024-09-30 16:07:01 +02:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
applyIOMarketTheme();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, []); // Runs only once when the component mounts
|
|
|
|
|
2024-09-18 09:47:23 +02:00
|
|
|
return (
|
2024-09-26 14:38:59 +02:00
|
|
|
<>
|
|
|
|
<Header
|
|
|
|
toggleDivs={toggleDivs}
|
|
|
|
showDivs={showDivs}
|
|
|
|
onViewChange={handleViewChange}
|
|
|
|
showHistoryModelsToggle={true}
|
|
|
|
showToggle={view === 'AI'} // Pass the condition here
|
|
|
|
/>
|
2024-09-27 16:48:17 +02:00
|
|
|
<div className="container">
|
2024-09-26 14:38:59 +02:00
|
|
|
<div className={`left-panel ${showDivs ? 'visible' : 'hidden'}`}>
|
|
|
|
{showDivs && (
|
|
|
|
<div className="history-models">
|
|
|
|
<History />
|
|
|
|
<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>
|
2024-09-19 12:18:04 +02:00
|
|
|
</div>
|
2024-09-26 14:38:59 +02:00
|
|
|
</>
|
2024-09-18 09:47:23 +02:00
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2024-09-18 10:03:36 +02:00
|
|
|
export default LandingPage;
|