From dc55e64f099edcb364ff0ee1c1280ce7b81ef4bf Mon Sep 17 00:00:00 2001 From: alezzz23 Date: Sat, 21 Feb 2026 22:16:08 -0400 Subject: [PATCH] feat: add side-by-side algorithm comparison mode --- src/components/AlgoViz.tsx | 61 ++-- src/components/CompareSelector.tsx | 157 +++++++++++ src/components/CompareView.tsx | 435 +++++++++++++++++++++++++++++ src/components/Header.tsx | 27 +- src/i18n/translations.ts | 34 +++ tsconfig.json | 45 ++- 6 files changed, 715 insertions(+), 44 deletions(-) create mode 100644 src/components/CompareSelector.tsx create mode 100644 src/components/CompareView.tsx diff --git a/src/components/AlgoViz.tsx b/src/components/AlgoViz.tsx index 4f73293..dc9aa6e 100644 --- a/src/components/AlgoViz.tsx +++ b/src/components/AlgoViz.tsx @@ -18,6 +18,7 @@ import GraphVisualizer from '@components/GraphVisualizer' import MatrixVisualizer from '@components/MatrixVisualizer' import ConceptVisualizer from '@components/ConceptVisualizer' import CodePanel from '@components/CodePanel' +import CompareView from '@components/CompareView' import type { Algorithm } from '@lib/types' const SIDEBAR_MAX = 260 @@ -63,6 +64,7 @@ export default function AlgoViz({ locale = 'en', initialAlgorithmId }: AlgoVizPr const isMobile = useIsMobile() const [mobileSidebarOpen, setMobileSidebarOpen] = useState(false) const [mobileCodePanelOpen, setMobileCodePanelOpen] = useState(false) + const [viewMode, setViewMode] = useState<'normal' | 'compare'>('normal') const initialAlgorithm = initialAlgorithmId ? (algorithms.find((a) => a.id === initialAlgorithmId) ?? null) @@ -213,6 +215,14 @@ export default function AlgoViz({ locale = 'en', initialAlgorithmId }: AlgoVizPr } } + if (viewMode === 'compare') { + return ( +
+ setViewMode('normal')} /> +
+ ) + } + return (
setMobileSidebarOpen((v) => !v)} onToggleMobileCodePanel={() => setMobileCodePanelOpen((v) => !v)} + onCompare={() => setViewMode('compare')} /> {/* Main Content */} @@ -243,9 +254,8 @@ export default function AlgoViz({ locale = 'en', initialAlgorithmId }: AlgoVizPr {!isMobile && (