import React, { useCallback, useState } from 'react';
import cx from 'classnames';
import Link from 'next/link';
import {
Menu,
MenuItem,
MenuSection,
VersionMetadata,
} from '@nrwl/nx-dev/data-access-documents';
import { useRouter } from 'next/router';
import { Selector } from '@nrwl/nx-dev/ui/common';
export interface SidebarProps {
menu: Menu;
version: VersionMetadata;
versionList: VersionMetadata[];
flavorList: any[];
flavor: any;
navIsOpen: boolean;
}
export function Sidebar({
flavor,
flavorList,
version,
versionList,
menu,
navIsOpen,
}: SidebarProps) {
const router = useRouter();
const getStartedPath = (version: string, flavor: string): string =>
`/${version}/${flavor}/getting-started/${
version === 'latest' ? 'getting-started' : 'intro'
}`;
return (
({
label: version.name,
value: version.id,
}))}
selected={{ label: version.name, value: version.id }}
onChange={(item) =>
router.push(getStartedPath(item.value, flavor.value))
}
/>
router.push(getStartedPath(version.id, item.value))
}
/>
);
}
function SidebarSection({ section }: { section: MenuSection }) {
return (
<>
{section.hideSectionHeader ? null : (
{section.name}
)}
-
{section.itemList.map((item) => (
))}
>
);
}
function SidebarSectionItems({ item }: { item: MenuItem }) {
const router = useRouter();
const [collapsed, setCollapsed] = useState(!item.disableCollapsible);
const handleCollapseToggle = useCallback(() => {
if (!item.disableCollapsible) {
setCollapsed(!collapsed);
}
}, [collapsed, setCollapsed, item]);
return (
<>
{item.name}
{item.disableCollapsible ? null : (
)}
>
);
}
function CollapsibleIcon({ isCollapsed }: { isCollapsed: boolean }) {
return (
);
}
export default Sidebar;