Skip to content
Source
Sign inSign up

useSidebarToggle.ts

21 lines925 Bytes

1import { usePaneRole } from "../../components/ui/Pane";
2import { useAdaptiveWorkspaceLayout, useWorkspacePaneState } from "./adaptive-workspace-context";
3​
4/** The content pane's sidebar button, or null where there's no sidebar beside it to toggle. */
5export function useSidebarToggle() {
6 const role = usePaneRole();
7 const { layout, togglePrimarySidebar } = useAdaptiveWorkspaceLayout();
8 const { panes, sidebarToggleable } = useWorkspacePaneState();
9 if (role !== "content" || !sidebarToggleable) return null;
10 const maximizes = panes.primarySidebarVisible && layout.variant !== "medium";
11 return {
12 visible: panes.primarySidebarVisible,
13 accessibilityLabel: panes.primarySidebarVisible
14 ? maximizes
15 ? "Maximize content"
16 : "Hide sidebar"
17 : "Show sidebar",
18 icon: maximizes ? "arrow.up.left.and.arrow.down.right" : "sidebar.left",
19 onPress: togglePrimarySidebar,
20 } as const;