diff --git a/patch.diff b/patch.diff new file mode 100644 index 0000000..9eb948d --- /dev/null +++ b/patch.diff @@ -0,0 +1,6 @@ +--- src/components/viz/top-nav/WorkspaceModeSelector.tsx ++++ src/components/viz/top-nav/WorkspaceModeSelector.tsx +@@ -8,3 +8,3 @@ + import { cn } from '@/lib/utils'; +-import { WORKSPACE_MODES, type WorkspaceModeId } from './workspaceModes'; ++import { WORKSPACE_MODES } from './workspaceModes'; diff --git a/patch2.diff b/patch2.diff new file mode 100644 index 0000000..77f57f1 --- /dev/null +++ b/patch2.diff @@ -0,0 +1,7 @@ +--- src/components/viz/top-nav/WorkspaceModeSelector.tsx ++++ src/components/viz/top-nav/WorkspaceModeSelector.tsx +@@ -23,3 +23,3 @@ + +- const handleModeChange = (mode: WorkspaceModeId) => { ++ const handleModeChange = (mode: typeof WORKSPACE_MODES[number]['id']) => { + setWorkspaceMode(mode); diff --git a/src/components/viz/top-nav/WorkspaceModeSelector.tsx.orig b/src/components/viz/top-nav/WorkspaceModeSelector.tsx.orig new file mode 100644 index 0000000..3be7be6 --- /dev/null +++ b/src/components/viz/top-nav/WorkspaceModeSelector.tsx.orig @@ -0,0 +1,102 @@ +import { Check, ChevronDown } from 'lucide-react'; +import { useVizStore } from '@/stores/vizStore'; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu'; +import { cn } from '@/lib/utils'; +import { WORKSPACE_MODES, type WorkspaceModeId } from './workspaceModes'; + +export function WorkspaceModeSelector() { + const { + workspaceMode, + setWorkspaceMode, + setAiSidebarOpen, + setSidebarTab, + setExplorerOpen, + setInspectorOpen, + } = useVizStore(); + + const currentMode = WORKSPACE_MODES.find((m) => m.id === workspaceMode) || WORKSPACE_MODES[0]; + + const handleModeChange = (mode: WorkspaceModeId) => { + setWorkspaceMode(mode); + + if (window.innerWidth < 1024) { + setExplorerOpen(false); + setAiSidebarOpen(false); + setInspectorOpen(false); + return; + } + + setExplorerOpen(true); + + if (mode === 'focus') { + setAiSidebarOpen(false); + setInspectorOpen(false); + } else if (mode === 'analysis') { + setAiSidebarOpen(true); + setSidebarTab('analysis'); + setInspectorOpen(false); + } else if (mode === 'learning') { + setAiSidebarOpen(true); + setSidebarTab('learning'); + setInspectorOpen(false); + } else if (mode === 'full') { + setAiSidebarOpen(true); + } + }; + + return ( + + + + {/* Show label on lg+, icon-only on tablet */} + {currentMode.label} + + + + +
+ Workspace Layout +
+
+ {WORKSPACE_MODES.map((mode) => { + const isSelected = workspaceMode === mode.id; + return ( + handleModeChange(mode.id)} + className={cn( + 'flex items-start gap-3 cursor-pointer p-2.5 focus:bg-[rgba(240,246,252,0.1)] focus:text-[#e6edf3] rounded-sm text-xs transition-colors', + isSelected ? 'bg-[#1c2128] text-[#e6edf3]' : 'text-[#8b949e]' + )} + > +
+ +
+ +
+
+ + {mode.label} + + {isSelected && } +
+ + {mode.description} + +
+
+ ); + })} +
+
+
+ ); +}