diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 2f420a7..4a9d629 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,17 +1,19 @@ import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; import { ElectronTitleBar } from "./Electron"; import { useAppState } from "./pages/chat/state"; -import { useEffect, useState } from "react"; -import HomePage from "./pages/home/HomePage"; -import LoginPage from "./pages/auth/LoginPage"; -import RegisterPage from "./pages/auth/RegisterPage"; -import ChatPage from "./pages/chat/ui/ChatPage"; -import DownloadAppPage from "./pages/download-app/DownloadAppPage"; -import NotFoundPage from "./pages/not-found/NotFoundPage"; -import ProtectedRoute from "./pages/ProtectedRoute"; +import { useEffect, useState, lazy, Suspense } from "react"; import { isElectron } from "./core/electron/electron"; import { MINIMUM_WIDTH } from "./core/config"; import useWindowSize from "./core/hooks/useWindowSize"; +import ProtectedRoute from "./pages/ProtectedRoute"; +import NotFoundPage from "./pages/not-found/NotFoundPage"; +import DownloadAppPage from "./pages/download-app/DownloadAppPage"; + +// Lazy load route components +const HomePage = lazy(() => import("./pages/home/HomePage")); +const LoginPage = lazy(() => import("./pages/auth/LoginPage")); +const RegisterPage = lazy(() => import("./pages/auth/RegisterPage")); +const ChatPage = lazy(() => import("./pages/chat/ui/ChatPage")); export default function App() { const { restoreUserFromStorage } = useAppState(); @@ -31,10 +33,24 @@ export default function App() {
- } /> - } /> - } /> - } /> + + + + } /> + + + + } /> + + + + } /> + + } /> @@ -42,7 +58,9 @@ export default function App() { } /> - } /> + + } />
diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index d89d1e8..83eec38 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -6,7 +6,6 @@ */ import './css/style.scss'; -import "mdui/mdui.css"; import "./utils/material"; import "./core/init"; diff --git a/frontend/src/utils/material.ts b/frontend/src/utils/material.ts index a5cdb5e..7ab2607 100644 --- a/frontend/src/utils/material.ts +++ b/frontend/src/utils/material.ts @@ -21,6 +21,7 @@ import 'mdui/components/top-app-bar'; import 'mdui/components/top-app-bar-title'; import 'mdui/components/switch'; import 'mdui/components/chip'; +import "mdui/mdui.css"; import { setColorScheme } from 'mdui/functions/setColorScheme.js'; diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 3c46f4c..6548add 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -4,6 +4,9 @@ import autoprefixer from "autoprefixer"; import electron from "vite-plugin-electron/simple"; import react from "@vitejs/plugin-react"; import path from "path"; +import { visualizer } from 'rollup-plugin-visualizer'; + +const outDir = process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist"; const plugins: PluginOption[] = [ react(), @@ -18,6 +21,11 @@ const plugins: PluginOption[] = [ minifyCSS: true, minifyJS: true } + }), + visualizer({ + filename: `${outDir}/stats.html`, + open: true, + gzipSize: true }) ] @@ -85,7 +93,7 @@ export default defineConfig({ }, cssMinify: true, assetsInlineLimit: 0, - outDir: process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist", + outDir: outDir, chunkSizeWarningLimit: 1024 } }); \ No newline at end of file diff --git a/package.json b/package.json index 4fb02cb..c52d0e9 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "FromChat", + "name": "fromchat", "private": true, "version": "0.0.0", "type": "module", @@ -53,6 +53,7 @@ "electron": "^38.1.2", "husky": "^9.1.7", "postcss": "^8.5.6", + "rollup-plugin-visualizer": "^6.0.4", "sass-embedded": "^1.93.0", "terser": "^5.44.0", "typescript": "~5.9.2",