mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat: redirect to latest version, otherwise click select version button
This commit is contained in:
@@ -8,8 +8,11 @@ import {
|
||||
Stack,
|
||||
Title,
|
||||
useMantineColorScheme,
|
||||
Button,
|
||||
} from '@mantine/core';
|
||||
import Link from 'next/link';
|
||||
import { useRouter } from 'next/router';
|
||||
import type { MouseEvent } from 'react';
|
||||
import { VscArrowRight, VscPackage } from 'react-icons/vsc';
|
||||
import { PACKAGES } from '~/util/packages';
|
||||
|
||||
@@ -35,6 +38,17 @@ const useStyles = createStyles((theme) => ({
|
||||
export default function PackagesRoute() {
|
||||
const { classes } = useStyles();
|
||||
const { colorScheme } = useMantineColorScheme();
|
||||
const router = useRouter();
|
||||
|
||||
const handleClick = async (ev: MouseEvent<HTMLDivElement>, packageName: string) => {
|
||||
ev.stopPropagation();
|
||||
|
||||
const res = await fetch(`https://docs.discordjs.dev/api/info?package=${packageName ?? 'builders'}`);
|
||||
const data: string[] = await res.json();
|
||||
|
||||
const latestVersion = data.at(-2);
|
||||
void router.push(`/docs/packages/${packageName}/${latestVersion}`);
|
||||
};
|
||||
|
||||
return (
|
||||
<Container className={classes.outer} size="xs">
|
||||
@@ -43,9 +57,15 @@ export default function PackagesRoute() {
|
||||
Select a package:
|
||||
</Title>
|
||||
{PACKAGES.map((pkg) => (
|
||||
<Link key={pkg} href={`/docs/packages/${pkg}`} passHref prefetch={false}>
|
||||
<UnstyledButton className={classes.control} component="a">
|
||||
<Group position="apart">
|
||||
<UnstyledButton
|
||||
component="div"
|
||||
key={pkg}
|
||||
role="link"
|
||||
className={classes.control}
|
||||
onClick={(ev: MouseEvent<HTMLDivElement>) => void handleClick(ev, pkg)}
|
||||
>
|
||||
<Group position="apart">
|
||||
<Group sx={{ flexGrow: 1 }} position="apart">
|
||||
<Group>
|
||||
<ThemeIcon variant={colorScheme === 'dark' ? 'filled' : 'outline'} radius="sm" size={30}>
|
||||
<VscPackage size={20} />
|
||||
@@ -54,10 +74,20 @@ export default function PackagesRoute() {
|
||||
{pkg}
|
||||
</Text>
|
||||
</Group>
|
||||
<VscArrowRight size={20} />
|
||||
<Link href={`/docs/packages/${pkg}`} passHref prefetch={false}>
|
||||
<Button
|
||||
component="a"
|
||||
size="xs"
|
||||
compact
|
||||
onClick={(ev: MouseEvent<HTMLAnchorElement>) => ev.stopPropagation()}
|
||||
>
|
||||
Select version
|
||||
</Button>
|
||||
</Link>
|
||||
</Group>
|
||||
</UnstyledButton>
|
||||
</Link>
|
||||
<VscArrowRight size={20} />
|
||||
</Group>
|
||||
</UnstyledButton>
|
||||
))}
|
||||
</Stack>
|
||||
</Container>
|
||||
|
||||
Reference in New Issue
Block a user