App.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. function App() {
  8. return (
  9. <HashRouter>
  10. <div className="flex flex-row drawer lg:drawer-open">
  11. <AppContextProvider>
  12. <Routes>
  13. <Route element={<AppLayout />}>
  14. <Route path="/chat/:convId" element={<ChatScreen />} />
  15. <Route path="*" element={<ChatScreen />} />
  16. </Route>
  17. </Routes>
  18. </AppContextProvider>
  19. </div>
  20. </HashRouter>
  21. );
  22. }
  23. function AppLayout() {
  24. const { showSettings, setShowSettings } = useAppContext();
  25. return (
  26. <>
  27. <Sidebar />
  28. <div
  29. className="drawer-content grow flex flex-col h-screen w-screen mx-auto px-4 overflow-auto"
  30. id="main-scroll"
  31. >
  32. <Header />
  33. <Outlet />
  34. </div>
  35. {
  36. <SettingDialog
  37. show={showSettings}
  38. onClose={() => setShowSettings(false)}
  39. />
  40. }
  41. </>
  42. );
  43. }
  44. export default App;