import { useMemo } from 'react'; import { useFloatingSidebarHidden } from '../hooks/useFloatingSidebarHidden'; import { useShouldFloatSidebar } from '../hooks/useShouldFloatSidebar'; import { useSidebarHidden } from '../hooks/useSidebarHidden'; import { CreateDropdown } from './CreateDropdown'; import { IconButton } from './core/IconButton'; import { HStack } from './core/Stacks'; export function SidebarActions() { const floating = useShouldFloatSidebar(); const [normalHidden, setNormalHidden] = useSidebarHidden(); const [floatingHidden, setFloatingHidden] = useFloatingSidebarHidden(); const hidden = floating ? floatingHidden : normalHidden; const setHidden = useMemo( () => (floating ? setFloatingHidden : setNormalHidden), [floating, setFloatingHidden, setNormalHidden], ); return ( { // NOTE: We're not using the (h) => !h pattern here because the data // might be different if another window changed it (out of sync) await setHidden(!hidden); }} className="pointer-events-auto" size="sm" title="Toggle sidebar" icon={hidden ? 'left_panel_hidden' : 'left_panel_visible'} iconColor="secondary" /> ); }