import {
RunToolsProvider,
Terminal,
FileBrowser,
CodeEditor,
PreviewFrame,
useSandbox
} from '@runtools/react';
function IDE() {
const { sandbox, create } = useSandbox();
const [selectedFile, setSelectedFile] = useState<string | null>(null);
useEffect(() => {
create({ template: 'nodejs-20' });
}, []);
if (!sandbox) return <div>Loading...</div>;
return (
<div className="ide-layout">
<FileBrowser
sandboxId={sandbox.id}
onFileSelect={setSelectedFile}
/>
{selectedFile && (
<CodeEditor
sandboxId={sandbox.id}
path={selectedFile}
/>
)}
<Terminal sandboxId={sandbox.id} />
<PreviewFrame
sandboxId={sandbox.id}
port={3000}
/>
</div>
);
}
export default function App() {
return (
<RunToolsProvider apiKey={process.env.NEXT_PUBLIC_RUNTOOLS_KEY}>
<IDE />
</RunToolsProvider>
);
}