import { useState, useEffect, useRef } from 'react'; import { ScrollArea } from '@/components/ui/scroll-area'; import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; import { Trash, Terminal, Code } from '@phosphor-icons/react'; import { InteractiveTerminal } from './InteractiveTerminal'; interface ConsoleLog { id: string; timestamp: Date; type: 'log' | 'warn' | 'error' | 'info'; platform: 'roblox' | 'web' | 'mobile' | 'system'; message: string; } interface ConsolePanelProps { collapsed?: boolean; onToggle?: () => void; currentCode?: string; currentFile?: string; files?: any[]; onCodeChange?: (code: string) => void; } export function ConsolePanel({ collapsed, onToggle, currentCode = '', currentFile, files = [], onCodeChange }: ConsolePanelProps) { const [logs, setLogs] = useState([ { id: '1', timestamp: new Date(), type: 'info', platform: 'system', message: 'AeThex Studio Console initialized', }, { id: '2', timestamp: new Date(), type: 'log', platform: 'roblox', message: 'Player joined the game!', }, ]); const autoScrollRef = useRef(null); useEffect(() => { if (autoScrollRef.current) { autoScrollRef.current.scrollIntoView({ behavior: 'smooth' }); } }, [logs]); const clearLogs = () => { setLogs([ { id: Date.now().toString(), timestamp: new Date(), type: 'info', platform: 'system', message: 'Console cleared', }, ]); }; const getLogColor = (type: ConsoleLog['type']) => { switch (type) { case 'error': return 'text-red-400'; case 'warn': return 'text-yellow-400'; case 'info': return 'text-blue-400'; default: return 'text-foreground'; } }; const getPlatformBadgeColor = (platform: ConsoleLog['platform']) => { switch (platform) { case 'roblox': return 'bg-blue-500/20 text-blue-400 border-blue-500/30'; case 'web': return 'bg-green-500/20 text-green-400 border-green-500/30'; case 'mobile': return 'bg-purple-500/20 text-purple-400 border-purple-500/30'; default: return 'bg-muted/50 text-muted-foreground'; } }; if (collapsed) { return (
Console {logs.length}
); } return (
Console
Terminal Logs Roblox Web Mobile
{logs.map((log) => (
{log.timestamp.toLocaleTimeString()} {log.platform} {log.message}
))}
{logs.filter((log) => log.platform === 'roblox').map((log) => (
{log.timestamp.toLocaleTimeString()} {log.message}
))}
{logs.filter((log) => log.platform === 'web').map((log) => (
{log.timestamp.toLocaleTimeString()} {log.message}
))}
{logs.filter((log) => log.platform === 'mobile').map((log) => (
{log.timestamp.toLocaleTimeString()} {log.message}
))}
); }