import { useTheme } from 'next-themes' import Image from 'next/legacy/image' import Link from 'next/link' import { useRouter } from 'next/router' import React, { useEffect, useRef } from 'react' import { IconChevronLeft } from '~/../../packages/ui' import * as Accordion from '@radix-ui/react-accordion' import HomeMenuIconPicker from './HomeMenuIconPicker' const HeaderLink = React.memo(function HeaderLink(props: { title: string id: string url: string }) { const router = useRouter() return ( {props.title ?? props.id} ) }) const ContentAccordionLink = React.memo(function ContentAccordionLink(props: any) { const router = useRouter() const { resolvedTheme } = useTheme() const activeItem = props.subItem.url === router.asPath const activeItemRef = useRef(null) const LinkContainer = (props) => { return ( {props.children} ) } useEffect(() => { // scroll to active item if (activeItem && activeItemRef.current) { // this is a hack, but seems a common one on Stackoverflow setTimeout(() => { activeItemRef.current?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }) }, 0) } }) return ( <> {props.subItemIndex === 0 && ( <>
{props.parent.name} )}
  • {props.subItem.icon && ( {props.subItem.name )} {props.subItem.name}
  • {props.subItem.items && props.subItem.items.length > 0 && ( {props.subItem.items.map((subSubItem) => { return (
  • {subSubItem.name}
  • ) })}
    )}
    ) }) const ContentLink = React.memo(function ContentLink(props: any) { const router = useRouter() return (
  • {props.icon && ( {props.icon} )} {props.name}
  • ) }) const Content = (props) => { const { menu, id } = props return ( ) } export default React.memo(Content)