import { Terminal, Download, Loader2, AlertTriangle } from 'lucide-react' import { useScriptGeneratorStore } from '@/store/scriptGeneratorStore' import { usePermissions } from '@/hooks/usePermissions' import { ScriptParameterForm } from './ScriptParameterForm' import { ScriptPreview } from './ScriptPreview' export function ScriptGeneratorPanel() { const selectedTemplate = useScriptGeneratorStore(s => s.selectedTemplate) const isLoadingDetail = useScriptGeneratorStore(s => s.isLoadingDetail) const generatedScript = useScriptGeneratorStore(s => s.generatedScript) const generationWarnings = useScriptGeneratorStore(s => s.generationWarnings) const isGenerating = useScriptGeneratorStore(s => s.isGenerating) const generateError = useScriptGeneratorStore(s => s.generateError) const generate = useScriptGeneratorStore(s => s.generate) const { isEngineer } = usePermissions() const canGenerate = isEngineer // No template selected if (!selectedTemplate && !isLoadingDetail) { return (

Select a template to get started

) } // Loading template detail if (isLoadingDetail) { return (
) } if (!selectedTemplate) return null const handleDownload = () => { if (!generatedScript) return const blob = new Blob([generatedScript], { type: 'text/plain' }) const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = `${selectedTemplate.slug}.ps1` document.body.appendChild(a) a.click() document.body.removeChild(a) URL.revokeObjectURL(url) } return (
{/* Header */}

{selectedTemplate.name}

{selectedTemplate.description && (

{selectedTemplate.description}

)}
{/* Parameter form */} {/* Warnings */} {generationWarnings.length > 0 && (
Warnings
{generationWarnings.map((w, i) => (

{w}

))}
)} {/* Preview */} {/* Action bar */}
{/* Generate error */} {generateError && (

{generateError}

)}
) }