import React, { useState, useMemo, useCallback } from 'react'; import { motion } from 'framer-motion'; import { Activity, BarChart3, FileText, Download, Share2, Maximize2, Copy, CheckCircle2 } from 'lucide-react'; import PropTypes from 'prop-types'; import Button from '../../design-system/components/Button'; import Card from '../../design-system/components/Card'; import SimpleTabs from './SimpleTabs'; import QuantumVisualization from './QuantumVisualization'; const EnhancedPluginResultsPanel = ({ result, loading, onExport, onShare }) => { const [isFullscreen, setIsFullscreen] = useState(false); const [copied, setCopied] = useState(false); const handleCopyData = useCallback(async () => { if (!result || !result.output) return; try { await navigator.clipboard.writeText(JSON.stringify(result.output, null, 2)); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch (err) { console.error('Failed to copy data:', err); } }, [result]); const tabs = useMemo(() => { if (!result) { return [ { id: 'visualization', label: 'Visualization', icon: , available: true, content: } ]; } return [ { id: 'visualization', label: 'Visualization', icon: , available: true, content: }, { id: 'data', label: 'Raw Data', icon: , available: !!(result && result.output), content: (

Raw Output Data

                {result && result.output ? JSON.stringify(result.output, null, 2) : 'No data available'}
              
) }, { id: 'log', label: 'Process Log', icon: , available: !!(result && result.log), content: (

Process Log

                {(result && result.log) ? result.log : 'No log data available.'}
              
) }, ].filter(tab => tab.available); }, [result, copied, handleCopyData]); const handleExport = () => { if (!result?.output) return; const dataStr = JSON.stringify(result.output, null, 2); const dataBlob = new Blob([dataStr], { type: 'application/json' }); const url = URL.createObjectURL(dataBlob); const link = document.createElement('a'); link.href = url; link.download = `quantum-simulation-${Date.now()}.json`; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); onExport?.(result); }; if (loading) { return (
Processing Quantum Simulation Your quantum computation is being executed. This may take a few moments depending on the complexity. {/* Animated progress indicators */}
{[0, 1, 2].map((i) => ( ))}
); } if (!result) { return (

Ready for Simulation

Configure your parameters and run a simulation to see quantum results and visualizations.

); } return (
{/* Main Header */}

Simulation Results

Quantum computation completed successfully

{/* Mobile: Only show fullscreen button */}
{/* Desktop: Show all buttons */}
{/* Mobile Action Buttons Row */}
{isFullscreen && ( setIsFullscreen(false)} /> )} ); }; EnhancedPluginResultsPanel.propTypes = { result: PropTypes.object, loading: PropTypes.bool, onExport: PropTypes.func, onShare: PropTypes.func, }; export default EnhancedPluginResultsPanel;