(({ showPrivacyLinks={true} className={clsx( 'transition-all duration-300 ease-in-out', - shouldShowSidebar && isAuthenticated && { - 'lg:ml-[var(--sidebar-width)]': !isSidebarCollapsed, - 'lg:ml-16': isSidebarCollapsed, - } + shouldShowSidebar && isAuthenticated && !isSidebarCollapsed && 'lg:ml-[var(--sidebar-width)]', + shouldShowSidebar && isAuthenticated && isSidebarCollapsed && 'lg:ml-[var(--sidebar-collapsed-width)]' )} /> )} diff --git a/frontend/src/components/layout/Sidebar/Sidebar.tsx b/frontend/src/components/layout/Sidebar/Sidebar.tsx index d15bde12..4ac4c53c 100644 --- a/frontend/src/components/layout/Sidebar/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar/Sidebar.tsx @@ -40,6 +40,10 @@ export interface SidebarProps { * Callback when sidebar is closed (mobile) */ onClose?: () => void; + /** + * Callback when sidebar collapse state is toggled (desktop) + */ + onToggleCollapse?: () => void; /** * Custom navigation items */ @@ -110,6 +114,7 @@ export const Sidebar = forwardRef(({ isOpen = false, isCollapsed = false, onClose, + onToggleCollapse, customItems, showCollapseButton = true, showFooter = true, @@ -340,12 +345,12 @@ export const Sidebar = forwardRef(({ disabled={item.disabled} data-path={item.path} className={clsx( - 'w-full p-3 rounded-lg transition-all duration-200', + 'w-full rounded-lg transition-all duration-200', 'focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)]/20', isActive && 'bg-[var(--color-primary)]/10 border-l-2 border-[var(--color-primary)]', !isActive && 'hover:bg-[var(--bg-secondary)]', item.disabled && 'opacity-50 cursor-not-allowed', - isCollapsed && !hasChildren && 'flex justify-center p-3' + isCollapsed && !hasChildren ? 'flex justify-center items-center p-2 mx-1' : 'p-3' )} aria-expanded={hasChildren ? isExpanded : undefined} aria-current={isActive ? 'page' : undefined} @@ -388,29 +393,29 @@ export const Sidebar = forwardRef(({ 'bg-[var(--bg-primary)] border-r border-[var(--border-primary)]', 'transition-all duration-300 ease-in-out z-[var(--z-fixed)]', 'hidden lg:flex lg:flex-col', - isCollapsed ? 'w-16' : 'w-[var(--sidebar-width)]', + isCollapsed ? 'w-[var(--sidebar-collapsed-width)]' : 'w-[var(--sidebar-width)]', className )} aria-label="Navegación principal" > {/* Navigation */} -