diff --git a/client/src/App.tsx b/client/src/App.tsx index 59df985..53751ec 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,15 +1,15 @@ import { Box, Container } from '@mui/material'; import { useState } from 'react'; -import { HashRouter, Route, Routes } from 'react-router-dom'; +import { BrowserRouter, Route, Routes } from 'react-router-dom'; import AlertComponent from './components/Alert'; import Footer from './components/Footer'; import Header from './components/Header'; +import ServerDetails from './components/ServerDetails'; import SearchState from './data/SearchState'; import ServerData from './data/ServerData'; import About from './pages/About'; import Home from './pages/Home'; import NotFound from './pages/NotFound'; -import ServerDetails from './pages/ServerDetails'; export function App() { const [alertInfo, setAlertInfo] = useState<{ @@ -75,8 +75,8 @@ export function App() { export function WrappedApp() { return ( - + - + ); } diff --git a/client/src/components/ServerCard.tsx b/client/src/components/ServerCard.tsx index 5fb87f8..a671f1b 100644 --- a/client/src/components/ServerCard.tsx +++ b/client/src/components/ServerCard.tsx @@ -103,12 +103,12 @@ export default function ServerCard({ server }: { server: ServerData }) { return ( void; @@ -18,12 +18,22 @@ export const ThemeContext = createContext({ export function ThemeContextProvider({ children }: ThemeProviderProps) { const rootElement = document.getElementById('root'); const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); - const [mode, setMode] = useState<'light' | 'dark'>( - prefersDarkMode ? 'dark' : 'light' - ); + const [mode, setMode] = useState<'light' | 'dark'>(() => { + const manualTheme = localStorage.getItem('theme'); + if (manualTheme && (manualTheme === 'light' || manualTheme === 'dark')) { + return manualTheme; + } + return prefersDarkMode ? 'dark' : 'light'; + }); + + useEffect(() => { + localStorage.setItem('theme', mode); + }, [mode]); + const switchColorMode = () => { setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light')); }; + const theme = useMemo( () => createTheme({ diff --git a/client/src/index.css b/client/src/index.css index 4d580f1..8ceb8fe 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -7,3 +7,7 @@ user-drag: none; user-select: none; } + +code { + user-select: text; +} diff --git a/client/src/pages/About.tsx b/client/src/pages/About.tsx index 3a7c59e..603a6aa 100644 --- a/client/src/pages/About.tsx +++ b/client/src/pages/About.tsx @@ -31,13 +31,10 @@ export default function About() { LandSandBoat {' '} - software (or serving their API). Servers are updated every hour, - and are automatically removed after 24 hours of failed updates. - All information is pulled directly from the servers and Ixion - makes no guarantees as to how current or correct the information - is and is in no way affiliated with any listed server. Always use - a different strong and unique password for every server (and just - in general). + software (or serving their API). Servers are updated at a set + interval and are removed after a variable amount of + disconnectivity. All information is gathered directly from the + listed servers. @@ -65,7 +62,8 @@ export default function About() { align="justify" color={(theme) => alpha(theme.palette.text.primary, 0.87)} > - Additional servers can be found on the XiPrivateServers{' '} + Additional servers and more detailed information can be found on + the XiPrivateServers{' '} GitHub @@ -82,6 +80,72 @@ export default function About() { here! + + + Notes + +
    + alpha(theme.palette.text.primary, 0.87)} + className="mb-2" + > + Due to the nature of private server customization, only basic + details can be gathered from the LSB API. Ixion doesn't + know about EXP table changes or any kind of scripting or core + changes, just basic settings. If a server doesn't have a + website linked, check the{' '} + + XiPrivateServers GitHub + {' '} + and see if it's listed there. Server owners see below for + how to add a link to your website. + + alpha(theme.palette.text.primary, 0.87)} + className="mb-2" + > + The information provided by Ixion is sourced from third-party + sources, and while we strive to ensure accuracy, we cannot + guarantee its completeness or reliability. Users are encouraged + to verify any information independently before making decisions + based on it. + + alpha(theme.palette.text.primary, 0.87)} + className="mb-2" + > + Ixion may contain links to external websites operated by third + parties. These links are provided for convenience and + informational purposes only. We do not endorse or control the + content of these third-party sites, and we are not responsible + for their accuracy, legality, or content. Users access external + sites at their own risk. + + alpha(theme.palette.text.primary, 0.87)} + className="mb-2" + > + All names, trademarks, and copyrights mentioned on this website + belong to their respective owners. Any use of these names, + trademarks, and copyrights is for identification purposes only + and does not imply endorsement, sponsorship, or affiliation with + our website. We acknowledge the ownership of these intellectual + properties and respect the rights of their owners. + +
+