import { createVersionURL, isPrerelease, parseHostnameSemVer, } from "#components/VersionPicker/utils.ts"; import clsx from "clsx"; import React, { memo } from "react"; import "./styles.css"; export interface VersionDropdownProps { /** * The hostname of the client. */ hostname: string | null; /** * The origin of the prerelease documentation. * * @format url */ prereleaseOrigin: string; /** * The available versions of the documentation. * * @format semver */ releases: string[]; } /** * A dropdown that shows the available versions of the documentation. */ export const VersionDropdown = memo( ({ hostname, prereleaseOrigin, releases }) => { const prerelease = isPrerelease(hostname); const parsedSemVer = !prerelease ? parseHostnameSemVer(hostname) : null; const currentLabel = parsedSemVer || "Pre-Release"; const endIndex = parsedSemVer ? releases.indexOf(parsedSemVer) : -1; const visibleReleases = releases.slice(0, endIndex === -1 ? 3 : endIndex + 3); return (
  • ); }, );