mirror of
https://github.com/DeveloLongScript/MHSF.git
synced 2026-05-07 17:54:59 -05:00
fix: new changes
This commit is contained in:
parent
a019e1e5b1
commit
b49b73af80
@ -128,7 +128,7 @@ export async function generateMetadata(
|
|||||||
|
|
||||||
export default function ServerPage({ params }: { params: { server: string } }) {
|
export default function ServerPage({ params }: { params: { server: string } }) {
|
||||||
return (
|
return (
|
||||||
<main>
|
<main style={{ "color-scheme": "dark" } as React.CSSProperties}>
|
||||||
<ColorProvider server={params.server}>
|
<ColorProvider server={params.server}>
|
||||||
<div className={"pt-[300px] xl:px-[100px]"}>
|
<div className={"pt-[300px] xl:px-[100px]"}>
|
||||||
<Banner server={params.server} />
|
<Banner server={params.server} />
|
||||||
|
|||||||
@ -97,7 +97,7 @@ export async function generateMetadata(
|
|||||||
|
|
||||||
export default function ServerPage({ params }: { params: { server: string } }) {
|
export default function ServerPage({ params }: { params: { server: string } }) {
|
||||||
return (
|
return (
|
||||||
<main>
|
<main style={{ "color-scheme": "dark" } as React.CSSProperties}>
|
||||||
<ColorProvider server={params.server}>
|
<ColorProvider server={params.server}>
|
||||||
<div className={"pt-[300px] xl:px-[100px]"}>
|
<div className={"pt-[300px] xl:px-[100px]"}>
|
||||||
<Banner server={params.server} />
|
<Banner server={params.server} />
|
||||||
|
|||||||
@ -66,7 +66,7 @@ export default function Banner({ server }: { server: string }) {
|
|||||||
? bannerURL
|
? bannerURL
|
||||||
: "wsrv.nl/?url=" + encodeURIComponent(bannerURL) + "?n=-1"
|
: "wsrv.nl/?url=" + encodeURIComponent(bannerURL) + "?n=-1"
|
||||||
}
|
}
|
||||||
className="rounded align-middle block ml-auto mr-auto absolute left-0 z-0 max-h-[400px] w-full object-fill"
|
className="rounded align-middle block ml-auto mr-auto absolute left-0 z-0 w-full object-fill"
|
||||||
alt="User-provided banner for this server."
|
alt="User-provided banner for this server."
|
||||||
style={
|
style={
|
||||||
{
|
{
|
||||||
|
|||||||
@ -33,6 +33,7 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes";
|
import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes";
|
||||||
import { type ThemeProviderProps } from "next-themes";
|
import { type ThemeProviderProps } from "next-themes";
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Document {
|
interface Document {
|
||||||
@ -48,6 +49,7 @@ declare global {
|
|||||||
|
|
||||||
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
|
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
|
||||||
const [mounted, setMounted] = React.useState(false);
|
const [mounted, setMounted] = React.useState(false);
|
||||||
|
const pathname = usePathname();
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
setMounted(true);
|
setMounted(true);
|
||||||
@ -55,7 +57,14 @@ export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
|
|||||||
|
|
||||||
if (!mounted) return null;
|
if (!mounted) return null;
|
||||||
|
|
||||||
return <NextThemesProvider {...props}>{children}</NextThemesProvider>;
|
return (
|
||||||
|
<NextThemesProvider
|
||||||
|
forcedTheme={pathname?.startsWith("/server") ? "dark" : undefined}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</NextThemesProvider>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface UseThemeTransitionResult {
|
interface UseThemeTransitionResult {
|
||||||
|
|||||||
@ -39,9 +39,11 @@ import {
|
|||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from "@/components/ui/dropdown-menu";
|
} from "@/components/ui/dropdown-menu";
|
||||||
import { useThemeTransition } from "./ThemeProvider";
|
import { useThemeTransition } from "./ThemeProvider";
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
|
|
||||||
export function ModeToggle() {
|
export function ModeToggle() {
|
||||||
const { changeTheme } = useThemeTransition();
|
const { changeTheme } = useThemeTransition();
|
||||||
|
const pathname = usePathname();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DropdownMenu>
|
<DropdownMenu>
|
||||||
@ -53,13 +55,28 @@ export function ModeToggle() {
|
|||||||
</Button>
|
</Button>
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent align="end">
|
<DropdownMenuContent align="end">
|
||||||
<DropdownMenuItem onClick={() => changeTheme("light")}>
|
{pathname?.startsWith("/server") && (
|
||||||
|
<div className="text-sm p-4">
|
||||||
|
For compatibility reasons, <br /> server pages are forced to dark
|
||||||
|
mode
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<DropdownMenuItem
|
||||||
|
onClick={() => changeTheme("light")}
|
||||||
|
disabled={pathname?.startsWith("/server")}
|
||||||
|
>
|
||||||
Light
|
Light
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem onClick={() => changeTheme("dark")}>
|
<DropdownMenuItem
|
||||||
|
onClick={() => changeTheme("dark")}
|
||||||
|
disabled={pathname?.startsWith("/server")}
|
||||||
|
>
|
||||||
Dark
|
Dark
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem onClick={() => changeTheme("system")}>
|
<DropdownMenuItem
|
||||||
|
onClick={() => changeTheme("system")}
|
||||||
|
disabled={pathname?.startsWith("/server")}
|
||||||
|
>
|
||||||
System
|
System
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user