diff --git a/src/app/components/Account/AccountCard.tsx b/src/app/components/Account/AccountCard.tsx index caa26ee..b849689 100644 --- a/src/app/components/Account/AccountCard.tsx +++ b/src/app/components/Account/AccountCard.tsx @@ -1,9 +1,7 @@ import { AccessToken } from "@/types"; -import { Box, Stack, Typography } from "@mui/material"; +import { Box, Stack, Typography, useTheme } from "@mui/material"; import { CharacterRow } from "../Characters/CharacterRow"; import { PlanetaryInteractionRow } from "../PlanetaryInteraction/PlanetaryInteractionRow"; -import { useContext } from "react"; -import { SessionContext } from "@/app/context/Context"; export const AccountCard = ({ characters, @@ -12,12 +10,12 @@ export const AccountCard = ({ characters: AccessToken[]; sessionReady: boolean; }) => { - const { compactMode } = useContext(SessionContext); + const theme = useTheme(); return ( diff --git a/src/app/components/Characters/CharacterRow.tsx b/src/app/components/Characters/CharacterRow.tsx index 7a91a84..fdf4506 100644 --- a/src/app/components/Characters/CharacterRow.tsx +++ b/src/app/components/Characters/CharacterRow.tsx @@ -3,17 +3,17 @@ import { useContext, useState } from "react"; import Image from "next/image"; import Stack from "@mui/material/Stack"; -import { styled } from "@mui/material/styles"; +import { styled, useTheme } from "@mui/material/styles"; import React from "react"; import { CharacterDialog } from "./CharacterDialog"; import { AccessToken } from "@/types"; import { Box, Button } from "@mui/material"; import { EVE_IMAGE_URL } from "@/const"; -import { CharacterContext, SessionContext } from "@/app/context/Context"; +import { CharacterContext } from "@/app/context/Context"; const StackItem = styled(Stack)(({ theme }) => ({ ...theme.typography.body2, - padding: theme.spacing(2), + padding: theme.custom.compactMode ? theme.spacing(1) : theme.spacing(2), textAlign: "left", justifyContent: "center", alignItems: "center", @@ -25,7 +25,7 @@ export const CharacterRow = ({ character }: { character: AccessToken }) => { >(undefined); const { deleteCharacter, updateCharacter } = useContext(CharacterContext); - const { compactMode } = useContext(SessionContext); + const theme = useTheme(); return ( { - diff --git a/src/app/components/MainGrid.tsx b/src/app/components/MainGrid.tsx index ec4cf56..4a9f0a8 100644 --- a/src/app/components/MainGrid.tsx +++ b/src/app/components/MainGrid.tsx @@ -1,4 +1,4 @@ -import { useContext, useEffect } from "react"; +import { useContext, useEffect, useState } from "react"; import { Box, CssBaseline, @@ -15,11 +15,24 @@ interface Grouped { [key: string]: AccessToken[]; } -const darkTheme = createTheme({ - palette: { - mode: "dark", - }, -}); +declare module "@mui/material/styles" { + interface Theme { + custom: { + compactMode: boolean; + smallText: string; + cardImageSize: number; + cardMinHeight: number; + }; + } + interface ThemeOptions { + custom?: { + compactMode?: boolean; + smallText?: string; + cardImageSize?: number; + cardMinHeight?: number; + }; + } +} export const MainGrid = ({ sessionReady }: { sessionReady: boolean }) => { const { characters } = useContext(CharacterContext); @@ -31,6 +44,35 @@ export const MainGrid = ({ sessionReady }: { sessionReady: boolean }) => { }, {}); const { compactMode } = useContext(SessionContext); + const [darkTheme, setDarkTheme] = useState( + createTheme({ + palette: { + mode: "dark", + }, + custom: { + compactMode, + smallText: compactMode ? "0.6rem" : "0.8rem", + cardImageSize: compactMode ? 80 : 120, + cardMinHeight: compactMode ? 100 : 170, + }, + }) + ); + + useEffect(() => { + setDarkTheme( + createTheme({ + palette: { + mode: "dark", + }, + custom: { + compactMode, + smallText: compactMode ? "0.6rem" : "0.8rem", + cardImageSize: compactMode ? 80 : 120, + cardMinHeight: compactMode ? 100 : 170, + }, + }) + ); + }, [compactMode]); return ( @@ -41,7 +83,8 @@ export const MainGrid = ({ sessionReady }: { sessionReady: boolean }) => { {Object.values(groupByAccount).map((g, id) => ( diff --git a/src/app/components/PlanetaryInteraction/NoPlanetCard.tsx b/src/app/components/PlanetaryInteraction/NoPlanetCard.tsx index a30f069..b2740db 100644 --- a/src/app/components/PlanetaryInteraction/NoPlanetCard.tsx +++ b/src/app/components/PlanetaryInteraction/NoPlanetCard.tsx @@ -1,6 +1,4 @@ -import { SessionContext } from "@/app/context/Context"; -import { Box, Stack, Typography, styled } from "@mui/material"; -import { useContext } from "react"; +import { Box, Stack, Typography, styled, useTheme } from "@mui/material"; const StackItem = styled(Stack)(({ theme }) => ({ ...theme.typography.body2, @@ -12,20 +10,19 @@ const StackItem = styled(Stack)(({ theme }) => ({ })); export const NoPlanetCard = ({}: {}) => { - const { compactMode } = useContext(SessionContext); + const theme = useTheme(); return ( - No planet + No planet ); }; diff --git a/src/app/components/PlanetaryInteraction/PlanetCard.tsx b/src/app/components/PlanetaryInteraction/PlanetCard.tsx index 3d46f34..6358a77 100644 --- a/src/app/components/PlanetaryInteraction/PlanetCard.tsx +++ b/src/app/components/PlanetaryInteraction/PlanetCard.tsx @@ -1,4 +1,4 @@ -import { Stack, Typography, styled } from "@mui/material"; +import { Stack, Typography, styled, useTheme } from "@mui/material"; import Image from "next/image"; import { AccessToken, Planet } from "@/types"; import { Api } from "@/esi-api"; @@ -15,7 +15,6 @@ import Toolbar from "@mui/material/Toolbar"; import IconButton from "@mui/material/IconButton"; import CloseIcon from "@mui/icons-material/Close"; import Button from "@mui/material/Button"; -import { SessionContext } from "@/app/context/Context"; const StackItem = styled(Stack)(({ theme }) => ({ ...theme.typography.body2, @@ -110,7 +109,7 @@ export const PlanetCard = ({ const [planetRenderOpen, setPlanetRenderOpen] = useState(false); - const { compactMode } = useContext(SessionContext); + const theme = useTheme(); const handle3DrenderOpen = () => { setPlanetRenderOpen(true); @@ -171,13 +170,13 @@ export const PlanetCard = ({ alignItems="flex-start" height="100%" position="relative" - minHeight={compactMode ? "100px" : "170px"} + minHeight={theme.custom.cardMinHeight} > @@ -196,8 +195,12 @@ export const PlanetCard = ({ /> )}
- {planetInfoUniverse?.name} - L{planet.upgrade_level} + + {planetInfoUniverse?.name} + + + L{planet.upgrade_level} +
{extractors.map((e, idx) => { @@ -205,7 +208,7 @@ export const PlanetCard = ({ {e ? ( ({ ...theme.typography.body2, - padding: theme.spacing(2), + padding: theme.custom.compactMode ? theme.spacing(1) : theme.spacing(2), textAlign: "left", justifyContent: "center", alignItems: "center",