diff --git a/config/eslint.config.js b/config/eslint.config.js index e3ba75790..dd96b2a70 100644 --- a/config/eslint.config.js +++ b/config/eslint.config.js @@ -23,6 +23,9 @@ export default tseslint.config( }, rules: { ...reactHooks.configs.recommended.rules, + // Disable overly strict React compiler rules for data fetching patterns + 'react-hooks/set-state-in-effect': 'off', + 'react-hooks/purity': 'off', 'react-refresh/only-export-components': [ 'warn', { allowConstantExport: true }, diff --git a/frontends/nextjs/src/components/nerd-mode-ide/NerdModeEditorPanel.tsx b/frontends/nextjs/src/components/nerd-mode-ide/NerdModeEditorPanel.tsx new file mode 100644 index 000000000..73888f8d9 --- /dev/null +++ b/frontends/nextjs/src/components/nerd-mode-ide/NerdModeEditorPanel.tsx @@ -0,0 +1,112 @@ +import Editor from '@monaco-editor/react' +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui' +import type { FileNode } from '@/lib/nerd-mode-ide' +import { NerdModeConsolePanel } from './NerdModeConsolePanel' +import { NerdModeEditorHeader } from './NerdModeEditorHeader' +import { NerdModeEmptyState } from './NerdModeEmptyState' +import { NerdModeGitPanel } from './NerdModeGitPanel' +import { NerdModeTestsPanel } from './NerdModeTestsPanel' +import type { GitConfig, TestResult } from './types' + +interface NerdModeEditorPanelProps { + selectedFile: FileNode | null + fileContent: string + isRunning: boolean + consoleOutput: string[] + testResults: TestResult[] + gitConfig: GitConfig | null + gitCommitMessage: string + onFileChange: (value: string) => void + onRunCode: () => void + onSaveFile: () => void + onDeleteFile: () => void + onClearConsole: () => void + onRunTests: () => void + onCommitMessageChange: (value: string) => void + onGitPush: () => void + onGitPull: () => void + onOpenGitConfig: () => void +} + +export function NerdModeEditorPanel({ + selectedFile, + fileContent, + isRunning, + consoleOutput, + testResults, + gitConfig, + gitCommitMessage, + onFileChange, + onRunCode, + onSaveFile, + onDeleteFile, + onClearConsole, + onRunTests, + onCommitMessageChange, + onGitPush, + onGitPull, + onOpenGitConfig, +}: NerdModeEditorPanelProps) { + if (!selectedFile) { + return + } + + return ( +
+ + +
+ + + Editor + Console + Tests + Git + + + + onFileChange(value || '')} + theme="vs-dark" + options={{ + minimap: { enabled: false }, + fontSize: 13, + lineNumbers: 'on', + scrollBeyondLastLine: false, + automaticLayout: true, + }} + /> + + + + + + + + + + + + + + +
+
+ ) +}