From 1f35b83322ce2c38eaf99b501095515ece5b54f3 Mon Sep 17 00:00:00 2001
From: sageTheDM <info@photofuel.tech>
Date: Mon, 30 Sep 2024 16:07:01 +0200
Subject: [PATCH 1/2] Dear god have mercy

---
 app/components/Settings.tsx | 1119 +++++++++++++++++++++--------------
 app/components/theme.ts     |   62 +-
 app/page.tsx                |   29 +
 3 files changed, 757 insertions(+), 453 deletions(-)

diff --git a/app/components/Settings.tsx b/app/components/Settings.tsx
index 48e452c..bb203d3 100644
--- a/app/components/Settings.tsx
+++ b/app/components/Settings.tsx
@@ -11,6 +11,7 @@ import {
   checkCredentials,
   deleteAccount,
 } from '../backend/database';
+import { equal } from 'assert';
 
 const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ({ closeSettings, accountName }) => {
 
@@ -85,9 +86,43 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
     const [fontFamily, setFontFamily] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--font-family').trim());
     const [fontSize, setFontSize] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--font-size').trim());
     const [burgerMenu, setBurgerMenu] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--burger-menu-background-color').trim());
+    const [faqBackgroundColor, setFaqBackgroundColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--faq-background-color').trim());
+    const [faqHeadingColor, setFaqHeadingColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--faq-heading-color').trim());
+    const [faqItemBackgroundColor, setFaqItemBackgroundColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--faq-item-background-color').trim());
+    const [faqItemHeadingColor, setFaqItemHeadingColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--faq-item-heading-color').trim());
+    const [faqItemTextColor, setFaqItemTextColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--faq-item-text-color').trim());
+    const [faqItemHoverBackgroundColor, setFaqItemHoverBackgroundColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--faq-item-hover-background-color').trim());
+    const [popupBackgroundColor, setPopupBackgroundColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--popup-background-color').trim());
+    const [overlayTextColor, setOverlayTextColor] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--overlay-text-color').trim());
+
 
     // Theme selection
-    const [selectedTheme, setSelectedTheme] = useState(() => localStorage.getItem('selectedTheme') || 'default');
+    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':
+            // Handle custom theme application here if necessary
+            break;
+          default:
+            applyIOMarketTheme();
+            break;
+        }
+      }   
+    }, []); // Runs only once when the component mounts
 
     // API Keys
     const [mistral, setmistral] = useState(() => getComputedStyle(document.documentElement).getPropertyValue('--online-la-plateforme').trim());
@@ -146,9 +181,17 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
           openai,
           anthropic,
           google,
+          // Additional theme settings
+          faqBackgroundColor,
+          faqHeadingColor,
+          faqItemBackgroundColor,
+          faqItemHeadingColor,
+          faqItemTextColor,
+          faqItemHoverBackgroundColor,
+          popupBackgroundColor,
+          overlayTextColor,
       };
-
-      // Update local storage
+        // Update local storage
       for (const [key, value] of Object.entries(settings)) {
           if (typeof value === 'boolean') {
               localStorage.setItem(key, JSON.stringify(value));
@@ -157,45 +200,54 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
           }
       }
   }, [
-      activeSection,
-      preferredLanguage,
-      preferredCurrency,
-      dateFormat,
-      timeFormat,
-      timeZone,
-      selectedOption,
-      disableChatHistory,
-      disableAIMemory,
-      openSourceMode,
-      newName,
-      newEmail,
-      newPassword,
-      preferredMeasurement,
-      backgroundColor,
-      textColor,
-      inputBackgroundColor,
-      inputButtonColor,
-      inputButtonHoverColor,
-      userMessageBackgroundColor,
-      userMessageTextColor,
-      aiMessageBackgroundColor,
-      aiMessageTextColor,
-      buttonBackgroundColor,
-      buttonHoverBackgroundColor,
-      modelsBackgroundColor,
-      historyBackgroundColor,
-      leftPanelBackgroundColor,
-      conversationBackgroundColor,
-      popUpTextColor,
-      inputBorderColor,
-      fontFamily,
-      fontSize,
-      burgerMenu,
-      selectedTheme,
-      mistral,
-      openai,
-      anthropic,
-      google,
+    activeSection,
+    preferredLanguage,
+    preferredCurrency,
+    dateFormat,
+    timeFormat,
+    timeZone,
+    selectedOption,
+    disableChatHistory,
+    disableAIMemory,
+    openSourceMode,
+    newName,
+    newEmail,
+    newPassword,
+    preferredMeasurement,
+    backgroundColor,
+    textColor,
+    inputBackgroundColor,
+    inputButtonColor,
+    inputButtonHoverColor,
+    userMessageBackgroundColor,
+    userMessageTextColor,
+    aiMessageBackgroundColor,
+    aiMessageTextColor,
+    buttonBackgroundColor,
+    buttonHoverBackgroundColor,
+    modelsBackgroundColor,
+    historyBackgroundColor,
+    leftPanelBackgroundColor,
+    conversationBackgroundColor,
+    popUpTextColor,
+    inputBorderColor,
+    fontFamily,
+    fontSize,
+    burgerMenu,
+    selectedTheme,
+    mistral,
+    openai,
+    anthropic,
+    google,
+    // Additional theme settings
+    faqBackgroundColor,
+    faqHeadingColor,
+    faqItemBackgroundColor,
+    faqItemHeadingColor,
+    faqItemTextColor,
+    faqItemHoverBackgroundColor,
+    popupBackgroundColor,
+    overlayTextColor,
   ]);
 
   useEffect(() => {
@@ -214,107 +266,141 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
   };
 
   // Apply imported settings to the CSS variables
-  const applySettings = (settings: any) => {
-    if (settings.backgroundColor) {
-      setBackgroundColor(settings.backgroundColor);
-      document.documentElement.style.setProperty('--background-color', settings.backgroundColor);
-    }
-    
-    if (settings.textColor) {
-      setTextColor(settings.textColor);
-      document.documentElement.style.setProperty('--text-color', settings.textColor);
-    }
-    
-    if (settings.inputBackgroundColor) {
-      setInputBackgroundColor(settings.inputBackgroundColor);
-      document.documentElement.style.setProperty('--input-background-color', settings.inputBackgroundColor);
-    }
-    
-    if (settings.inputButtonColor) {
-      setInputButtonColor(settings.inputButtonColor);
-      document.documentElement.style.setProperty('--input-button-color', settings.inputButtonColor);
-    }
-    
-    if (settings.inputButtonHoverColor) {
-      setInputButtonHoverColor(settings.inputButtonHoverColor);
-      document.documentElement.style.setProperty('--input-button-hover-color', settings.inputButtonHoverColor);
-    }
-    
-    if (settings.userMessageBackgroundColor) {
-      setUserMessageBackgroundColor(settings.userMessageBackgroundColor);
-      document.documentElement.style.setProperty('--user-message-background-color', settings.userMessageBackgroundColor);
-    }
-    
-    if (settings.userMessageTextColor) {
-      setUserMessageTextColor(settings.userMessageTextColor);
-      document.documentElement.style.setProperty('--user-message-text-color', settings.userMessageTextColor);
-    }
-    
-    if (settings.aiMessageBackgroundColor) {
-      setAiMessageBackgroundColor(settings.aiMessageBackgroundColor);
-      document.documentElement.style.setProperty('--ai-message-background-color', settings.aiMessageBackgroundColor);
-    }
-    
-    if (settings.aiMessageTextColor) {
-      setAiMessageTextColor(settings.aiMessageTextColor);
-      document.documentElement.style.setProperty('--ai-message-text-color', settings.aiMessageTextColor);
-    }
-    
-    if (settings.buttonBackgroundColor) {
-      setButtonBackgroundColor(settings.buttonBackgroundColor);
-      document.documentElement.style.setProperty('--button-background-color', settings.buttonBackgroundColor);
-    }
-    
-    if (settings.buttonHoverBackgroundColor) {
-      setButtonHoverBackgroundColor(settings.buttonHoverBackgroundColor);
-      document.documentElement.style.setProperty('--button-hover-background-color', settings.buttonHoverBackgroundColor);
-    }
-    
-    if (settings.modelsBackgroundColor) {
-      setModelsBackgroundColor(settings.modelsBackgroundColor);
-      document.documentElement.style.setProperty('--models-background-color', settings.modelsBackgroundColor);
-    }
-    
-    if (settings.historyBackgroundColor) {
-      setHistoryBackgroundColor(settings.historyBackgroundColor);
-      document.documentElement.style.setProperty('--history-background-color', settings.historyBackgroundColor);
-    }
-    
-    if (settings.leftPanelBackgroundColor) {
-      setLeftPanelBackgroundColor(settings.leftPanelBackgroundColor);
-      document.documentElement.style.setProperty('--left-panel-background-color', settings.leftPanelBackgroundColor);
-    }
-    
-    if (settings.conversationBackgroundColor) {
-      setConversationBackgroundColor(settings.conversationBackgroundColor);
-      document.documentElement.style.setProperty('--conversation-background-color', settings.conversationBackgroundColor);
-    }
-    
-    if (settings.popUpTextColor) {
-      setPopUpTextColor(settings.popUpTextColor);
-      document.documentElement.style.setProperty('--pop-up-text', settings.popUpTextColor);
-    }
-    
-    if (settings.inputBorderColor) {
-      setInputBorderColor(settings.inputBorderColor);
-      document.documentElement.style.setProperty('--input-border-color', settings.inputBorderColor);
-    }
-    
-    if (settings.fontFamily) {
-      setFontFamily(settings.fontFamily);
-      document.documentElement.style.setProperty('--font-family', settings.fontFamily);
-    }
-    
-    if (settings.fontSize) {
-      setFontSize(settings.fontSize);
-      document.documentElement.style.setProperty('--font-size', settings.fontSize);
-    }
-    
-    if (settings.burgerMenu) {
-      setBurgerMenu(settings.fontSize);
-      document.documentElement.style.setProperty('--burger-menu-background-color:', settings.burgerMenu);
-    }  
-  };
+    const applySettings = (settings: any) => {
+      if (settings.backgroundColor) {
+        setBackgroundColor(settings.backgroundColor);
+        document.documentElement.style.setProperty('--background-color', settings.backgroundColor);
+      }
+
+      if (settings.textColor) {
+        setTextColor(settings.textColor);
+        document.documentElement.style.setProperty('--text-color', settings.textColor);
+      }
+
+      if (settings.inputBackgroundColor) {
+        setInputBackgroundColor(settings.inputBackgroundColor);
+        document.documentElement.style.setProperty('--input-background-color', settings.inputBackgroundColor);
+      }
+
+      if (settings.inputButtonColor) {
+        setInputButtonColor(settings.inputButtonColor);
+        document.documentElement.style.setProperty('--input-button-color', settings.inputButtonColor);
+      }
+
+      if (settings.inputButtonHoverColor) {
+        setInputButtonHoverColor(settings.inputButtonHoverColor);
+        document.documentElement.style.setProperty('--input-button-hover-color', settings.inputButtonHoverColor);
+      }
+
+      if (settings.userMessageBackgroundColor) {
+        setUserMessageBackgroundColor(settings.userMessageBackgroundColor);
+        document.documentElement.style.setProperty('--user-message-background-color', settings.userMessageBackgroundColor);
+      }
+
+      if (settings.userMessageTextColor) {
+        setUserMessageTextColor(settings.userMessageTextColor);
+        document.documentElement.style.setProperty('--user-message-text-color', settings.userMessageTextColor);
+      }
+
+      if (settings.aiMessageBackgroundColor) {
+        setAiMessageBackgroundColor(settings.aiMessageBackgroundColor);
+        document.documentElement.style.setProperty('--ai-message-background-color', settings.aiMessageBackgroundColor);
+      }
+
+      if (settings.aiMessageTextColor) {
+        setAiMessageTextColor(settings.aiMessageTextColor);
+        document.documentElement.style.setProperty('--ai-message-text-color', settings.aiMessageTextColor);
+      }
+
+      if (settings.buttonBackgroundColor) {
+        setButtonBackgroundColor(settings.buttonBackgroundColor);
+        document.documentElement.style.setProperty('--button-background-color', settings.buttonBackgroundColor);
+      }
+
+      if (settings.buttonHoverBackgroundColor) {
+        setButtonHoverBackgroundColor(settings.buttonHoverBackgroundColor);
+        document.documentElement.style.setProperty('--button-hover-background-color', settings.buttonHoverBackgroundColor);
+      }
+
+      if (settings.modelsBackgroundColor) {
+        setModelsBackgroundColor(settings.modelsBackgroundColor);
+        document.documentElement.style.setProperty('--models-background-color', settings.modelsBackgroundColor);
+      }
+
+      if (settings.historyBackgroundColor) {
+        setHistoryBackgroundColor(settings.historyBackgroundColor);
+        document.documentElement.style.setProperty('--history-background-color', settings.historyBackgroundColor);
+      }
+
+      if (settings.leftPanelBackgroundColor) {
+        setLeftPanelBackgroundColor(settings.leftPanelBackgroundColor);
+        document.documentElement.style.setProperty('--left-panel-background-color', settings.leftPanelBackgroundColor);
+      }
+
+      if (settings.conversationBackgroundColor) {
+        setConversationBackgroundColor(settings.conversationBackgroundColor);
+        document.documentElement.style.setProperty('--conversation-background-color', settings.conversationBackgroundColor);
+      }
+
+      if (settings.popUpTextColor) {
+        setPopUpTextColor(settings.popUpTextColor);
+        document.documentElement.style.setProperty('--pop-up-text', settings.popUpTextColor);
+      }
+
+      if (settings.inputBorderColor) {
+        setInputBorderColor(settings.inputBorderColor);
+        document.documentElement.style.setProperty('--input-border-color', settings.inputBorderColor);
+      }
+
+      if (settings.fontFamily) {
+        setFontFamily(settings.fontFamily);
+        document.documentElement.style.setProperty('--font-family', settings.fontFamily);
+      }
+
+      if (settings.fontSize) {
+        setFontSize(settings.fontSize);
+        document.documentElement.style.setProperty('--font-size', settings.fontSize);
+      }
+
+      if (settings.burgerMenu) {
+        setBurgerMenu(settings.burgerMenu);
+        document.documentElement.style.setProperty('--burger-menu-background-color', settings.burgerMenu);
+      }
+
+      // Additional theme settings
+      if (settings.faqBackgroundColor) {
+        document.documentElement.style.setProperty('--faq-background-color', settings.faqBackgroundColor);
+      }
+
+      if (settings.faqHeadingColor) {
+        document.documentElement.style.setProperty('--faq-heading-color', settings.faqHeadingColor);
+      }
+
+      if (settings.faqItemBackgroundColor) {
+        document.documentElement.style.setProperty('--faq-item-background-color', settings.faqItemBackgroundColor);
+      }
+
+      if (settings.faqItemHeadingColor) {
+        document.documentElement.style.setProperty('--faq-item-heading-color', settings.faqItemHeadingColor);
+      }
+
+      if (settings.faqItemTextColor) {
+        document.documentElement.style.setProperty('--faq-item-text-color', settings.faqItemTextColor);
+      }
+
+      if (settings.faqItemHoverBackgroundColor) {
+        document.documentElement.style.setProperty('--faq-item-hover-background-color', settings.faqItemHoverBackgroundColor);
+      }
+
+      if (settings.popupBackgroundColor) {
+        document.documentElement.style.setProperty('--popup-background-color', settings.popupBackgroundColor);
+      }
+
+      if (settings.overlayTextColor) {
+        document.documentElement.style.setProperty('--overlay-text-color', settings.overlayTextColor);
+      }
+    };
+
 
     // Function to handle updating all credentials
     const handleUpdateCredentials = async () => {
@@ -521,330 +607,449 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
         );
 
 
-        case 'theme':
-          return (
-            <div className="settings-section">
-              <h2>Theme Settings</h2>
-        
-              {/* Dropdown to select theme */}
-              <div className="settings-option">
-                <p>Select Theme</p>
-                <select
-                  value={selectedTheme}
-                  onChange={(e) => {
-                    const theme = e.target.value; // Get the selected value from the event
-                    setSelectedTheme(theme); // Update state for selected theme
-                    
-                    // Apply the appropriate theme based on selection
-                    switch (theme) { // Use 'theme' instead of 'selectedTheme'
-                      case 'IOMARKET':
-                        applyIOMarketTheme(); // Call the function to apply the IOMARKET theme
-                        break;
-                      case 'WHITE':
-                        applyWhiteTheme(); // Call the function to apply the WHITE theme
-                        break;
-                      case 'BLACK':
-                        applyBlackTheme(); // Call the function to apply the BLACK theme
-                        break;
-                      case 'CUSTOM':
-                        // Handle custom theme logic here if necessary
-                        break;
-                      default:
-                        applyIOMarketTheme(); // Fallback to the IOMARKET theme
-                        break;
-                    }
-                  }} // Handle theme selection
-                >
-                  <option value="default">Select your style...</option>
-                  <option value="IOMARKET">IOMARKET</option>
-                  <option value="WHITE">WHITE</option>
-                  <option value="BLACK">BLACK</option>
-                  <option value="CUSTOM">CUSTOM</option>
-                </select>
-              </div>
+          case 'theme':
+            return (
+              <div className="settings-section">
+                <h2>Theme Settings</h2>
+          
+                {/* Dropdown to select theme */}
+                <div className="settings-option">
+                  <p>Select Theme</p>
+                  <select
+                    value={selectedTheme}
+                    onChange={(e) => {
+                      const theme = e.target.value;
+                      if (theme !== "default") {
+                        setSelectedTheme(theme);
+                        localStorage.setItem("selectedTheme", theme);
+          
+                        // Apply the appropriate theme based on selection
+                        switch (theme) {
+                          case 'IOMARKET':
+                            applyIOMarketTheme();
+                            break;
+                          case 'WHITE':
+                            applyWhiteTheme();
+                            break;
+                          case 'BLACK':
+                            applyBlackTheme();
+                            break;
+                          case 'CUSTOM':
+                            // Handle custom theme logic here if necessary
+                            break;
+                          default:
+                            applyIOMarketTheme();
+                            break;
+                        }
+                      }
+                    }}
+                  >
+                    <option value="default">Select your style...</option>
+                    <option value="IOMARKET">IOMARKET</option>
+                    <option value="WHITE">WHITE</option>
+                    <option value="BLACK">BLACK</option>
+                    <option value="CUSTOM">CUSTOM</option>
+                  </select>
+                </div>
+                {/* Conditionally render theme settings only if "CUSTOM" is selected */}
+                {selectedTheme === 'CUSTOM' && (
+                  <>
+                    {/* Font Size */}
+                    <div className="settings-option">
+                      <p>Font Size</p>
+                      <input
+                        type="range"
+                        min="12"
+                        max="30"
+                        value={parseInt(fontSize, 10)} // Ensure value is a number
+                        onChange={(e) => {
+                          const newSize = `${e.target.value}px`;
+                          setFontSize(newSize);
+                          document.documentElement.style.setProperty('--font-size', newSize);
+                        }}
+                      />
+                      <span>{fontSize}</span>
+                    </div>
 
-              {/* Conditionally render theme settings only if "CUSTOM" is selected */}
-              {selectedTheme === 'CUSTOM' && (
-                <>
-                  <div className="settings-option">
-                    <p>Font Size</p>
-                    <input
-                      type="range"
-                      min="12"
-                      max="30"
-                      value={parseInt(fontSize, 10)} // Ensure value is a number
-                      onChange={(e) => {
-                        const newSize = `${e.target.value}px`;
-                        setFontSize(newSize);
-                        document.documentElement.style.setProperty('--font-size', newSize);
-                      }}
-                    />
-                    <span>{fontSize}</span>
-                  </div>
+                    {/* Background Color */}
+                    <div className="settings-option">
+                      <p>Background Color</p>
+                      <input
+                        type="color"
+                        value={backgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Background Color</p>
-                    <input
-                      type="color"
-                      value={backgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Text Color */}
+                    <div className="settings-option">
+                      <p>Text Color</p>
+                      <input
+                        type="color"
+                        value={textColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setTextColor(newColor);
+                          document.documentElement.style.setProperty('--text-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Text Color</p>
-                    <input
-                      type="color"
-                      value={textColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setTextColor(newColor);
-                        document.documentElement.style.setProperty('--text-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Input Background Color */}
+                    <div className="settings-option">
+                      <p>Input Background Color</p>
+                      <input
+                        type="color"
+                        value={inputBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setInputBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--input-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Input Background Color</p>
-                    <input
-                      type="color"
-                      value={inputBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setInputBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--input-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Input Button Color */}
+                    <div className="settings-option">
+                      <p>Input Button Color</p>
+                      <input
+                        type="color"
+                        value={inputButtonColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setInputButtonColor(newColor);
+                          document.documentElement.style.setProperty('--input-button-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Input Button Color</p>
-                    <input
-                      type="color"
-                      value={inputButtonColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setInputButtonColor(newColor);
-                        document.documentElement.style.setProperty('--input-button-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Input Button Hover Color */}
+                    <div className="settings-option">
+                      <p>Input Button Hover Color</p>
+                      <input
+                        type="color"
+                        value={inputButtonHoverColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setInputButtonHoverColor(newColor);
+                          document.documentElement.style.setProperty('--input-button-hover-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Input Button Hover Color</p>
-                    <input
-                      type="color"
-                      value={inputButtonHoverColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setInputButtonHoverColor(newColor);
-                        document.documentElement.style.setProperty('--input-button-hover-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* User Message Background Color */}
+                    <div className="settings-option">
+                      <p>User Message Background Color</p>
+                      <input
+                        type="color"
+                        value={userMessageBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setUserMessageBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--user-message-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>User Message Background Color</p>
-                    <input
-                      type="color"
-                      value={userMessageBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setUserMessageBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--user-message-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* User Message Text Color */}
+                    <div className="settings-option">
+                      <p>User Message Text Color</p>
+                      <input
+                        type="color"
+                        value={userMessageTextColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setUserMessageTextColor(newColor);
+                          document.documentElement.style.setProperty('--user-message-text-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>User Message Text Color</p>
-                    <input
-                      type="color"
-                      value={userMessageTextColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setUserMessageTextColor(newColor);
-                        document.documentElement.style.setProperty('--user-message-text-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* AI Message Background Color */}
+                    <div className="settings-option">
+                      <p>AI Message Background Color</p>
+                      <input
+                        type="color"
+                        value={aiMessageBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setAiMessageBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--ai-message-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>AI Message Background Color</p>
-                    <input
-                      type="color"
-                      value={aiMessageBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setAiMessageBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--ai-message-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* AI Message Text Color */}
+                    <div className="settings-option">
+                      <p>AI Message Text Color</p>
+                      <input
+                        type="color"
+                        value={aiMessageTextColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setAiMessageTextColor(newColor);
+                          document.documentElement.style.setProperty('--ai-message-text-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>AI Message Text Color</p>
-                    <input
-                      type="color"
-                      value={aiMessageTextColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setAiMessageTextColor(newColor);
-                        document.documentElement.style.setProperty('--ai-message-text-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Button Background Color */}
+                    <div className="settings-option">
+                      <p>Button Background Color</p>
+                      <input
+                        type="color"
+                        value={buttonBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setButtonBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--button-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Button Background Color</p>
-                    <input
-                      type="color"
-                      value={buttonBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setButtonBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--button-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Button Hover Background Color */}
+                    <div className="settings-option">
+                      <p>Button Hover Background Color</p>
+                      <input
+                        type="color"
+                        value={buttonHoverBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setButtonHoverBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--button-hover-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Button Hover Background Color</p>
-                    <input
-                      type="color"
-                      value={buttonHoverBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setButtonHoverBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--button-hover-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Models Background Color */}
+                    <div className="settings-option">
+                      <p>Models Background Color</p>
+                      <input
+                        type="color"
+                        value={modelsBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setModelsBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--models-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Models Background Color</p>
-                    <input
-                      type="color"
-                      value={modelsBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setModelsBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--models-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* History Background Color */}
+                    <div className="settings-option">
+                      <p>History Background Color</p>
+                      <input
+                        type="color"
+                        value={historyBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setHistoryBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--history-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>History Background Color</p>
-                    <input
-                      type="color"
-                      value={historyBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setHistoryBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--history-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Left Panel Background Color */}
+                    <div className="settings-option">
+                      <p>Left Panel Background Color</p>
+                      <input
+                        type="color"
+                        value={leftPanelBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setLeftPanelBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--left-panel-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Left Panel Background Color</p>
-                    <input
-                      type="color"
-                      value={leftPanelBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setLeftPanelBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--left-panel-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Conversation Background Color */}
+                    <div className="settings-option">
+                      <p>Conversation Background Color</p>
+                      <input
+                        type="color"
+                        value={conversationBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setConversationBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--conversation-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Conversation Background Color</p>
-                    <input
-                      type="color"
-                      value={conversationBackgroundColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setConversationBackgroundColor(newColor);
-                        document.documentElement.style.setProperty('--conversation-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Pop-up Text Color */}
+                    <div className="settings-option">
+                      <p>Pop-up Text Color</p>
+                      <input
+                        type="color"
+                        value={popUpTextColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setPopUpTextColor(newColor);
+                          document.documentElement.style.setProperty('--pop-up-text', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Pop-up Text Color</p>
-                    <input
-                      type="color"
-                      value={popUpTextColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setPopUpTextColor(newColor);
-                        document.documentElement.style.setProperty('--pop-up-text', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Input Border Color */}
+                    <div className="settings-option">
+                      <p>Input Border Color</p>
+                      <input
+                        type="color"
+                        value={inputBorderColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setInputBorderColor(newColor);
+                          document.documentElement.style.setProperty('--input-border-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Burger Menu Color</p>
-                    <input
-                      type="color"
-                      value={burgerMenu}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setBurgerMenu(newColor);
-                        document.documentElement.style.setProperty('--burger-menu-background-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* Font Family */}
+                    <div className="settings-option">
+                      <p>Font Family</p>
+                      <select
+                        value={fontFamily}
+                        onChange={(e) => {
+                          const newFont = e.target.value;
+                          setFontFamily(newFont);
+                          document.documentElement.style.setProperty('--font-family', newFont);
+                        }}
+                      >
+                        <option value="'Poppins', sans-serif">Poppins</option>
+                        <option value="'Inconsolata', monospace">Inconsolata</option>
+                        <option value="'Merriweather', serif">Merriweather</option>
+                        <option value="'Noto Sans', sans-serif">Noto Sans</option>
+                        <option value="'Noto Serif', serif">Noto Serif</option>
+                        <option value="'Playfair Display', serif">Playfair Display</option>
+                        <option value="'Roboto', sans-serif">Roboto</option>
+                        <option value="'Ubuntu', sans-serif">Ubuntu</option>
+                        <option value="'Bangers', cursive">Bangers</option>
+                        <option value="'Caveat', cursive">Caveat</option>
+                        <option value="'Frederika the Great', cursive">Frederika the Great</option>
+                        <option value="'Rock Salt', cursive">Rock Salt</option>
+                        <option value="'Sofadi One', sans-serif">Sofadi One</option>
+                        <option value="'Zilla Slab Highlight', serif">Zilla Slab Highlight</option>
+                      </select>
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Input Border Color</p>
-                    <input
-                      type="color"
-                      value={inputBorderColor}
-                      onChange={(e) => {
-                        const newColor = e.target.value;
-                        setInputBorderColor(newColor);
-                        document.documentElement.style.setProperty('--input-border-color', newColor);
-                      }}
-                    />
-                  </div>
+                    {/* FAQ Background Color */}
+                    <div className="settings-option">
+                      <p>FAQ Background Color</p>
+                      <input
+                        type="color"
+                        value={faqBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setFaqBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--faq-background-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                  <div className="settings-option">
-                    <p>Font Family</p>
-                    <select
-                      value={fontFamily}
-                      onChange={(e) => {
-                        const newFont = e.target.value;
-                        setFontFamily(newFont);
-                        document.documentElement.style.setProperty('--font-family', newFont);
-                      }}
-                    >
-                      <option value="'Poppins', sans-serif">Poppins</option>
-                      <option value="'Inconsolata', monospace">Inconsolata</option>
-                      <option value="'Merriweather', serif">Merriweather</option>
-                      <option value="'Noto Sans', sans-serif">Noto Sans</option>
-                      <option value="'Noto Serif', serif">Noto Serif</option>
-                      <option value="'Playfair Display', serif">Playfair Display</option>
-                      <option value="'Roboto', sans-serif">Roboto</option>
-                      <option value="'Ubuntu', sans-serif">Ubuntu</option>
-                      <option value="'Bangers', cursive">Bangers</option>
-                      <option value="'Caveat', cursive">Caveat</option>
-                      <option value="'Frederika the Great', cursive">Frederika the Great</option>
-                      <option value="'Rock Salt', cursive">Rock Salt</option>
-                      <option value="'Sofadi One', sans-serif">Sofadi One</option>
-                      <option value="'Zilla Slab Highlight', serif">Zilla Slab Highlight</option>
-                    </select>
-                  </div>
+                    {/* FAQ Heading Color */}
+                    <div className="settings-option">
+                      <p>FAQ Heading Color</p>
+                      <input
+                        type="color"
+                        value={faqHeadingColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setFaqHeadingColor(newColor);
+                          document.documentElement.style.setProperty('--faq-heading-color', newColor);
+                        }}
+                      />
+                    </div>
 
-                </>
-              )}
+                    {/* FAQ Item Background Color */}
+                    <div className="settings-option">
+                      <p>FAQ Item Background Color</p>
+                      <input
+                        type="color"
+                        value={faqItemBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setFaqItemBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--faq-item-background-color', newColor);
+                        }}
+                      />
+                    </div>
+
+                    {/* FAQ Item Heading Color */}
+                    <div className="settings-option">
+                      <p>FAQ Item Heading Color</p>
+                      <input
+                        type="color"
+                        value={faqItemHeadingColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setFaqItemHeadingColor(newColor);
+                          document.documentElement.style.setProperty('--faq-item-heading-color', newColor);
+                        }}
+                      />
+                    </div>
+
+                    {/* FAQ Item Text Color */}
+                    <div className="settings-option">
+                      <p>FAQ Item Text Color</p>
+                      <input
+                        type="color"
+                        value={faqItemTextColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setFaqItemTextColor(newColor);
+                          document.documentElement.style.setProperty('--faq-item-text-color', newColor);
+                        }}
+                      />
+                    </div>
+
+                    {/* FAQ Item Hover Background Color */}
+                    <div className="settings-option">
+                      <p>FAQ Item Hover Background Color</p>
+                      <input
+                        type="color"
+                        value={faqItemHoverBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setFaqItemHoverBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--faq-item-hover-background-color', newColor);
+                        }}
+                      />
+                    </div>
+
+                    {/* Popup Background Color */}
+                    <div className="settings-option">
+                      <p>Popup Background Color</p>
+                      <input
+                        type="color"
+                        value={popupBackgroundColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setPopupBackgroundColor(newColor);
+                          document.documentElement.style.setProperty('--popup-background-color', newColor);
+                        }}
+                      />
+                    </div>
+
+                    {/* Overlay Text Color */}
+                    <div className="settings-option">
+                      <p>Overlay Text Color</p>
+                      <input
+                        type="color"
+                        value={overlayTextColor}
+                        onChange={(e) => {
+                          const newColor = e.target.value;
+                          setOverlayTextColor(newColor);
+                          document.documentElement.style.setProperty('--overlay-text-color', newColor);
+                        }}
+                      />
+                    </div>
+                  </>
+                )}
             </div>
           );
 
@@ -1028,12 +1233,22 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
     disableChatHistory,
     disableAIMemory,
     openSourceMode,
-
+  
     // API Keys
-   mistral,
-   openai,
-   anthropic,
-   google
+    mistral,
+    openai,
+    anthropic,
+    google,
+  
+    // Additional theme settings if needed
+    faqBackgroundColor,
+    faqHeadingColor,
+    faqItemBackgroundColor,
+    faqItemHeadingColor,
+    faqItemTextColor,
+    faqItemHoverBackgroundColor,
+    popupBackgroundColor,
+    overlayTextColor,  
 };
 
 
@@ -1059,7 +1274,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
             <button className="apply" onClick={() => { 
                   applySettings; 
                   getAllLocalStorageItems(); 
-                  closeSettings(); // This is invoked when the button is clicked
+                  closeSettings(); 
               }}>
                   Apply
             </button>
diff --git a/app/components/theme.ts b/app/components/theme.ts
index f9367bd..bfd3d9a 100644
--- a/app/components/theme.ts
+++ b/app/components/theme.ts
@@ -92,5 +92,65 @@ export const applyBlackTheme = () => {
     document.documentElement.style.setProperty('--input-border-color', '#3c3c3c'); // Input border color
     document.documentElement.style.setProperty('--font-family', "'Poppins', 'sans-serif'"); // Font family
     document.documentElement.style.setProperty('--font-size', '16px'); // Font size
-    document.documentElement.style.setProperty('--burger-menu-background-color', '#79832e'); // Font size
+    document.documentElement.style.setProperty('--burger-menu-background-color', '# 79832e'); // Font size
 };
+
+export const applyCustomTheme = () => {
+    // fix that later ouh fuck what have I done
+    /* 
+    const themeVariables = {
+        backgroundColor: localStorage.getItem('backgroundColor'),
+        textColor: localStorage.getItem('textColor'),
+        inputBackgroundColor: localStorage.getItem('inputBackgroundColor'),
+        inputButtonColor: localStorage.getItem('inputButtonColor'),
+        inputButtonHoverColor: localStorage.getItem('inputButtonHoverColor'),
+        userMessageBackgroundColor: localStorage.getItem('userMessageBackgroundColor'),
+        userMessageTextColor: localStorage.getItem('userMessageTextColor'),
+        aiMessageBackgroundColor: localStorage.getItem('aiMessageBackgroundColor'),
+        aiMessageTextColor: localStorage.getItem('aiMessageTextColor'),
+        buttonBackgroundColor: localStorage.getItem('buttonBackgroundColor'),
+        buttonHoverBackgroundColor: localStorage.getItem('buttonHoverBackgroundColor'),
+        modelsBackgroundColor: localStorage.getItem('modelsBackgroundColor'),
+        historyBackgroundColor: localStorage.getItem('historyBackgroundColor'),
+        leftPanelBackgroundColor: localStorage.getItem('leftPanelBackgroundColor'),
+        conversationBackgroundColor: localStorage.getItem('conversationBackgroundColor'),
+        popUpTextColor: localStorage.getItem('popUpTextColor'),
+        inputBorderColor: localStorage.getItem('inputBorderColor'),
+        fontFamily: localStorage.getItem('fontFamily'),
+        fontSize: localStorage.getItem('fontSize'),
+    };
+    
+    document.documentElement.style.setProperty('--header-background-color', themeVariables[header]); // Dark header background
+    document.documentElement.style.setProperty('--header-text-color', '#ffffff'); // Header text color
+    document.documentElement.style.setProperty('--background-color', '#121212'); // Main background color
+    document.documentElement.style.setProperty('--text-color', '#e0e0e0'); // Main text color
+    document.documentElement.style.setProperty('--input-background-color', '#1e1e1e'); // Input fields background
+    document.documentElement.style.setProperty('--input-button-color', '#3c3c3c'); // Button color
+    document.documentElement.style.setProperty('--input-button-hover-color', '#5a5a5a'); // Button hover color
+    document.documentElement.style.setProperty('--user-message-background-color', '#000000'); // User messages background
+    document.documentElement.style.setProperty('--user-message-text-color', '#ffffff'); // User messages text color
+    document.documentElement.style.setProperty('--ai-message-background-color', '#202020'); // AI messages background
+    document.documentElement.style.setProperty('--ai-message-text-color', '#ffffff'); // AI messages text color
+    document.documentElement.style.setProperty('--button-background-color', '#3c3c3c'); // Button background color
+    document.documentElement.style.setProperty('--button-hover-background-color', '#5a5a5a'); // Button hover color
+    document.documentElement.style.setProperty('--models-background-color', '#1e1e1e'); // Models section background
+    document.documentElement.style.setProperty('--history-background-color', '#1a1a1a'); // History background
+    document.documentElement.style.setProperty('--left-panel-background-color', '#1e1e1e'); // Left panel background
+    document.documentElement.style.setProperty('--conversation-background-color', '#2c2c2c'); // Conversation container background
+    document.documentElement.style.setProperty('--doc-background-color', '#1e1e1e'); // Documents background
+    document.documentElement.style.setProperty('--faq-background-color', '#2c2c2c'); // FAQ section background
+    document.documentElement.style.setProperty('--faq-heading-color', '#ffffff'); // FAQ heading color
+    document.documentElement.style.setProperty('--faq-item-background-color', '#3c3c3c'); // FAQ items background
+    document.documentElement.style.setProperty('--faq-item-heading-color', '#ffffff'); // FAQ items heading color
+    document.documentElement.style.setProperty('--faq-item-text-color', '#e0e0e0'); // FAQ items text color
+    document.documentElement.style.setProperty('--faq-item-hover-background-color', '#5a5a5a'); // FAQ items hover background
+    document.documentElement.style.setProperty('--pop-up-text', '#ffffff'); // Pop-up text color
+    document.documentElement.style.setProperty('--input-border-color', '#3c3c3c'); // Input border color
+    document.documentElement.style.setProperty('--font-family', "'Poppins', 'sans-serif'"); // Font family
+    document.documentElement.style.setProperty('--font-size', '16px'); // Font size
+    document.documentElement.style.setProperty('--burger-menu-background-color', '# 79832e'); // Font size
+    
+    
+    // Apply those settings
+ */
+}
diff --git a/app/page.tsx b/app/page.tsx
index 9afccc2..6bddf87 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -7,6 +7,8 @@ import Documentation from './components/Documentation'; // Ensure the import pat
 import History from './components/History';
 import Models from './components/Models';
 import Credits from './components/Credits';
+import Settings from './components/Settings';
+import { applyIOMarketTheme, applyWhiteTheme, applyBlackTheme } from './components/theme'
 import Head from 'next/head';
 import './styles/master.css';
 
@@ -26,6 +28,33 @@ const LandingPage: React.FC = () => {
     }
   };
 
+  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':
+            
+            break;
+          default:
+            applyIOMarketTheme();
+            break;
+        }
+      }   
+    }, []); // Runs only once when the component mounts          
+
   return (
     <>
         <Header

From f044028b479edd18632257a567444dddb1de9825 Mon Sep 17 00:00:00 2001
From: sageTheDM <info@photofuel.tech>
Date: Mon, 30 Sep 2024 16:12:04 +0200
Subject: [PATCH 2/2] In the name of the lord i once have done it again... it
 finally works yay

---
 app/components/theme.ts | 73 +++++++++++++++++++++--------------------
 app/page.tsx            |  4 +--
 2 files changed, 39 insertions(+), 38 deletions(-)

diff --git a/app/components/theme.ts b/app/components/theme.ts
index bfd3d9a..b4f64e2 100644
--- a/app/components/theme.ts
+++ b/app/components/theme.ts
@@ -96,8 +96,7 @@ export const applyBlackTheme = () => {
 };
 
 export const applyCustomTheme = () => {
-    // fix that later ouh fuck what have I done
-    /* 
+    // Theme variables   
     const themeVariables = {
         backgroundColor: localStorage.getItem('backgroundColor'),
         textColor: localStorage.getItem('textColor'),
@@ -118,39 +117,41 @@ export const applyCustomTheme = () => {
         inputBorderColor: localStorage.getItem('inputBorderColor'),
         fontFamily: localStorage.getItem('fontFamily'),
         fontSize: localStorage.getItem('fontSize'),
-    };
+        burgerMenu: localStorage.getItem('burgerMenu'),
+        faqBackgroundColor: localStorage.getItem('faqBackgroundColor'),
+        faqHeadingColor: localStorage.getItem('faqHeadingColor'),
+        faqItemBackgroundColor: localStorage.getItem('faqItemBackgroundColor'),
+        faqItemHeadingColor: localStorage.getItem('faqItemHeadingColor'),
+        faqItemTextColor: localStorage.getItem('faqItemTextColor'),
+        faqItemHoverBackgroundColor: localStorage.getItem('faqItemHoverBackgroundColor'),
+        popupBackgroundColor: localStorage.getItem('popupBackgroundColor'),
+        overlayTextColor: localStorage.getItem('overlayTextColor'),
+      };
+          
+      document.documentElement.style.setProperty('--background-color', themeVariables.backgroundColor || '#121212'); // Main background color
+      document.documentElement.style.setProperty('--text-color', themeVariables.textColor || '#e0e0e0'); // Main text color
+      document.documentElement.style.setProperty('--input-background-color', themeVariables.inputBackgroundColor || '#1e1e1e'); // Input fields background
+      document.documentElement.style.setProperty('--input-button-color', themeVariables.inputButtonColor || '#3c3c3c'); // Button color
+      document.documentElement.style.setProperty('--input-button-hover-color', themeVariables.inputButtonHoverColor || '#5a5a5a'); // Button hover color
+      document.documentElement.style.setProperty('--user-message-background-color', themeVariables.userMessageBackgroundColor || '#000000'); // User messages background
+      document.documentElement.style.setProperty('--user-message-text-color', themeVariables.userMessageTextColor || '#ffffff'); // User messages text color
+      document.documentElement.style.setProperty('--ai-message-background-color', themeVariables.aiMessageBackgroundColor || '#202020'); // AI messages background
+      document.documentElement.style.setProperty('--ai-message-text-color', themeVariables.aiMessageTextColor || '#ffffff'); // AI messages text color
+      document.documentElement.style.setProperty('--button-background-color', themeVariables.buttonBackgroundColor || '#3c3c3c'); // Button background color
+      document.documentElement.style.setProperty('--button-hover-background-color', themeVariables.buttonHoverBackgroundColor || '#5a5a5a'); // Button hover color
+      document.documentElement.style.setProperty('--models-background-color', themeVariables.modelsBackgroundColor || '#1e1e1e'); // Models section background
+      document.documentElement.style.setProperty('--history-background-color', themeVariables.historyBackgroundColor || '#1a1a1a'); // History background
+      document.documentElement.style.setProperty('--left-panel-background-color', themeVariables.leftPanelBackgroundColor || '#1e1e1e'); // Left panel background
+      document.documentElement.style.setProperty('--conversation-background-color', themeVariables.conversationBackgroundColor || '#2c2c2c'); // Conversation container background
+      document.documentElement.style.setProperty('--faq-background-color', themeVariables.faqBackgroundColor || '#2c2c2c'); // FAQ section background
+      document.documentElement.style.setProperty('--faq-heading-color', themeVariables.faqHeadingColor || '#ffffff'); // FAQ heading color
+      document.documentElement.style.setProperty('--faq-item-background-color', themeVariables.faqItemBackgroundColor || '#3c3c3c'); // FAQ items background
+      document.documentElement.style.setProperty('--faq-item-heading-color', themeVariables.faqItemHeadingColor || '#ffffff'); // FAQ items heading color
+      document.documentElement.style.setProperty('--faq-item-text-color', themeVariables.faqItemTextColor || '#e0e0e0'); // FAQ items text color
+      document.documentElement.style.setProperty('--faq-item-hover-background-color', themeVariables.faqItemHoverBackgroundColor || '#5a5a5a'); // FAQ items hover background
+      document.documentElement.style.setProperty('--input-border-color', themeVariables.inputBorderColor || '#3c3c3c'); // Input border color
+      document.documentElement.style.setProperty('--font-family', themeVariables.fontFamily || "'Poppins', 'sans-serif'"); // Font family
+      document.documentElement.style.setProperty('--font-size', themeVariables.fontSize || '16px'); // Font size
+      document.documentElement.style.setProperty('--burger-menu-background-color', themeVariables.burgerMenu || '#79832e'); // Burger menu background color
     
-    document.documentElement.style.setProperty('--header-background-color', themeVariables[header]); // Dark header background
-    document.documentElement.style.setProperty('--header-text-color', '#ffffff'); // Header text color
-    document.documentElement.style.setProperty('--background-color', '#121212'); // Main background color
-    document.documentElement.style.setProperty('--text-color', '#e0e0e0'); // Main text color
-    document.documentElement.style.setProperty('--input-background-color', '#1e1e1e'); // Input fields background
-    document.documentElement.style.setProperty('--input-button-color', '#3c3c3c'); // Button color
-    document.documentElement.style.setProperty('--input-button-hover-color', '#5a5a5a'); // Button hover color
-    document.documentElement.style.setProperty('--user-message-background-color', '#000000'); // User messages background
-    document.documentElement.style.setProperty('--user-message-text-color', '#ffffff'); // User messages text color
-    document.documentElement.style.setProperty('--ai-message-background-color', '#202020'); // AI messages background
-    document.documentElement.style.setProperty('--ai-message-text-color', '#ffffff'); // AI messages text color
-    document.documentElement.style.setProperty('--button-background-color', '#3c3c3c'); // Button background color
-    document.documentElement.style.setProperty('--button-hover-background-color', '#5a5a5a'); // Button hover color
-    document.documentElement.style.setProperty('--models-background-color', '#1e1e1e'); // Models section background
-    document.documentElement.style.setProperty('--history-background-color', '#1a1a1a'); // History background
-    document.documentElement.style.setProperty('--left-panel-background-color', '#1e1e1e'); // Left panel background
-    document.documentElement.style.setProperty('--conversation-background-color', '#2c2c2c'); // Conversation container background
-    document.documentElement.style.setProperty('--doc-background-color', '#1e1e1e'); // Documents background
-    document.documentElement.style.setProperty('--faq-background-color', '#2c2c2c'); // FAQ section background
-    document.documentElement.style.setProperty('--faq-heading-color', '#ffffff'); // FAQ heading color
-    document.documentElement.style.setProperty('--faq-item-background-color', '#3c3c3c'); // FAQ items background
-    document.documentElement.style.setProperty('--faq-item-heading-color', '#ffffff'); // FAQ items heading color
-    document.documentElement.style.setProperty('--faq-item-text-color', '#e0e0e0'); // FAQ items text color
-    document.documentElement.style.setProperty('--faq-item-hover-background-color', '#5a5a5a'); // FAQ items hover background
-    document.documentElement.style.setProperty('--pop-up-text', '#ffffff'); // Pop-up text color
-    document.documentElement.style.setProperty('--input-border-color', '#3c3c3c'); // Input border color
-    document.documentElement.style.setProperty('--font-family', "'Poppins', 'sans-serif'"); // Font family
-    document.documentElement.style.setProperty('--font-size', '16px'); // Font size
-    document.documentElement.style.setProperty('--burger-menu-background-color', '# 79832e'); // Font size
-    
-    
-    // Apply those settings
- */
 }
diff --git a/app/page.tsx b/app/page.tsx
index 6bddf87..b2e6c90 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -8,7 +8,7 @@ import History from './components/History';
 import Models from './components/Models';
 import Credits from './components/Credits';
 import Settings from './components/Settings';
-import { applyIOMarketTheme, applyWhiteTheme, applyBlackTheme } from './components/theme'
+import { applyIOMarketTheme, applyWhiteTheme, applyBlackTheme, applyCustomTheme } from './components/theme'
 import Head from 'next/head';
 import './styles/master.css';
 
@@ -46,7 +46,7 @@ const LandingPage: React.FC = () => {
             applyBlackTheme();
             break;
           case 'CUSTOM':
-            
+            applyCustomTheme();
             break;
           default:
             applyIOMarketTheme();