mhsf-dev/apps/www/src/components/feat/server-page/server-page.tsx

65 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-03-08 15:21:26 -06:00
"use client";
import type { ServerResponse } from "@/lib/types/mh-server";
import IconDisplay from "../icons/minecraft-icon-display";
import { ServerPageTags } from "./server-page-tags";
import { Separator } from "@/components/ui/separator";
import { ServerRows } from "./server-rows";
import { ServerPageButtons } from "./server-page-buttons";
2025-03-15 16:58:24 -05:00
import type { useMHSFServer } from "@/lib/hooks/use-mhsf-server";
import { cn } from "@/lib/utils";
import { useEffect } from "react";
export function ServerMainPage({
server,
mhsfData,
}: {
server: ServerResponse;
mhsfData: ReturnType<typeof useMHSFServer>;
}) {
useEffect(() => {
if (mhsfData.server?.customizationData.banner !== undefined)
window.dispatchEvent(new Event("force-dark-mode"));
});
2025-03-08 15:21:26 -06:00
return (
2025-03-15 16:58:24 -05:00
<div
className={cn(
"xl:px-[100px]",
mhsfData.server?.customizationData.banner === undefined
? "pt-[150px]"
: "pt-[300px]"
)}
>
{mhsfData.server?.customizationData.banner && (
<img
src={mhsfData.server?.customizationData.banner}
alt="User provided banner for server"
className="rounded align-middle block ml-auto mr-auto absolute left-0 z-0 w-full object-fill"
style={{
maskImage: "linear-gradient(to top, transparent, black)",
top: "0",
}}
/>
)}
<span className="flex items-center gap-2 w-full relative">
2025-03-08 15:21:26 -06:00
<div className="bg-secondary p-4 rounded-lg ml-4">
<IconDisplay server={server} />
</div>
<p className="w-full">
<div className="flex justify-between w-full">
<h1 className="text-2xl font-bold">{server.name}</h1>
<span>
2025-03-15 16:58:24 -05:00
<ServerPageButtons server={server} mhsfData={mhsfData} />
2025-03-08 15:21:26 -06:00
</span>
</div>
<span className="flex items-center gap-2 flex-wrap">
<ServerPageTags server={server} className="mt-1" />
</span>
</p>
</span>
<Separator className="my-6" />
2025-03-15 16:58:24 -05:00
<ServerRows server={server} mhsfData={mhsfData} />
2025-03-08 15:21:26 -06:00
</div>
);
}