diff --git a/frontend/src/pages/ScriptLibraryPage.tsx b/frontend/src/pages/ScriptLibraryPage.tsx index e51445ba..48f6cc42 100644 --- a/frontend/src/pages/ScriptLibraryPage.tsx +++ b/frontend/src/pages/ScriptLibraryPage.tsx @@ -1,19 +1,28 @@ import { useState, useEffect } from 'react' +import { Terminal } 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 { ScriptGeneratorPanel } from '@/components/scripts/ScriptGeneratorPanel' +import { ScriptConfigurePane } from '@/components/scripts/ScriptConfigurePane' +import { ScriptPreview } from '@/components/scripts/ScriptPreview' export default function ScriptLibraryPage() { - // inputValue is owned here so ScriptFilterBar and ScriptTemplateList - // can coordinate clear-search without direct coupling. + 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 must complete before loadTemplates can resolve slugs loadCategories().then(() => loadTemplates()) }, [loadCategories, loadTemplates]) @@ -22,6 +31,16 @@ export default function ScriptLibraryPage() { setSearch('') } + const onConfigure = (id: string) => { + selectTemplate(id) + setPaneMode('configure') + } + + const onBack = () => { + clearOutput() + setPaneMode('browse') + } + return (
Select a template to get started
+