'use client'; import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown'; import { VscVersions } from '@react-icons/all-files/vsc/VscVersions'; import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useMemo } from 'react'; import useSWR from 'swr'; const isDev = process.env.NEXT_PUBLIC_LOCAL_DEV === 'true' ?? process.env.NEXT_PUBLIC_VERCEL_ENV === 'preview'; // eslint-disable-next-line promise/prefer-await-to-then const fetcher = async (url: string) => fetch(url).then(async (res) => res.json()); export default function VersionSelect({ versions }: { readonly versions: string[] }) { const pathname = usePathname(); const packageName = pathname?.split('/').slice(3, 4)[0]; const branchName = pathname?.split('/').slice(4, 5)[0]; const { data } = useSWR('/api/user', { fetcher, fallbackData: versions }); const versionMenu = useMenuState({ gutter: 8, sameWidth: true, fitViewport: true, }); const versionMenuItems = useMemo( () => data?.map((item, idx) => ( versionMenu.setOpen(false)} state={versionMenu} > {item} )) ?? [], [data, packageName, versionMenu], ); return ( <>
{branchName}
{versionMenuItems} ); }