11import { useStore } from '@nanostores/react' ;
22import { memo , useMemo } from 'react' ;
33import { Panel , PanelGroup , PanelResizeHandle } from 'react-resizable-panels' ;
4+ import * as Tabs from '@radix-ui/react-tabs' ; // <-- Import Radix UI Tabs
45import {
56 CodeMirrorEditor ,
67 type EditorDocument ,
@@ -21,6 +22,8 @@ import { FileBreadcrumb } from './FileBreadcrumb';
2122import { FileTree } from './FileTree' ;
2223import { DEFAULT_TERMINAL_SIZE , TerminalTabs } from './terminal/TerminalTabs' ;
2324import { workbenchStore } from '~/lib/stores/workbench' ;
25+ import { Search } from './Search' ; // <-- Ensure Search is imported
26+ import { classNames } from '~/utils/classNames' ; // <-- Import classNames if not already present
2427
2528interface EditorPanelProps {
2629 files ?: FileMap ;
@@ -75,24 +78,48 @@ export const EditorPanel = memo(
7578 < PanelGroup direction = "vertical" >
7679 < Panel defaultSize = { showTerminal ? DEFAULT_EDITOR_SIZE : 100 } minSize = { 20 } >
7780 < PanelGroup direction = "horizontal" >
78- < Panel defaultSize = { 20 } minSize = { 10 } collapsible >
79- < div className = "flex flex-col border-r border-bolt-elements-borderColor h-full" >
80- < PanelHeader >
81- < div className = "i-ph:tree-structure-duotone shrink-0" />
82- Files
81+ < Panel defaultSize = { 20 } minSize = { 15 } collapsible className = "border-r border-bolt-elements-borderColor" >
82+ < Tabs . Root defaultValue = "files" className = "flex flex-col h-full" >
83+ < PanelHeader className = "w-full text-sm font-medium text-bolt-elements-textSecondary px-1" >
84+ < Tabs . List className = "h-full flex-shrink-0 flex items-center" >
85+ < Tabs . Trigger
86+ value = "files"
87+ className = { classNames (
88+ 'h-full bg-transparent hover:bg-bolt-elements-background-depth-3 py-0.5 px-2 rounded-lg text-sm font-medium text-bolt-elements-textTertiary hover:text-bolt-elements-textPrimary data-[state=active]:text-bolt-elements-textPrimary' ,
89+ ) }
90+ >
91+ Files
92+ </ Tabs . Trigger >
93+ < Tabs . Trigger
94+ value = "search"
95+ className = { classNames (
96+ 'h-full bg-transparent hover:bg-bolt-elements-background-depth-3 py-0.5 px-2 rounded-lg text-sm font-medium text-bolt-elements-textTertiary hover:text-bolt-elements-textPrimary data-[state=active]:text-bolt-elements-textPrimary' ,
97+ ) }
98+ >
99+ Search
100+ </ Tabs . Trigger >
101+ </ Tabs . List >
83102 </ PanelHeader >
84- < FileTree
85- className = "h-full"
86- files = { files }
87- hideRoot
88- unsavedFiles = { unsavedFiles }
89- fileHistory = { fileHistory }
90- rootFolder = { WORK_DIR }
91- selectedFile = { selectedFile }
92- onFileSelect = { onFileSelect }
93- />
94- </ div >
103+
104+ < Tabs . Content value = "files" className = "flex-grow overflow-auto focus-visible:outline-none" >
105+ < FileTree
106+ className = "h-full"
107+ files = { files }
108+ hideRoot
109+ unsavedFiles = { unsavedFiles }
110+ fileHistory = { fileHistory }
111+ rootFolder = { WORK_DIR }
112+ selectedFile = { selectedFile }
113+ onFileSelect = { onFileSelect }
114+ />
115+ </ Tabs . Content >
116+
117+ < Tabs . Content value = "search" className = "flex-grow overflow-auto focus-visible:outline-none" >
118+ < Search />
119+ </ Tabs . Content >
120+ </ Tabs . Root >
95121 </ Panel >
122+
96123 < PanelResizeHandle />
97124 < Panel className = "flex flex-col" defaultSize = { 80 } minSize = { 20 } >
98125 < PanelHeader className = "overflow-x-auto" >
0 commit comments