components/logs.tsx (44 lines of code) (raw):

import React, { useState } from "react"; import { CodeXml, SidebarClose } from "lucide-react"; interface LogsProps { messages: any[]; } const Logs: React.FC<LogsProps> = ({ messages }) => { const [isConsoleOpen, setIsConsoleOpen] = useState(false); const toggleConsole = () => { setIsConsoleOpen(!isConsoleOpen); }; return ( <div className="absolute top-4 left-4"> <div onClick={toggleConsole} className="cursor-pointer bg-slate-800 text-white rounded-full p-2.5 flex items-center justify-center" > <CodeXml size={24} /> </div> <div className={`fixed top-0 left-0 h-screen bg-slate-900 font-mono text-white transform ${ isConsoleOpen ? "translate-x-0" : "-translate-x-full" } transition-transform duration-300 ease-in-out`} style={{ width: "350px" }} > <div className="p-4"> <div className="flex items-center justify-between mb-4"> <h2 className="text-xl font-bold">Logs</h2> <SidebarClose onClick={toggleConsole} /> </div> <div className="h-[90vh] overflow-x-scroll overflow-y-scroll"> <pre className="mt-4 text-xs"> {messages.map((message, index) => ( <div key={index} className="mb-2"> <pre>{JSON.stringify(message, null, 2)}</pre> </div> ))} </pre> </div> </div> </div> </div> ); }; export default Logs;