diff --git a/chromium-extension/public/icon_dark.png b/chromium-extension/public/icon_dark.png new file mode 100644 index 0000000..e360562 Binary files /dev/null and b/chromium-extension/public/icon_dark.png differ diff --git a/chromium-extension/public/icon.png b/chromium-extension/public/icon_light.png similarity index 100% rename from chromium-extension/public/icon.png rename to chromium-extension/public/icon_light.png diff --git a/chromium-extension/public/icon_neutral.png b/chromium-extension/public/icon_neutral.png new file mode 100644 index 0000000..b7b1ea9 Binary files /dev/null and b/chromium-extension/public/icon_neutral.png differ diff --git a/chromium-extension/public/manifest.json b/chromium-extension/public/manifest.json index e73774c..9647794 100644 --- a/chromium-extension/public/manifest.json +++ b/chromium-extension/public/manifest.json @@ -1,16 +1,17 @@ { - "name": "OpenBrowser agent", - "description": "OpenBrowser Agent Extension", + "name": "OpenBrowser", + "description": "OpenBrowser Extension", "version": "3.0", "manifest_version": 3, + "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnk6aCCanZ8kXgeZ9DjCSi8m2IhWn+CVGfw9Rm/kGdjGnJrdCCsNi7CwNPqwkC6vW+yRGc1NrBzTTeLzToIeH6p+scCp0zg5iTiOL+xBq1KtyyMGdtH6tb1GvXGud3RwD/GGkmhFsWlRtxzVzyz7NtDBhXlDDDLw/OgDi/DQGYsBfClSSvL1gNToeML+sWiRhBDhUJ+GIRRpOvDCBCXOQXTTwDWiEPFcsmfU2H/nRlWZtfqz8mMPU5ISDTR68dnLc4JhxsegrcQcV9nVxZlUjKXsdR/gdFf3DWCrJQkYwspYyg8MEzqxtRaC/G9RCP88jaBGjf9RFzkB497CpgN5+ywIDAQAB", "background": { "type": "module", "service_worker": "js/background.js" }, "icons": { - "16": "icon.png", - "48": "icon.png", - "128": "icon.png" + "16": "icon_neutral.png", + "48": "icon_neutral.png", + "128": "icon_neutral.png" }, "side_panel": { "default_path": "sidebar.html", diff --git a/chromium-extension/public/options.html b/chromium-extension/public/options.html index f9ff25e..5661c94 100644 --- a/chromium-extension/public/options.html +++ b/chromium-extension/public/options.html @@ -2,6 +2,7 @@ OpenBrowser Options + diff --git a/chromium-extension/src/options/index.tsx b/chromium-extension/src/options/index.tsx index 280a262..021c5cd 100644 --- a/chromium-extension/src/options/index.tsx +++ b/chromium-extension/src/options/index.tsx @@ -3,6 +3,7 @@ import { createRoot } from "react-dom/client"; import { Form, Input, Button, message, Select, Checkbox, Spin } from "antd"; import { SaveOutlined, LoadingOutlined } from "@ant-design/icons"; import "../sidebar/index.css"; +import { ThemeProvider } from "../sidebar/providers/ThemeProvider"; import { fetchModelsData, getProvidersWithImageSupport, @@ -49,6 +50,25 @@ const OptionsPage = () => { Record >({}); const [modelSearchValue, setModelSearchValue] = useState(""); + const [isDarkMode, setIsDarkMode] = useState( + window.matchMedia("(prefers-color-scheme: dark)").matches + ); + + // Listen for theme changes + useEffect(() => { + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + const handleChange = (e: MediaQueryListEvent) => setIsDarkMode(e.matches); + mediaQuery.addEventListener("change", handleChange); + return () => mediaQuery.removeEventListener("change", handleChange); + }, []); + + // Update favicon based on theme + useEffect(() => { + const favicon = document.getElementById("favicon") as HTMLLinkElement; + if (favicon) { + favicon.href = isDarkMode ? "/icon_dark.png" : "/icon_light.png"; + } + }, [isDarkMode]); // Fetch models data on component mount useEffect(() => { @@ -142,7 +162,10 @@ const OptionsPage = () => { webSearchConfig: newWebSearchConfig }, () => { - message.success("Save Success!"); + message.success({ + content: "Save Success!", + className: "toast-text-black" + }); } ); }) @@ -188,31 +211,47 @@ const OptionsPage = () => { setConfig(newConfig); form.setFieldValue(["options", "baseURL"], defaultBaseURL); - message.success("Base URL reset to default"); + message.success({ + content: "Base URL reset to default", + className: "toast-text-black" + }); }; if (loading) { return ( -
- } /> +
+ + } + />
); } return ( -
+
{/* Header */} -
+
OpenBrowser Logo
-

Settings

-

+

+ Settings +

+

Configure your AI model preferences (vision models only)

@@ -222,12 +261,15 @@ const OptionsPage = () => { {/* Content */}
-
+
+ LLM Provider } @@ -242,7 +284,8 @@ const OptionsPage = () => { placeholder="Choose a LLM provider" onChange={handleLLMChange} size="large" - className="w-full" + className="w-full bg-theme-input border-theme-input text-theme-primary input-theme-focus radius-8px" + popupClassName="bg-theme-input border-theme-input dropdown-theme-items" > {providerOptions.map((provider) => (