App.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { HashRouter, Outlet, Route, Routes } from 'react-router';
  2. import Header from './components/Header';
  3. import Sidebar from './components/Sidebar';
  4. import { AppContextProvider, useAppContext } from './utils/app.context';
  5. import ChatScreen from './components/ChatScreen';
  6. import SettingDialog from './components/SettingDialog';
  7. import { Toaster } from 'react-hot-toast';
  8. function App() {
  9. return (
  10. <HashRouter>
  11. <div className="flex flex-row drawer lg:drawer-open">
  12. <AppContextProvider>
  13. <Routes>
  14. <Route element={<AppLayout />}>
  15. <Route path="/chat/:convId" element={<ChatScreen />} />
  16. <Route path="*" element={<ChatScreen />} />
  17. </Route>
  18. </Routes>
  19. </AppContextProvider>
  20. </div>
  21. </HashRouter>
  22. );
  23. }
  24. function AppLayout() {
  25. const { showSettings, setShowSettings } = useAppContext();
  26. return (
  27. <>
  28. <Sidebar />
  29. <main
  30. className="drawer-content grow flex flex-col h-screen w-screen mx-auto px-4 overflow-auto bg-base-100"
  31. id="main-scroll"
  32. >
  33. <Header />
  34. <Outlet />
  35. </main>
  36. {
  37. <SettingDialog
  38. show={showSettings}
  39. onClose={() => setShowSettings(false)}
  40. />
  41. }
  42. <Toaster />
  43. </>
  44. );
  45. }
  46. export default App;