diff --git a/ui/app/layout.tsx b/ui/app/layout.tsx index 87144cf..124a3b5 100644 --- a/ui/app/layout.tsx +++ b/ui/app/layout.tsx @@ -34,7 +34,7 @@ export default function RootLayout({ unstyled: true, classNames: { toast: - 'dark:dark:bg-[#111111] text-white rounded-lg p-4 flex flex-row items-center space-x-2', + 'bg-primaryLight dark:bg-primaryDark text-white rounded-lg p-4 flex flex-row items-center space-x-2', }, }} /> diff --git a/ui/components/Chat.tsx b/ui/components/Chat.tsx index 7b0c1b3..60096b3 100644 --- a/ui/components/Chat.tsx +++ b/ui/components/Chat.tsx @@ -66,7 +66,7 @@ const Chat = ({ sendMessage={sendMessage} /> {!isLast && msg.role === 'assistant' && ( -
+
)} ); diff --git a/ui/components/EmptyChat.tsx b/ui/components/EmptyChat.tsx index 30bb883..6b9fddb 100644 --- a/ui/components/EmptyChat.tsx +++ b/ui/components/EmptyChat.tsx @@ -11,7 +11,7 @@ const EmptyChat = ({ }) => { return (
-

+

Research begins here.

-
+
setMessage(e.target.value)} minRows={2} - className="bg-transparent placeholder:text-white/50 text-sm text-white resize-none focus:outline-none w-full max-h-24 lg:max-h-36 xl:max-h-48" + className="bg-transparent placeholder:text-black/50 dark:placeholder:text-white/50 text-sm text-black dark:text-white resize-none focus:outline-none w-full max-h-24 lg:max-h-36 xl:max-h-48" placeholder="Ask anything..." />
@@ -51,7 +51,7 @@ const EmptyChatMessageInput = ({ /> diff --git a/ui/components/Layout.tsx b/ui/components/Layout.tsx index e517e00..cb128db 100644 --- a/ui/components/Layout.tsx +++ b/ui/components/Layout.tsx @@ -1,6 +1,6 @@ const Layout = ({ children }: { children: React.ReactNode }) => { return ( -
+
{children}
); diff --git a/ui/components/MessageActions/Copy.tsx b/ui/components/MessageActions/Copy.tsx index b19d8d4..5418811 100644 --- a/ui/components/MessageActions/Copy.tsx +++ b/ui/components/MessageActions/Copy.tsx @@ -19,7 +19,7 @@ const Copy = ({ setCopied(true); setTimeout(() => setCopied(false), 1000); }} - className="p-2 text-white/70 rounded-xl hover:bg-[#1c1c1c] transition duration-200 hover:text-white" + className="p-2 text-black/70 dark:text-white/70 rounded-xl hover:bg-secondLight dark:hover:bg-secondDark transition duration-200 hover:text-black dark:hover:text-white" > {copied ? : } diff --git a/ui/components/MessageActions/Rewrite.tsx b/ui/components/MessageActions/Rewrite.tsx index 3282e7d..b5f865b 100644 --- a/ui/components/MessageActions/Rewrite.tsx +++ b/ui/components/MessageActions/Rewrite.tsx @@ -10,7 +10,7 @@ const Rewrite = ({ return ( */} @@ -123,7 +127,7 @@ const MessageBox = ({ start(); } }} - className="p-2 text-white/70 rounded-xl hover:bg-[#1c1c1c] transition duration-200 hover:text-white" + className="p-2 text-black/70 dark:text-white/70 rounded-xl hover(bg-secondLight dark:bg-secondDark) transition duration-200 hover:text-black dark:hover:text-white" > {speechStatus === 'started' ? ( @@ -140,8 +144,8 @@ const MessageBox = ({ message.role === 'assistant' && !loading && ( <> -
-
+
+

Related

@@ -152,7 +156,7 @@ const MessageBox = ({ className="flex flex-col space-y-3 text-sm" key={i} > -
+
{ sendMessage(suggestion); diff --git a/ui/components/MessageBoxLoading.tsx b/ui/components/MessageBoxLoading.tsx index e070a27..3a80fe8 100644 --- a/ui/components/MessageBoxLoading.tsx +++ b/ui/components/MessageBoxLoading.tsx @@ -1,9 +1,9 @@ const MessageBoxLoading = () => { return ( -
-
-
-
+
+
+
+
); }; diff --git a/ui/components/MessageInput.tsx b/ui/components/MessageInput.tsx index baf6095..4fbea7c 100644 --- a/ui/components/MessageInput.tsx +++ b/ui/components/MessageInput.tsx @@ -40,7 +40,7 @@ const MessageInput = ({ } }} className={cn( - 'bg-[#111111] p-4 flex items-center overflow-hidden border border-[#1C1C1C]', + 'bg-primaryLight dark:bg-primaryDark p-4 flex items-center overflow-hidden border border-light dark:border-dark', mode === 'multi' ? 'flex-col rounded-lg' : 'flex-row rounded-full', )} > @@ -51,7 +51,7 @@ const MessageInput = ({ onHeightChange={(height, props) => { setTextareaRows(Math.ceil(height / props.rowHeight)); }} - className="transition bg-transparent placeholder:text-white/50 placeholder:text-sm text-sm text-white resize-none focus:outline-none w-full px-2 max-h-24 lg:max-h-36 xl:max-h-48 flex-grow flex-shrink" + className="transition bg-transparent dark:placeholder:text-white/50 placeholder:text-sm text-sm dark:text-white resize-none focus:outline-none w-full px-2 max-h-24 lg:max-h-36 xl:max-h-48 flex-grow flex-shrink" placeholder="Ask a follow-up" /> {mode === 'single' && ( @@ -62,7 +62,7 @@ const MessageInput = ({ /> @@ -78,7 +78,7 @@ const MessageInput = ({ /> diff --git a/ui/components/MessageInputActions.tsx b/ui/components/MessageInputActions.tsx index 9c00c4d..22fc708 100644 --- a/ui/components/MessageInputActions.tsx +++ b/ui/components/MessageInputActions.tsx @@ -16,7 +16,7 @@ export const Attach = () => { return ( @@ -85,7 +85,7 @@ export const Focus = ({ {focusMode !== 'webSearch' ? (
@@ -109,7 +109,7 @@ export const Focus = ({ leaveTo="opacity-0 translate-y-1" > -
+
{focusModes.map((mode, i) => ( setFocusMode(mode.key)} @@ -117,20 +117,24 @@ export const Focus = ({ className={cn( 'p-2 rounded-lg flex flex-col items-start justify-start text-start space-y-2 duration-200 cursor-pointer transition', focusMode === mode.key - ? 'bg-[#111111]' - : 'hover:bg-[#111111]', + ? 'bg-primaryLight dark:bg-primaryDark' + : 'hover:bg-primaryLight dark:bg-primaryDark', )} >
{mode.icon}

{mode.title}

-

{mode.description}

+

+ {mode.description} +

))}
@@ -152,14 +156,14 @@ export const CopilotToggle = ({ Copilot @@ -170,7 +174,7 @@ export const CopilotToggle = ({ 'text-xs font-medium transition-colors duration-150 ease-in-out', copilotEnabled ? 'text-[#24A0ED]' - : 'text-white/50 group-hover:text-white', + : 'text-black/50 dark:text-white/50 group-hover:text-black dark:group-hover:text-white', )} > Copilot diff --git a/ui/components/MessageSources.tsx b/ui/components/MessageSources.tsx index 5816f8d..476c73c 100644 --- a/ui/components/MessageSources.tsx +++ b/ui/components/MessageSources.tsx @@ -20,12 +20,12 @@ const MessageSources = ({ sources }: { sources: Document[] }) => {
{sources.slice(0, 3).map((source, i) => ( -

+

{source.metadata.title}

@@ -37,11 +37,11 @@ const MessageSources = ({ sources }: { sources: Document[] }) => { alt="favicon" className="rounded-lg h-4 w-4" /> -

+

{source.metadata.url.replace(/.+\/\/|www.|\..+/g, '')}

-
+
{i + 1}
@@ -51,7 +51,7 @@ const MessageSources = ({ sources }: { sources: Document[] }) => { {sources.length > 3 && ( @@ -83,19 +83,19 @@ const MessageSources = ({ sources }: { sources: Document[] }) => { leaveFrom="opacity-100 scale-200" leaveTo="opacity-0 scale-95" > - - + + Sources
{sources.map((source, i) => ( -

+

{source.metadata.title}

@@ -107,14 +107,14 @@ const MessageSources = ({ sources }: { sources: Document[] }) => { alt="favicon" className="rounded-lg h-4 w-4" /> -

+

{source.metadata.url.replace( /.+\/\/|www.|\..+/g, '', )}

-
+
{i + 1}
diff --git a/ui/components/Navbar.tsx b/ui/components/Navbar.tsx index 75c34a6..c07d6fd 100644 --- a/ui/components/Navbar.tsx +++ b/ui/components/Navbar.tsx @@ -38,7 +38,7 @@ const Navbar = ({ messages }: { messages: Message[] }) => { }, []); return ( -
+
@@ -76,7 +76,7 @@ const SearchImages = ({ {[...Array(4)].map((_, i) => (
))}
@@ -120,7 +120,7 @@ const SearchImages = ({ {images.length > 4 && ( diff --git a/ui/components/SearchVideos.tsx b/ui/components/SearchVideos.tsx index b5ff6c5..05c3180 100644 --- a/ui/components/SearchVideos.tsx +++ b/ui/components/SearchVideos.tsx @@ -77,7 +77,7 @@ const Searchvideos = ({ ); setLoading(false); }} - className="border border-dashed border-[#1C1C1C] hover:bg-[#1c1c1c] active:scale-95 duration-200 transition px-4 py-2 flex flex-row items-center justify-between rounded-lg text-white text-sm w-full" + className="border border-dashed border-light dark:border-dark hover(bg-secondLight dark:bg-secondDark) active:scale-95 duration-200 transition px-4 py-2 flex flex-row items-center justify-between rounded-lg dark:text-white text-sm w-full" >
@@ -91,7 +91,7 @@ const Searchvideos = ({ {[...Array(4)].map((_, i) => (
))}
@@ -118,7 +118,7 @@ const Searchvideos = ({ alt={video.title} className="relative h-full w-full aspect-video object-cover rounded-lg" /> -
+

Video

@@ -142,7 +142,7 @@ const Searchvideos = ({ alt={video.title} className="relative h-full w-full aspect-video object-cover rounded-lg" /> -
+

Video

@@ -151,7 +151,7 @@ const Searchvideos = ({ {videos.length > 4 && ( diff --git a/ui/components/SettingsDialog.tsx b/ui/components/SettingsDialog.tsx index 57f79f6..1942179 100644 --- a/ui/components/SettingsDialog.tsx +++ b/ui/components/SettingsDialog.tsx @@ -145,7 +145,7 @@ const SettingsDialog = ({ leaveFrom="opacity-100" leaveTo="opacity-0" > -
+
@@ -158,15 +158,15 @@ const SettingsDialog = ({ leaveFrom="opacity-100 scale-200" leaveTo="opacity-0 scale-95" > - - + + Settings {config && !isLoading && (
{config.chatModelProviders && (
-

+

Chat model Provider

setSelectedChatModel(e.target.value) } - className="bg-[#111111] px-3 py-2 flex items-center overflow-hidden border border-[#1C1C1C] text-white rounded-lg text-sm" + className="bg-primaryLight dark:bg-primaryDark px-3 py-2 flex items-center overflow-hidden border border-light dark:border-dark dark:text-white rounded-lg text-sm" > {config.chatModelProviders[ selectedChatModelProvider @@ -231,7 +233,9 @@ const SettingsDialog = ({ selectedChatModelProvider === 'custom_openai' && ( <>
-

Model name

+

+ Model name +

setSelectedChatModel(e.target.value) } - className="bg-[#111111] px-3 py-2 flex items-center overflow-hidden border border-[#1C1C1C] text-white rounded-lg text-sm" + className="bg-primaryLight dark:bg-primaryDark px-3 py-2 flex items-center overflow-hidden border border-light dark:border-dark dark:text-white rounded-lg text-sm" />
-

+

Custom OpenAI API Key

setCustomOpenAIApiKey(e.target.value) } - className="bg-[#111111] px-3 py-2 flex items-center overflow-hidden border border-[#1C1C1C] text-white rounded-lg text-sm" + className="bg-primaryLight dark:bg-primaryDark px-3 py-2 flex items-center overflow-hidden border border-light dark:border-dark dark:text-white rounded-lg text-sm" />
-

+

Custom OpenAI Base URL

setCustomOpenAIBaseURL(e.target.value) } - className="bg-[#111111] px-3 py-2 flex items-center overflow-hidden border border-[#1C1C1C] text-white rounded-lg text-sm" + className="bg-primaryLight dark:bg-primaryDark px-3 py-2 flex items-center overflow-hidden border border-light dark:border-dark dark:text-white rounded-lg text-sm" />
@@ -275,7 +279,7 @@ const SettingsDialog = ({ {/* Embedding models */} {config.embeddingModelProviders && (
-

+

Embedding model Provider

setSelectedEmbeddingModel(e.target.value) } - className="bg-[#111111] px-3 py-2 flex items-center overflow-hidden border border-[#1C1C1C] text-white rounded-lg text-sm" + className="bg-primaryLight dark:bg-primaryDark px-3 py-2 flex items-center overflow-hidden border border-light dark:border-dark dark:text-white rounded-lg text-sm" > {config.embeddingModelProviders[ selectedEmbeddingModelProvider @@ -336,7 +342,9 @@ const SettingsDialog = ({
)}
-

OpenAI API Key

+

+ OpenAI API Key +

-

Ollama API URL

+

+ Ollama API URL +

-

GROQ API Key

+

+ GROQ API Key +

)} {isLoading && ( -
+
)}
-

+

We'll refresh the page after updating the settings.

+ ); +} const Sidebar = ({ children }: { children: React.ReactNode }) => { const segments = useSelectedLayoutSegments(); @@ -38,31 +45,39 @@ const Sidebar = ({ children }: { children: React.ReactNode }) => { return (
-
+
- + -
+ {navLinks.map((link, i) => ( {link.active && ( -
+
)} ))} -
- setIsSettingsOpen(!isSettingsOpen)} - className="text-white cursor-pointer" - /> + + + + + + setIsSettingsOpen(!isSettingsOpen)} + className="cursor-pointer" + /> + + {
-
+
{navLinks.map((link, i) => (