import { useState, useEffect } from 'react' import { Link } from 'react-router-dom' import { Terminal, Settings } from 'lucide-react' import { useScriptGeneratorStore } from '@/store/scriptGeneratorStore' import { usePermissions } from '@/hooks/usePermissions' import { ScriptFilterBar } from '@/components/scripts/ScriptFilterBar' import { ScriptTemplateList } from '@/components/scripts/ScriptTemplateList' import { ScriptConfigurePane } from '@/components/scripts/ScriptConfigurePane' import { ScriptPreview } from '@/components/scripts/ScriptPreview' export default function ScriptLibraryPage() { const [paneMode, setPaneMode] = useState<'browse' | 'configure'>('browse') // inputValue owned here so it survives Configure ↔ Browse transitions const [inputValue, setInputValue] = useState('') const loadCategories = useScriptGeneratorStore(s => s.loadCategories) const loadTemplates = useScriptGeneratorStore(s => s.loadTemplates) const setSearch = useScriptGeneratorStore(s => s.setSearch) const selectTemplate = useScriptGeneratorStore(s => s.selectTemplate) const clearOutput = useScriptGeneratorStore(s => s.clearOutput) const selectedTemplate = useScriptGeneratorStore(s => s.selectedTemplate) const { isEngineer } = usePermissions() const canGenerate = isEngineer useEffect(() => { loadCategories().then(() => loadTemplates()) }, [loadCategories, loadTemplates]) const onClearSearch = () => { setInputValue('') setSearch('') } const onConfigure = (id: string) => { selectTemplate(id) setPaneMode('configure') } const onBack = () => { clearOutput() setPaneMode('browse') } return (
Browse PowerShell templates, fill in parameters, and generate ready-to-run scripts.
{isEngineer && (Select a template to get started