better admin page/list link

This commit is contained in:
yohlo
2025-08-25 22:49:19 -05:00
parent 555d79b6db
commit 38fb060b78
4 changed files with 37 additions and 29 deletions

View File

@@ -1,22 +1,6 @@
import { createFileRoute } from "@tanstack/react-router" import { createFileRoute } from "@tanstack/react-router"
import { Title } from "@mantine/core"; import { AdminPage } from "@/features/admin";
import Page from "@/components/page";
import { playerQueries } from "@/features/players/queries";
import { useQuery } from "@tanstack/react-query";
import PlayerList from "@/features/players/components/player-list";
export const Route = createFileRoute("/_authed/admin/")({ export const Route = createFileRoute("/_authed/admin/")({
loader: async ({ context }) => { component: () => <AdminPage />,
const { queryClient } = context;
await queryClient.ensureQueryData(playerQueries.list())
},
component: RouteComponent,
}) })
function RouteComponent() {
const { data: players, isLoading } = useQuery(playerQueries.list());
return <Page>
<Title order={2} mb='md'>Players</Title>
<PlayerList players={players!} loading={isLoading} />
</Page>
}

View File

@@ -1,4 +1,4 @@
import { NavLink, Text } from "@mantine/core"; import { Divider, NavLink, Text } from "@mantine/core";
import { CaretRightIcon, Icon } from "@phosphor-icons/react"; import { CaretRightIcon, Icon } from "@phosphor-icons/react";
import { Link, useNavigate } from "@tanstack/react-router"; import { Link, useNavigate } from "@tanstack/react-router";
@@ -12,6 +12,7 @@ const ListLink = ({ label, to, Icon }: ListLinkProps) => {
const navigate = useNavigate(); const navigate = useNavigate();
return ( return (
<>
<NavLink <NavLink
w='100%' w='100%'
p='md' p='md'
@@ -21,6 +22,8 @@ const ListLink = ({ label, to, Icon }: ListLinkProps) => {
leftSection={<Icon weight='bold' size={20} />} leftSection={<Icon weight='bold' size={20} />}
rightSection={<CaretRightIcon size={20} />} rightSection={<CaretRightIcon size={20} />}
/> />
<Divider />
</>
) )
} }

View File

@@ -0,0 +1,17 @@
import { Title, List, Divider } from "@mantine/core";
import ListLink from "@/components/list-link";
import Page from "@/components/page";
import { TrophyIcon } from "@phosphor-icons/react";
const AdminPage = () => {
return (
<Page noPadding>
<Title pl='sm' order={2} mb="md">Admin</Title>
<List>
<ListLink label="Manage Tournaments" Icon={TrophyIcon} to="/admin/tournaments" />
</List>
</Page>
);
};
export default AdminPage;

View File

@@ -1,3 +1,7 @@
import { Logger } from "@/lib/logger"; import { Logger } from "@/lib/logger";
export const logger = new Logger('Admin'); export const logger = new Logger('Admin');
export { default as CreateTournament } from './components/create-tournament';
export { default as EditTournament } from './components/edit-tournament';
export { default as AdminPage } from './components/admin-page';