/* eslint-disable @typescript-eslint/consistent-type-definitions */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unnecessary-condition */ /* eslint-disable @typescript-eslint/restrict-plus-operands */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-call */ import ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon' import { useRef, useState, useEffect } from 'react' import { NavLink, useLocation } from 'react-router-dom' import { Sidenav, initTE } from 'tw-elements' import SidebarSubmenu from './SidebarSubmenu' type route = { path: string icon: JSX.Element name: string submenu?: route blank?: boolean } export function SideBar({ routes, bottomRoutes }: { routes: route[]; bottomRoutes?: route[] }) { // prevent react18 from calling useEffect twice const init = useRef(false) const location = useLocation() const [instance, setInstance] = useState(null) const [slim, setSlim] = useState(false) const toggleSlim = () => { setSlim(!slim) instance.toggleSlim() } useEffect(() => { if (!init.current) { initTE({ Sidenav }) const instance = Sidenav.getInstance(document.getElementById('sidenav')) setInstance(instance) instance.toggleSlim() init.current = true } }, []) const [embedded, setEmbedded] = useState(true) useEffect(() => { const params = new URLSearchParams(location.search) const embedded = params.get('embedded') embedded !== 'true' && setEmbedded(false) }, [location]) const params = new URLSearchParams(window.location.search) return ( ) }