import { useRef, useState } from 'react' import { useEffect } from 'react' import { NavLink, useLocation } from 'react-router-dom'; import { Sidenav, initTE, } from "tw-elements"; import SidebarSubmenu from './SidebarSubmenu'; import ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon'; import * as React from 'react'; 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; } }, []) return ( ) }