aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/Sidebar/SidebarTabs.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/components/Sidebar/SidebarTabs.tsx')
-rw-r--r--packages/excalidraw/components/Sidebar/SidebarTabs.tsx36
1 files changed, 36 insertions, 0 deletions
diff --git a/packages/excalidraw/components/Sidebar/SidebarTabs.tsx b/packages/excalidraw/components/Sidebar/SidebarTabs.tsx
new file mode 100644
index 0000000..a681b5e
--- /dev/null
+++ b/packages/excalidraw/components/Sidebar/SidebarTabs.tsx
@@ -0,0 +1,36 @@
+import * as RadixTabs from "@radix-ui/react-tabs";
+import { useUIAppState } from "../../context/ui-appState";
+import { useExcalidrawSetAppState } from "../App";
+
+export const SidebarTabs = ({
+ children,
+ ...rest
+}: {
+ children: React.ReactNode;
+} & Omit<React.RefAttributes<HTMLDivElement>, "onSelect">) => {
+ const appState = useUIAppState();
+ const setAppState = useExcalidrawSetAppState();
+
+ if (!appState.openSidebar) {
+ return null;
+ }
+
+ const { name } = appState.openSidebar;
+
+ return (
+ <RadixTabs.Root
+ className="sidebar-tabs-root"
+ value={appState.openSidebar.tab}
+ onValueChange={(tab) =>
+ setAppState((state) => ({
+ ...state,
+ openSidebar: { ...state.openSidebar, name, tab },
+ }))
+ }
+ {...rest}
+ >
+ {children}
+ </RadixTabs.Root>
+ );
+};
+SidebarTabs.displayName = "SidebarTabs";