Skip to content

Commit f730959

Browse files
committed
improve tree page
1 parent b1c4e91 commit f730959

File tree

7 files changed

+223
-115
lines changed

7 files changed

+223
-115
lines changed

visual-tree-search-app/components/ControlPanel.tsx

Lines changed: 198 additions & 94 deletions
Large diffs are not rendered by default.

visual-tree-search-app/components/Header.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ const Header = () => {
88

99
return (
1010
<header className="sticky top-0 z-20 w-full border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
11-
<div className="container flex h-14 items-center">
12-
<div className="flex flex-1 items-center justify-center">
11+
<div className="container mx-auto px-4 h-14 relative">
12+
<div className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2">
1313
<Link href="/" className="flex items-center space-x-2 hover:opacity-80 transition-opacity">
14-
<h1 className="text-lg font-semibold tracking-tight bg-gradient-to-r from-primary to-accent bg-clip-text text-transparent">
14+
<h1 className="text-lg font-semibold tracking-tight bg-gradient-to-r from-primary to-accent bg-clip-text text-transparent whitespace-nowrap">
1515
VisualTreeSearch
1616
</h1>
1717
</Link>
1818
</div>
19-
<div className="flex items-center space-x-2">
19+
<div className="absolute right-0 top-1/2 -translate-y-1/2 pr-4">
2020
<Button
2121
variant="ghost"
2222
size="icon"

visual-tree-search-app/components/Layout.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Header from "./Header";
2-
import Footer from "./Footer";
32
import Sidebar from "./Sidebar";
43
import Head from "next/head";
54

@@ -18,14 +17,13 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
1817

1918
<div className="flex min-h-screen bg-gradient-to-b from-background via-background/98 to-background/95 dark:from-slate-950 dark:via-slate-900 dark:to-slate-950">
2019
<Sidebar />
21-
<div className="flex flex-col flex-1 min-w-0 ml-14 lg:ml-56 transition-all duration-300">
20+
<div className="flex flex-col flex-1 min-w-0 transition-all duration-300" style={{ marginLeft: 'var(--sidebar-width, 3.5rem)' }}>
2221
<Header />
23-
<main className="flex-1 p-4 lg:p-6 overflow-auto">
22+
<main className="flex-1 px-4 pt-4 pb-2 lg:px-6 lg:pt-6 lg:pb-3 overflow-auto">
2423
<div className="h-full w-full max-w-full">
2524
{children}
2625
</div>
2726
</main>
28-
<Footer />
2927
</div>
3028
</div>
3129
</>

visual-tree-search-app/components/LiveBrowserView.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react';
2+
import { Globe } from 'lucide-react';
23

34
interface LiveBrowserViewProps {
45
liveBrowserUrl: string | null;
@@ -13,9 +14,7 @@ const LiveBrowserView: React.FC<LiveBrowserViewProps> = ({ liveBrowserUrl, width
1314
>
1415
<div className="p-3 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-sky-50 to-white dark:from-slate-900 dark:to-slate-800">
1516
<h2 className="text-lg font-semibold text-sky-950 dark:text-sky-100 flex items-center">
16-
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5 mr-2 text-cyan-500" viewBox="0 0 20 20" fill="currentColor">
17-
<path fillRule="evenodd" d="M4.083 9h1.946c.089-1.546.383-2.97.837-4.118A6.004 6.004 0 004.083 9zM10 2a8 8 0 100 16 8 8 0 000-16zm0 2c-.076 0-.232.032-.465.262-.238.234-.497.623-.737 1.182-.389.907-.673 2.142-.766 3.556h3.936c-.093-1.414-.377-2.649-.766-3.556-.24-.56-.5-.948-.737-1.182C10.232 4.032 10.076 4 10 4zm3.971 5c-.089-1.546-.383-2.97-.837-4.118A6.004 6.004 0 0115.917 9h-1.946zm-2.003 2H8.032c.093 1.414.377 2.649.766 3.556.24.56.5.948.737 1.182.233.23.389.262.465.262.076 0 .232-.032.465-.262.238-.234.498-.623.737-1.182.389-.907.673-2.142.766-3.556zm1.166 4.118c.454-1.147.748-2.572.837-4.118h1.946a6.004 6.004 0 01-2.783 4.118zm-6.268 0C6.412 13.97 6.118 12.546 6.03 11H4.083a6.004 6.004 0 002.783 4.118z" clipRule="evenodd" />
18-
</svg>
17+
<Globe className="h-4 w-4 mr-1.5 text-primary" />
1918
Live Browser View
2019
</h2>
2120
</div>

visual-tree-search-app/components/MessageLogPanel.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,14 @@ const MessageLogPanel: React.FC<MessageLogPanelProps> = ({
117117
onSessionIdChange,
118118
variant = 'default'
119119
}) => {
120+
const prevMessagesLengthRef = React.useRef(messages.length);
121+
120122
useEffect(() => {
121-
if (messagesEndRef?.current) {
123+
// Only scroll if new messages were added
124+
if (messages.length > prevMessagesLengthRef.current && messagesEndRef?.current) {
122125
messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
123126
}
127+
prevMessagesLengthRef.current = messages.length;
124128
}, [messages, messagesEndRef]);
125129

126130
useEffect(() => {
@@ -941,11 +945,9 @@ const MessageLogPanel: React.FC<MessageLogPanelProps> = ({
941945
};
942946

943947
return (
944-
<div className={`bg-white dark:bg-slate-800 rounded-lg shadow-md border border-slate-200 dark:border-slate-700 p-2 mt-3 ${variant === 'mcts' ? 'border-cyan-500' : variant === 'lats' ? 'border-purple-500' : ''}`}>
945-
<h2 className="text-base font-semibold mb-1.5 text-sky-950 dark:text-sky-100 flex items-center">
946-
<svg xmlns="http://www.w3.org/2000/svg" className="h-4 w-4 mr-1.5 text-cyan-500" viewBox="0 0 20 20" fill="currentColor">
947-
<path fillRule="evenodd" d="M18 10c0 3.866-3.582 7-8 7a8.841 8.841 0 01-4.083-.98L2 17l1.338-3.123C2.493 12.767 2 11.434 2 10c0-3.866 3.582-7 8-7s8 3.134 8 7zM7 9H5v2h2V9zm8 0h-2v2h2V9zM9 9h2v2H9V9z" clipRule="evenodd" />
948-
</svg>
948+
<div className={`bg-white dark:bg-slate-800 rounded-lg shadow-md border border-slate-200 dark:border-slate-700 p-2 ${variant === 'mcts' ? 'border-cyan-500' : variant === 'lats' ? 'border-purple-500' : ''}`}>
949+
<h2 className="text-lg font-semibold text-sky-950 dark:text-sky-100 flex items-center mb-2">
950+
<MessageSquare className="h-4 w-4 mr-1.5 text-primary" />
949951
Message Log {variant !== 'default' ? `(${variant.toUpperCase()})` : ''}
950952
</h2>
951953
<div className="h-[150px] overflow-y-auto border border-slate-200 dark:border-slate-700 rounded-md p-1.5 bg-gradient-to-r from-sky-50 to-white dark:from-slate-900 dark:to-slate-800">

visual-tree-search-app/components/Sidebar.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,22 @@ const Sidebar = () => {
1717
// Only collapse when switching from large to small screen
1818
if (mobile && !isMobile) {
1919
setCollapsed(true);
20+
document.documentElement.style.setProperty('--sidebar-width', '3.5rem');
2021
}
2122
// Auto expand when switching from small to large screen
2223
if (!mobile && isMobile) {
2324
setCollapsed(false);
25+
document.documentElement.style.setProperty('--sidebar-width', '14rem');
2426
}
2527
};
2628

29+
// Set initial sidebar width
30+
document.documentElement.style.setProperty('--sidebar-width', collapsed ? '3.5rem' : '14rem');
31+
2732
checkScreenSize();
2833
window.addEventListener('resize', checkScreenSize);
2934
return () => window.removeEventListener('resize', checkScreenSize);
30-
}, [isMobile]);
35+
}, [isMobile, collapsed]);
3136

3237
const menuItems = [
3338
{
@@ -61,6 +66,7 @@ const Sidebar = () => {
6166

6267
const toggleSidebar = () => {
6368
setCollapsed(!collapsed);
69+
document.documentElement.style.setProperty('--sidebar-width', collapsed ? '3.5rem' : '14rem');
6470
};
6571

6672
return (

visual-tree-search-app/components/TreeVisual.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useEffect, useRef, useState } from 'react';
22
import * as d3 from 'd3';
33
import { useTheme } from 'next-themes';
4+
import { Network } from 'lucide-react';
45

56
interface TreeNode {
67
id: number;
@@ -653,9 +654,7 @@ const TreeVisual: React.FC<TreeVisualProps> = ({
653654
<div className={`${className} bg-white dark:bg-slate-800 rounded-r-lg overflow-hidden`}>
654655
<div className="p-3 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-sky-50 to-white dark:from-slate-900 dark:to-slate-800">
655656
<h2 className="text-lg font-semibold text-sky-950 dark:text-sky-100 flex items-center">
656-
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5 mr-2 text-cyan-500" viewBox="0 0 20 20" fill="currentColor">
657-
<path d="M7 3a1 1 0 000 2h6a1 1 0 100-2H7zM4 7a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1zM2 11a2 2 0 012-2h12a2 2 0 012 2v4a2 2 0 01-2 2H4a2 2 0 01-2-2v-4z" />
658-
</svg>
657+
<Network className="h-4 w-4 mr-1.5 text-primary" />
659658
{title}
660659
</h2>
661660

0 commit comments

Comments
 (0)