import styles from './SidebarStyles/SidebarSubmenu.module.css'; import { Link } from 'react-router-dom'; import { motion, AnimatePresence } from 'framer-motion'; import { useRef, useEffect, useState } from 'react'; import { SidebarSubmenuProps } from './sidebarTypes'; const SidebarSubmenu: React.FC = ({ item, isOpen, isMinimized = false }) => { if (!item.submenu) return null; return ( {isOpen && ( {isMinimized ? ( // Horizontal layout for minimized sidebar
    {item.submenu.map(subitem => { const SubIcon = subitem.icon as React.ComponentType>; return (
  • {SubIcon && ( )}
  • ); })}
) : ( // Vertical layout for expanded sidebar
    {item.submenu.map(subitem => { const textRef = useRef(null); const containerRef = useRef(null); const [isOverflowing, setIsOverflowing] = useState(false); useEffect(() => { const checkOverflow = () => { if (textRef.current && containerRef.current) { const textWidth = textRef.current.scrollWidth; const containerWidth = containerRef.current.clientWidth; setIsOverflowing(textWidth > containerWidth); } }; checkOverflow(); // Also check on window resize window.addEventListener('resize', checkOverflow); return () => window.removeEventListener('resize', checkOverflow); }, [subitem.name]); const SubIcon = subitem.icon as React.ComponentType>; return (
  • {SubIcon && } {subitem.name}
  • ); })}
)}
)}
); }; export default SidebarSubmenu;