aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/Sidebar/SidebarTabs.tsx
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/components/Sidebar/SidebarTabs.tsx
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
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";