console.log('[APP_ROUTER] ๐Ÿš€ App.router.tsx loading - BEGIN') console.time('[APP_ROUTER] Component initialization') import { useState, Suspense, useEffect } from 'react' console.log('[APP_ROUTER] โœ… React hooks imported') import { BrowserRouter, useLocation } from 'react-router-dom' console.log('[APP_ROUTER] โœ… React Router imported') import { AppHeader } from '@/components/organisms' import { NavigationMenu } from '@/components/organisms/NavigationMenu' console.log('[APP_ROUTER] โœ… Header components imported') import { LoadingFallback } from '@/components/molecules' console.log('[APP_ROUTER] โœ… LoadingFallback imported') import { useProjectState } from '@/hooks/use-project-state' import { useFileOperations } from '@/hooks/use-file-operations' import { useKeyboardShortcuts } from '@/hooks/use-keyboard-shortcuts' import { useSeedData } from '@/hooks/data/use-seed-data' import { useRouterNavigation } from '@/hooks/use-router-navigation' import { useComponentTreeLoader } from '@/hooks/use-component-tree-loader' console.log('[APP_ROUTER] โœ… Custom hooks imported') import { getPageShortcuts } from '@/config/page-loader' console.log('[APP_ROUTER] โœ… Page config imported') import { toast } from 'sonner' console.log('[APP_ROUTER] โœ… Toast imported') import { DialogRegistry, PWARegistry, preloadCriticalComponents } from '@/lib/component-registry' console.log('[APP_ROUTER] โœ… Component registry imported') import { RouterProvider } from '@/router' console.log('[APP_ROUTER] โœ… Router provider imported') import { SidebarProvider, SidebarInset, Sidebar, SidebarContent, SidebarHeader } from '@/components/ui/sidebar' console.log('[APP_ROUTER] โœ… Sidebar provider imported') const { GlobalSearch, KeyboardShortcutsDialog, PreviewDialog } = DialogRegistry const { PWAInstallPrompt, PWAUpdatePrompt, PWAStatusBar } = PWARegistry console.log('[APP_ROUTER] โœ… Dialog and PWA components registered') console.log('[APP_ROUTER] ๐ŸŽฏ App component function executing') function AppLayout() { console.log('[APP_ROUTER] ๐Ÿ—๏ธ AppLayout component rendering') const location = useLocation() const { currentPage, navigateToPage } = useRouterNavigation() console.log('[APP_ROUTER] ๐Ÿ“ Current location:', location.pathname) console.log('[APP_ROUTER] ๐Ÿ“„ Current page:', currentPage) console.log('[APP_ROUTER] ๐Ÿ“Š Initializing project state hook') const projectState = useProjectState() console.log('[APP_ROUTER] โœ… Project state initialized') const { files, models, components, componentTrees, workflows, lambdas, theme, playwrightTests, storybookStories, unitTests, flaskConfig, nextjsConfig, npmSettings, featureToggles, setFiles, setModels, setComponents, setComponentTrees, setWorkflows, setLambdas, setTheme, setPlaywrightTests, setStorybookStories, setUnitTests, setFlaskConfig, setNextjsConfig, setNpmSettings, setFeatureToggles, } = projectState console.log('[APP_ROUTER] ๐Ÿ“ Initializing file operations') const fileOps = useFileOperations(files, setFiles) console.log('[APP_ROUTER] โœ… File operations initialized') const { activeFileId, setActiveFileId, handleFileChange, handleFileAdd, handleFileClose } = fileOps console.log('[APP_ROUTER] ๐Ÿ’พ Initializing state variables') const [searchOpen, setSearchOpen] = useState(false) const [shortcutsOpen, setShortcutsOpen] = useState(false) const [previewOpen, setPreviewOpen] = useState(false) const [lastSaved] = useState(Date.now()) const [errorCount] = useState(0) console.log('[APP_ROUTER] โœ… State variables initialized') const shortcuts = getPageShortcuts(featureToggles) console.log('[APP_ROUTER] โŒจ๏ธ Keyboard shortcuts configured:', shortcuts.length) console.log('[APP_ROUTER] โŒจ๏ธ Setting up keyboard shortcuts') useKeyboardShortcuts([ ...shortcuts.map(s => ({ key: s.key, ctrl: s.ctrl, shift: s.shift, description: s.description, action: () => { console.log('[APP_ROUTER] โŒจ๏ธ Shortcut triggered, navigating to:', s.action) navigateToPage(s.action) } })), { key: 'k', ctrl: true, description: 'Search', action: () => { console.log('[APP_ROUTER] โŒจ๏ธ Search shortcut triggered') setSearchOpen(true) } }, { key: '/', ctrl: true, description: 'Shortcuts', action: () => { console.log('[APP_ROUTER] โŒจ๏ธ Shortcuts dialog triggered') setShortcutsOpen(true) } }, { key: 'p', ctrl: true, description: 'Preview', action: () => { console.log('[APP_ROUTER] โŒจ๏ธ Preview shortcut triggered') setPreviewOpen(true) } }, ]) console.log('[APP_ROUTER] โœ… Keyboard shortcuts configured') const getCurrentProject = () => ({ name: nextjsConfig.appName, files, models, components, componentTrees, workflows, lambdas, theme, playwrightTests, storybookStories, unitTests, flaskConfig, nextjsConfig, npmSettings, featureToggles, }) const handleProjectLoad = (project: any) => { console.log('[APP_ROUTER] ๐Ÿ“ฆ Loading project:', project.name) if (project.files) setFiles(project.files) if (project.models) setModels(project.models) if (project.components) setComponents(project.components) if (project.componentTrees) setComponentTrees(project.componentTrees) if (project.workflows) setWorkflows(project.workflows) if (project.lambdas) setLambdas(project.lambdas) if (project.theme) setTheme(project.theme) if (project.playwrightTests) setPlaywrightTests(project.playwrightTests) if (project.storybookStories) setStorybookStories(project.storybookStories) if (project.unitTests) setUnitTests(project.unitTests) if (project.flaskConfig) setFlaskConfig(project.flaskConfig) if (project.nextjsConfig) setNextjsConfig(project.nextjsConfig) if (project.npmSettings) setNpmSettings(project.npmSettings) if (project.featureToggles) setFeatureToggles(project.featureToggles) toast.success('Project loaded') console.log('[APP_ROUTER] โœ… Project loaded successfully') } useEffect(() => { console.log('[APP_ROUTER] ๐Ÿ“ Route changed to:', location.pathname, '- Page:', currentPage) }, [location, currentPage]) console.log('[APP_ROUTER] ๐ŸŽจ Rendering AppLayout UI') return ( }>
{ console.log('[APP_ROUTER] ๐Ÿ” Search opened') setSearchOpen(true) }} onShowShortcuts={() => { console.log('[APP_ROUTER] โŒจ๏ธ Shortcuts dialog opened') setShortcutsOpen(true) }} onGenerateAI={() => { console.log('[APP_ROUTER] ๐Ÿค– AI generation requested') toast.info('AI generation coming soon') }} onExport={() => { console.log('[APP_ROUTER] ๐Ÿ“ค Export requested') toast.info('Export coming soon') }} onPreview={() => { console.log('[APP_ROUTER] ๐Ÿ‘๏ธ Preview opened') setPreviewOpen(true) }} onShowErrors={() => { console.log('[APP_ROUTER] โš ๏ธ Navigating to errors page') navigateToPage('errors') }} />
{ console.log('[APP_ROUTER] ๐Ÿ” Search navigation to:', page) navigateToPage(page) }} onFileSelect={(fileId) => { console.log('[APP_ROUTER] ๐Ÿ“„ File selected from search:', fileId) setActiveFileId(fileId) navigateToPage('code') }} />
) } function App() { console.log('[APP_ROUTER] ๐Ÿ”ง Initializing App component') console.time('[APP_ROUTER] App render') console.log('[APP_ROUTER] ๐ŸŒฑ Initializing seed data hook') const { loadSeedData } = useSeedData() const { loadComponentTrees } = useComponentTreeLoader() const projectState = useProjectState() const { featureToggles, files, setFiles, ...restState } = projectState console.log('[APP_ROUTER] โœ… Hooks initialized') console.log('[APP_ROUTER] ๐Ÿ“ Initializing file operations for router context') const fileOps = useFileOperations(files, setFiles) const [appReady, setAppReady] = useState(false) console.log('[APP_ROUTER] ๐Ÿ’พ App ready state:', appReady) console.log('[APP_ROUTER] โฐ Setting up initialization effect') useEffect(() => { console.log('[APP_ROUTER] ๐Ÿš€ Initialization effect triggered') console.time('[APP_ROUTER] Seed data loading') const timer = setTimeout(() => { console.log('[APP_ROUTER] โฑ๏ธ Fallback timer triggered (100ms)') setAppReady(true) }, 100) console.log('[APP_ROUTER] ๐Ÿ“ฅ Starting seed data load') loadSeedData() .then(() => { console.log('[APP_ROUTER] โœ… Seed data loaded successfully') console.log('[APP_ROUTER] ๐Ÿ“ฆ Loading component trees from JSON') return loadComponentTrees() }) .then(() => { console.log('[APP_ROUTER] โœ… Component trees loaded successfully') }) .catch(err => { console.error('[APP_ROUTER] โŒ Seed data loading failed:', err) }) .finally(() => { console.log('[APP_ROUTER] ๐Ÿ Seed data loading complete') clearTimeout(timer) setAppReady(true) console.timeEnd('[APP_ROUTER] Seed data loading') console.log('[APP_ROUTER] โœ… App marked as ready') console.log('[APP_ROUTER] ๐Ÿš€ Preloading critical components') preloadCriticalComponents() }) return () => { console.log('[APP_ROUTER] ๐Ÿงน Cleaning up initialization effect') clearTimeout(timer) } }, [loadSeedData, loadComponentTrees]) const stateContext = { files, ...restState, activeFileId: fileOps.activeFileId, } const actionContext = { handleFileChange: fileOps.handleFileChange, setActiveFileId: fileOps.setActiveFileId, handleFileClose: fileOps.handleFileClose, handleFileAdd: fileOps.handleFileAdd, setFiles, ...Object.fromEntries( Object.entries(restState).filter(([key]) => key.startsWith('set')) ), } console.log('[APP_ROUTER] ๐ŸŽจ Rendering App component UI') console.log('[APP_ROUTER] App state - appReady:', appReady) console.timeEnd('[APP_ROUTER] App render') if (!appReady) { console.log('[APP_ROUTER] โณ App not ready, showing loading screen') return (

Loading CodeForge...

) } console.log('[APP_ROUTER] โœ… App ready, rendering router') return ( ) } console.log('[APP_ROUTER] โœ… App component defined') console.timeEnd('[APP_ROUTER] Component initialization') export default App