Files
echecsfrance/app/[lang]/tournois/TournamentsDisplay.tsx
T
Timothy Armes 1715b1646b Mutual Highlighting (#41) (#55)
* Mutual Highlighting (#41)

* Tidy up

* Delete unused API route
2023-07-05 13:55:56 +02:00

50 lines
1.2 KiB
TypeScript

"use client";
import dynamic from "next/dynamic";
import { useTranslations } from "next-intl";
import { useHydrateAtoms } from "jotai/utils";
import { Tournament } from "@/types";
import { tournamentsAtom } from "@/app/atoms";
import TournamentTable from "./TournamentTable";
const LoadingMap = () => {
const t = useTranslations("Tournaments");
return (
<div className="grid h-screen place-items-center bg-white text-gray-900 dark:bg-gray-800 dark:text-white">
<p>{t("loading")}</p>
</div>
);
};
/**
* Imports the tournament map component, ensuring CSR only.
* @remarks SSR is not supported by react-leaflet
*/
const TournamentMap = dynamic(() => import("./TournamentMap"), {
ssr: false,
loading: LoadingMap,
});
type TournamentsDisplayProps = {
tournaments: Tournament[];
};
export default async function TournamentsDisplay({
tournaments,
}: TournamentsDisplayProps) {
useHydrateAtoms([[tournamentsAtom, tournaments]]);
return (
<main className="relative grid h-full w-full lg:grid-cols-2">
<div className="">
<TournamentMap />
</div>
<div className="relative bg-white dark:bg-gray-800 lg:overflow-y-auto">
<TournamentTable />
</div>
</main>
);
}