diff --git a/frontend/src/app/home/layout.tsx b/frontend/src/app/home/layout.tsx new file mode 100644 index 00000000..91b796d1 --- /dev/null +++ b/frontend/src/app/home/layout.tsx @@ -0,0 +1,63 @@ +'use client'; + +import React from 'react'; +import Link from 'next/link'; +import Image from 'next/image'; +import { Moon, Sun } from 'lucide-react'; +import { useTheme } from '../providers/ThemeProvider'; + +export default function HomeLayout({ + children, +}: { + children: React.ReactNode; +}) { + const { theme, toggleTheme } = useTheme(); + + return ( +
+ +
{children}
+
+ ); +} diff --git a/frontend/src/app/home/page.tsx b/frontend/src/app/home/page.tsx new file mode 100644 index 00000000..8905a6e9 --- /dev/null +++ b/frontend/src/app/home/page.tsx @@ -0,0 +1,41 @@ +'use client'; + +import { useState } from 'react'; +import { SendIcon } from 'lucide-react'; + +export default function HomePage() { + const [message, setMessage] = useState(''); + + return ( +
+
+
+
+
+
+

+ Hello! How can I help you today? +

+
+
+
+
+ +
+
+ setMessage(e.target.value)} + placeholder="Type your message..." + className="flex-1 p-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-indigo-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:placeholder-gray-400" + /> + +
+
+
+
+ ); +} \ No newline at end of file diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index 8e217411..fe890099 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -2,6 +2,7 @@ import type { Metadata, Viewport } from 'next'; import { Inter } from 'next/font/google'; import './globals.css'; import { BaseProviders } from './providers/BaseProvider'; +import { ThemeProvider } from './providers/ThemeProvider'; const inter = Inter({ subsets: ['latin'] }); @@ -25,7 +26,7 @@ export default function RootLayout({ return ( - {children} + {children} ); diff --git a/frontend/src/app/providers/ThemeProvider.tsx b/frontend/src/app/providers/ThemeProvider.tsx new file mode 100644 index 00000000..f09103e6 --- /dev/null +++ b/frontend/src/app/providers/ThemeProvider.tsx @@ -0,0 +1,38 @@ +'use client'; + +import { createContext, useContext, useEffect, useState } from 'react'; + +type Theme = 'dark' | 'light'; + +const ThemeContext = createContext<{ + theme: Theme; + toggleTheme: () => void; +}>({ theme: 'light', toggleTheme: () => {} }); + +export const ThemeProvider = ({ children }: { children: React.ReactNode }) => { + const [theme, setTheme] = useState('light'); + + useEffect(() => { + const savedTheme = localStorage.getItem('theme') as Theme; + if (savedTheme) { + setTheme(savedTheme); + } + }, []); + + useEffect(() => { + localStorage.setItem('theme', theme); + document.documentElement.classList.toggle('dark', theme === 'dark'); + }, [theme]); + + const toggleTheme = () => { + setTheme(theme === 'light' ? 'dark' : 'light'); + }; + + return ( + + {children} + + ); +}; + +export const useTheme = () => useContext(ThemeContext); \ No newline at end of file diff --git a/frontend/src/components/user-settings.tsx b/frontend/src/components/user-settings.tsx index a6179a66..b73b284c 100644 --- a/frontend/src/components/user-settings.tsx +++ b/frontend/src/components/user-settings.tsx @@ -35,8 +35,10 @@ export const UserSettings = ({ isSimple }: UserSettingsProps) => { const handleLogout = useMemo(() => { return () => { + router.push('/'); + // router.push('/login'); logout(); - router.push('/login'); + }; }, [logout, router]);