diff --git a/public/images/dowdelogo.png b/public/images/dowdelogo.png
new file mode 100644
index 0000000..483980f
Binary files /dev/null and b/public/images/dowdelogo.png differ
diff --git a/src/App.tsx b/src/App.tsx
index 9d71cf6..fa249d9 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -4,14 +4,16 @@ import {
AppBar,
Box,
Container,
- createTheme,
- ThemeProvider,
+ IconButton,
Toolbar,
Typography,
- useTheme
} from "@mui/material";
+import { useNavigate, BrowserRouter } from "react-router-dom";
import { MyRoutes } from "./Routes";
import { styled } from '@mui/material/styles';
+import { ThemeProvider as CustomThemeProvider, useThemeContext } from './context/ThemeContext';
+import DarkModeIcon from '@mui/icons-material/DarkMode';
+import LightModeIcon from '@mui/icons-material/LightMode';
// Styled components
const StyledAppBar = styled(AppBar)(({ theme }) => ({
@@ -20,12 +22,20 @@ const StyledAppBar = styled(AppBar)(({ theme }) => ({
borderBottom: '1px solid rgba(255, 255, 255, 0.1)',
}));
+const StyledAppBarLight = styled(AppBar)(({ theme }) => ({
+ background: 'linear-gradient(135deg, #ffffff 0%, #f0f0f0 50%, #e0e0e0 100%)',
+ boxShadow: '0 4px 20px rgba(0, 0, 0, 0.1)',
+ borderBottom: '1px solid rgba(0, 0, 0, 0.1)',
+}));
+
const LogoText = styled(Typography)(({ theme }) => ({
fontSize: '1.5rem',
fontWeight: 800,
- background: 'linear-gradient(135deg, #e94560 0%, #ff6b6b 100%)',
+ background: theme.palette.mode === 'dark'
+ ? 'linear-gradient(135deg, #dee2e6 0%, #cccccc 100%)'
+ : 'linear-gradient(135deg, #1a1a2e 0%, #333333 100%)',
WebkitBackgroundClip: 'text',
- WebkitTextFillColor: 'transparent',
+ WebkitTextFillColor: theme.palette.mode === 'dark' ? '#dee2e6' : '#1a1a2e',
letterSpacing: '-0.5px',
cursor: 'pointer',
'&:hover': {
@@ -34,69 +44,79 @@ const LogoText = styled(Typography)(({ theme }) => ({
},
}));
-function App() {
- const theme = useTheme();
+const ThemeToggle = styled(IconButton)(({ theme }) => ({
+ color: 'inherit',
+ '&:hover': {
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
+ },
+}));
- const themeConfig = createTheme({
- breakpoints: {
- values: {
- xs: 0,
- sm: 600,
- md: 900,
- lg: 1320,
- xl: 1536,
- },
- },
- palette: {
- primary: {
- main: "#1a1a2e",
- },
- background: {
- default: '#0a0a0a',
- paper: '#1a1a2e',
- },
- },
- typography: {
- fontFamily: '"Inter", "Roboto", "Helvetica", sans-serif',
- },
- shape: {
- borderRadius: 12,
- },
- components: {
- MuiTableCell: {
- styleOverrides: {
- root: {
- color: 'rgba(255, 255, 255, 0.85)',
- },
- },
- },
- },
- });
+const ThemeToggleLight = styled(IconButton)(({ theme }) => ({
+ color: 'inherit',
+ '&:hover': {
+ backgroundColor: 'rgba(0, 0, 0, 0.05)',
+ },
+}));
+
+function AppBarContent() {
+ const { mode, toggleTheme } = useThemeContext();
+ const navigate = useNavigate();
+ const isDark = mode === 'dark';
+
+ const handleLogoClick = () => navigate('/');
return (
-
+
+
{requirement.requiredTotalPop}
{requirement.mobBonus.mobvalueRequired} in radius {requirement.mobBonus.proximityRequired}
-
-
}
-
}
-
}
+
{unit.moraleMax}
+{unit.moraleRegeneration}/s
@@ -98,7 +132,7 @@ function Unit(unit: IUnit, mod: IMod) {
const SergeantShort = (props: sergeantProps) => {
return (
-
+
{props.icon &&