diff --git a/src/components/list-item-link.tsx b/src/components/list-item-link.tsx index bc1bd31b5b154c00f509d02799b3588c3c9a6550..3e45320d18964202a534ef6976b8c2c785625166 100644 --- a/src/components/list-item-link.tsx +++ b/src/components/list-item-link.tsx @@ -1,4 +1,4 @@ -import { ListItem, ListItemButton, ListItemText } from "@mui/material"; +import { alpha, ListItem, ListItemButton, ListItemText } from "@mui/material"; import { useMatch, useResolvedPath, useNavigate } from "react-router-dom"; import type { LinkProps } from "react-router-dom"; @@ -12,42 +12,30 @@ const ListItemLink = (props: LinkProps) => { return ( <ListItem sx={{ py: 0.5, maxWidth: 250, mx: "auto" }}> <ListItemButton + selected={!!match} sx={[ { - color: "primary", borderRadius: 2, textAlign: "center", + "& .MuiListItemText-primary": { color: "text.secondary" }, }, - (theme) => { - if (!match) return {}; - - if (theme.palette.mode === "light") { - return { - bgcolor: "rgba(91,92,157,0.15)", - "&:hover": { bgcolor: "rgba(91,92,157,0.15)" }, - }; - } + ({ palette: { mode, primary } }) => { + const bgcolor = + mode === "light" + ? alpha(primary.main, 0.15) + : alpha(primary.main, 0.35); + const color = mode === "light" ? primary.main : primary.light; return { - bgcolor: "rgba(91,92,157,0.35)", - "&:hover": { bgcolor: "rgba(91,92,157,0.35)" }, + "&.Mui-selected": { bgcolor }, + "&.Mui-selected:hover": { bgcolor }, + "&.Mui-selected .MuiListItemText-primary": { color }, }; }, ]} onClick={() => navigate(to)} > - <ListItemText - primary={children} - sx={{ - color: (theme) => { - if (!match) return "text.secondary"; - - const light = theme.palette.mode === "light"; - if (match && light) return "primary.main"; - return "primary.light"; - }, - }} - /> + <ListItemText primary={children} /> </ListItemButton> </ListItem> ); diff --git a/src/components/proxy-group.tsx b/src/components/proxy-group.tsx index 61eb3344129ec54418eaa830ca53a79e76754e4f..bf3bb4ed2eb662abd54006fb28d0bd98510177b2 100644 --- a/src/components/proxy-group.tsx +++ b/src/components/proxy-group.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import { Virtuoso } from "react-virtuoso"; import { + alpha, Box, Collapse, Divider, @@ -32,9 +33,26 @@ const Item = ({ proxy, selected, onClick }: ItemProps) => { return ( <ListItem sx={{ py: 0, pl: 4 }}> <ListItemButton + dense selected={selected} onClick={() => onClick?.(proxy.name)} - sx={{ borderRadius: 1, py: 0.5 }} + sx={[ + { + borderRadius: 1, + }, + ({ palette: { mode, primary } }) => { + const bgcolor = + mode === "light" + ? alpha(primary.main, 0.15) + : alpha(primary.main, 0.35); + const color = mode === "light" ? primary.main : primary.light; + + return { + "&.Mui-selected": { bgcolor }, + "&.Mui-selected .MuiListItemText-secondary": { color }, + }; + }, + ]} > <ListItemText title={proxy.name} secondary={proxy.name} /> <ListItemIcon @@ -77,10 +95,9 @@ const ProxyGroup = ({ group }: Props) => { return ( <> - <ListItem button onClick={() => setOpen(!open)}> + <ListItem button onClick={() => setOpen(!open)} dense> <ListItemText primary={group.name} - sx={{ my: 0.25 }} secondary={ <> <SendRounded color="primary" sx={{ mr: 1, fontSize: 14 }} />