import * as Accordion from '@radix-ui/react-accordion' import Link from 'next/link' import { useRouter } from 'next/router' import { IconChevronLeft, IconChevronUp, cn } from 'ui' import * as NavItems from './NavigationMenu.constants' import Image from 'next/image' import RevVersionDropdown from '~/components/RefVersionDropdown' import { useMenuActiveRefId } from '~/hooks/useMenuState' import React, { Fragment } from 'react' import { ICommonItem, ICommonSection } from '~/components/reference/Reference.types' import HomeMenuIconPicker from './HomeMenuIconPicker' import { deepFilterSections } from './NavigationMenu.utils' const HeaderLink = React.memo(function HeaderLink(props: any) { return ( {props.title ?? props.id} ) }) interface FunctionLinkProps { title: string name?: string id: string icon?: string basePath: string slug: string isParent?: boolean isSubItem?: boolean } const FunctionLink = React.memo(function FunctionLink({ title, id, icon, basePath, slug, isParent = false, isSubItem = false, }: FunctionLinkProps) { const router = useRouter() const activeAccordionItem = useMenuActiveRefId() const url = `${router.basePath}${basePath}/${slug}` const active = activeAccordionItem === id return (
  • { e.preventDefault() history.pushState({}, '', url) document.getElementById(slug)?.scrollIntoView() }} className={cn( 'cursor-pointer transition text-sm hover:text-scale-1200 gap-3 relative', isParent ? 'flex justify-between' : 'leading-3', active ? 'text-brand' : 'text-scale-1000' )} > {icon && {icon}} {title} {active && !isSubItem && ( )} {isParent && ( )}
  • ) }) export interface RenderLinkProps { section: ICommonSection basePath: string } const RenderLink = React.memo(function RenderLink({ section, basePath }: RenderLinkProps) { const activeAccordionItem = useMenuActiveRefId() if (!('items' in section)) { return ( ) } let active = section.id === activeAccordionItem || section.items.some((item) => item.id === activeAccordionItem) return ( {section.items.map((item) => { return ( ) })} ) }) const SideMenuTitle = ({ title }: { title: string }) => { return ( {title} ) } const Divider = () => { return
    } interface NavigationMenuRefListItemsProps { id: string basePath: string commonSections: ICommonItem[] spec?: any } const NavigationMenuRefListItems = ({ id, basePath, commonSections, spec, }: NavigationMenuRefListItemsProps) => { const menu = NavItems[id] const specFunctionIds = spec?.functions.map(({ id }) => id) const filteredSections = spec ? deepFilterSections(commonSections, specFunctionIds) : commonSections return (
    Back to Main Menu
    ) } export default React.memo(NavigationMenuRefListItems)