@@ -11,7 +11,6 @@ import { Preview } from "@/components/preview"
1111import { E2BToolsPanel } from "@/components/e2b-tools/E2BToolsPanel"
1212import { CommandPalette } from "@/components/ui/command-palette"
1313import { EditorCommandPalette } from "@/components/ui/editor-command-palette"
14- import { ProjectDialog } from "@/components/ui/project-dialog"
1514import { useProjectDialog } from "@/hooks/use-project-dialog"
1615import { useAuth } from "@/contexts/AuthContext"
1716import { type Message , toAISDKMessages , toMessageImage } from "@/lib/messages"
@@ -88,7 +87,7 @@ export default function Home() {
8887 "languageModel" ,
8988 modelsList . models [ 0 ] as LLMModelConfig
9089 )
91- const [ currentTab , setCurrentTab ] = useState < "code" | " preview" | "editor" > ( "code " )
90+ const [ currentTab , setCurrentTab ] = useState < "preview" | "editor" > ( "preview " )
9291 const [ isPreviewLoading , setIsPreviewLoading ] = useState ( false )
9392 const [ errorMessage , setErrorMessage ] = useState ( "" )
9493 const [ isRateLimited , setIsRateLimited ] = useState ( false )
@@ -99,6 +98,7 @@ export default function Home() {
9998 analysis : ProjectAnalysis | null
10099 } > ( { files : [ ] , analysis : null } )
101100 const [ isE2BToolsModalOpen , setIsE2BToolsModalOpen ] = useState ( false )
101+ const [ isEditorCommandPaletteOpen , setEditorCommandPaletteOpen ] = useState ( false )
102102
103103 const handleToggleE2BToolsModal = ( ) => {
104104 if ( session && currentModel ) { // Ensure user is authenticated and model is loaded
@@ -172,7 +172,7 @@ export default function Home() {
172172 }
173173
174174 setErrorMessage ( parsedError . message )
175- setCurrentTab ( "code " )
175+ setCurrentTab ( "preview " )
176176 } , [ ] ) ,
177177 } )
178178
@@ -203,7 +203,7 @@ export default function Home() {
203203 setErrorMessage ( "" )
204204 setFiles ( [ ] )
205205 setProjectContext ( { files : [ ] , analysis : null } )
206- setCurrentTab ( "code " )
206+ setCurrentTab ( "preview " )
207207 } , [ ] )
208208
209209 const handleUndo = useCallback ( ( ) => {
@@ -294,7 +294,7 @@ export default function Home() {
294294 setIsRateLimited ( true )
295295 }
296296 setResult ( undefined )
297- setCurrentTab ( "code " )
297+ setCurrentTab ( "preview " )
298298 } finally {
299299 setIsPreviewLoading ( false )
300300 }
@@ -372,6 +372,18 @@ export default function Home() {
372372 setHasMounted ( true )
373373 } , [ ] )
374374
375+ useEffect ( ( ) => {
376+ const down = ( e : KeyboardEvent ) => {
377+ if ( e . key === "k" && ( e . metaKey || e . ctrlKey ) ) {
378+ e . preventDefault ( )
379+ setEditorCommandPaletteOpen ( ( open ) => ! open )
380+ }
381+ }
382+
383+ document . addEventListener ( "keydown" , down )
384+ return ( ) => document . removeEventListener ( "keydown" , down )
385+ } , [ ] )
386+
375387 const handleSubmitAuth = useCallback ( async (
376388 e : FormEvent < HTMLFormElement > ,
377389 projectFiles ?: File [ ] ,
@@ -465,7 +477,7 @@ export default function Home() {
465477
466478 setChatInput ( "" )
467479 setFiles ( [ ] )
468- setCurrentTab ( "code " )
480+ setCurrentTab ( "preview " )
469481 setErrorMessage ( "" )
470482 setIsRateLimited ( false )
471483
@@ -518,6 +530,15 @@ export default function Home() {
518530 setAuthDialog ( true )
519531 } , [ ] )
520532
533+ const fragmentFiles = fragment ?. files ?. map ( file => {
534+ if ( ! file ) return undefined
535+ return {
536+ name : file . file_name || file . file_path ?. split ( '/' ) . pop ( ) || 'untitled' ,
537+ content : file . file_content || '' ,
538+ path : file . file_path || file . file_name || 'untitled'
539+ }
540+ } ) . filter ( ( file ) : file is { name : string ; content : string ; path : string } => ! ! file && ! ! file . content && ! file . content . includes ( '__pycache__' ) )
541+
521542 const showPreviewPanel = fragment && hasMounted ;
522543
523544 let gridLayoutClass = "flex w-full" ;
@@ -573,7 +594,7 @@ export default function Home() {
573594 if ( selectedFragment ?. files && selectedFragment . files . length > 0 ) {
574595 setCurrentTab ( "preview" ) ;
575596 } else {
576- setCurrentTab ( "code " ) ;
597+ setCurrentTab ( "preview " ) ;
577598 }
578599 } }
579600 />
@@ -666,31 +687,7 @@ export default function Home() {
666687 </ DialogContent >
667688 </ Dialog >
668689 ) }
669-
670- { /* Floating Action Button */ }
671- < AnimatePresence >
672- { session && hasMounted && (
673- < motion . button
674- onClick = { openCreateDialog }
675- className = "fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-blue-500 text-white shadow-lg hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
676- whileHover = { { scale : 1.05 } }
677- whileTap = { { scale : 0.95 } }
678- initial = { { opacity : 0 , scale : 0 , y : 20 } }
679- animate = { { opacity : 1 , scale : 1 , y : 0 } }
680- exit = { { opacity : 0 , scale : 0 , y : 20 } }
681- transition = { {
682- type : "spring" ,
683- damping : 25 ,
684- stiffness : 300 ,
685- duration : 0.3 ,
686- } }
687- title = "Create New Project"
688- >
689- < FolderPlus className = "h-6 w-6" />
690- </ motion . button >
691- ) }
692- </ AnimatePresence >
693-
690+
694691 { /* Command Palette */ }
695692 < CommandPalette
696693 onCreateFragment = { ( ) => {
@@ -716,21 +713,10 @@ export default function Home() {
716713 />
717714 ) }
718715
719- < EditorCommandPalette
720- isOpen = { false }
721- onOpenChange = { ( open : boolean ) => {
722- // Implement the editor command palette logic here
723- console . log ( "Editor command palette state changed:" , open ) ;
724- } }
725- files = { [ ] }
726- />
727-
728- < ProjectDialog
729- open = { isProjectDialogOpen }
730- onOpenChange = { closeProjectDialog }
731- mode = { projectDialogMode }
732- project = { editingProject }
733- onSave = { handleProjectSave }
716+ < EditorCommandPalette
717+ isOpen = { isEditorCommandPaletteOpen }
718+ onOpenChange = { setEditorCommandPaletteOpen }
719+ files = { fragmentFiles || [ ] }
734720 />
735721 </ div >
736722 )
0 commit comments