From b5c941c15946b81b419937b7d35445713efbf783 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Sat, 28 Feb 2026 20:04:33 +0100 Subject: [PATCH] feat: add frontend entry point, theme, and router --- frontend/src/App.tsx | 20 ++++++++++++++++++++ frontend/src/main.tsx | 15 +++++++++++++++ frontend/src/theme.ts | 17 +++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 frontend/src/App.tsx create mode 100644 frontend/src/main.tsx create mode 100644 frontend/src/theme.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..e21ab9e --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,20 @@ +import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom' +import Login from './routes/Login' +import ConfigList from './routes/ConfigList' +import ConfigDetail from './routes/ConfigDetail' +import ProtectedRoute from './components/ProtectedRoute' + +export default function App() { + return ( + + + } /> + }> + } /> + } /> + + } /> + + + ) +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx new file mode 100644 index 0000000..10cd7e9 --- /dev/null +++ b/frontend/src/main.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { ThemeProvider } from '@mui/material/styles' +import CssBaseline from '@mui/material/CssBaseline' +import App from './App' +import { theme } from './theme' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + + + + +) diff --git a/frontend/src/theme.ts b/frontend/src/theme.ts new file mode 100644 index 0000000..69e7358 --- /dev/null +++ b/frontend/src/theme.ts @@ -0,0 +1,17 @@ +import { createTheme } from '@mui/material/styles' + +export const theme = createTheme({ + palette: { + mode: 'light', + primary: { main: '#3b82f6' }, + background: { default: '#f5f7fa', paper: '#ffffff' }, + }, + components: { + MuiAppBar: { styleOverrides: { root: { backgroundColor: '#1a1f2e' } } }, + MuiDrawer: { + styleOverrides: { + paper: { backgroundColor: '#1a1f2e', color: '#e2e8f0', borderRight: 'none' }, + }, + }, + }, +})