diff --git a/frontend/src/components/procedural-editor/CollapsibleEditorSection.tsx b/frontend/src/components/procedural-editor/CollapsibleEditorSection.tsx index 2325e4ff..e7d8b95c 100644 --- a/frontend/src/components/procedural-editor/CollapsibleEditorSection.tsx +++ b/frontend/src/components/procedural-editor/CollapsibleEditorSection.tsx @@ -41,7 +41,7 @@ export function CollapsibleEditorSection({ onClick={handleToggle} aria-expanded={isExpanded} aria-controls={sectionId} - className="flex w-full items-center gap-3 px-4 py-2.5 text-left transition-colors hover:bg-accent/50" + className="flex w-full items-center gap-3 px-4 py-2.5 text-left transition-colors hover:bg-white/[0.05]" > Edit Section Header @@ -42,7 +42,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa value={step.title} onChange={(e) => onUpdate({ title: e.target.value })} placeholder="Section title" - className="w-full rounded border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" /> @@ -54,14 +54,14 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa {/* Header */}
- + {stepNumber} Edit Step
@@ -75,7 +75,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa type="text" value={step.title} onChange={(e) => onUpdate({ title: e.target.value })} - className="w-full rounded border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" />
@@ -91,7 +91,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa onChange={(e) => onUpdate({ estimated_minutes: e.target.value ? parseInt(e.target.value) : undefined })} placeholder="—" min={1} - className="w-full rounded border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" /> @@ -103,7 +103,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa onChange={(e) => onUpdate({ description: e.target.value })} placeholder="Step instructions. Use [VAR:name] for variables." rows={4} - className="w-full rounded border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" /> {availableVariables.length > 0 && (
@@ -132,44 +132,44 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa onChange={(e) => onUpdate({ commands: e.target.value || undefined })} placeholder="Install-WindowsFeature AD-Domain-Services -IncludeManagementTools" rows={3} - className="w-full rounded border border-border bg-card px-3 py-2 font-mono text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 font-mono text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" />
- {/* More Options toggle */} + {/* Content Type */} +
+ +
+ {CONTENT_TYPE_OPTIONS.map((opt) => ( + + ))} +
+
+ + {/* Advanced Options toggle */} {showMore && (
- {/* Content Type */} -
- -
- {CONTENT_TYPE_OPTIONS.map((opt) => ( - - ))} -
-
- {/* Warning text */} {(step.content_type === 'warning' || step.warning_text) && (
@@ -195,7 +195,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa value={step.expected_outcome || ''} onChange={(e) => onUpdate({ expected_outcome: e.target.value || undefined })} placeholder="Server should respond with..." - className="w-full rounded border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" />
@@ -211,7 +211,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa value={step.verification_prompt || ''} onChange={(e) => onUpdate({ verification_prompt: e.target.value || undefined })} placeholder="Confirm the role was installed" - className="w-full rounded border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" + className="w-full rounded border border-border bg-elevated px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" />
@@ -219,7 +219,7 @@ export function StepEditor({ step, stepNumber, onUpdate, onCollapse, availableVa - + {stepNumber} @@ -277,7 +277,7 @@ export function StepList({ onStepContextMenu }: StepListProps) { @@ -324,7 +324,7 @@ export function StepList({ onStepContextMenu }: StepListProps) { {/* Add step button at bottom */} -
- {isMaintenance - ? - : } -

- {isEditMode ? `Edit ${flowLabel}` : `New ${flowLabel}`} - {name && — {name}} -

-
+
+ + +
+ {isMaintenance + ? + : } + setName(e.target.value)} + placeholder={`Untitled ${flowLabel}`} + className="min-w-0 flex-1 bg-transparent text-sm font-semibold text-heading placeholder:text-muted-foreground focus:outline-none" + /> + {isDirty && ( + + )}
-
- {isDirty && ( - Unsaved changes - )} +
- {/* Collapsible sections */} -
+ {/* Config zone */} +
} @@ -328,17 +333,6 @@ export function ProceduralEditorPage() { onToggle={() => toggleSection('details')} >
-
- - setName(e.target.value)} - placeholder="e.g. Domain Controller Build" - className="w-full rounded-lg border border-border bg-card px-3 py-2 text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-hidden focus:ring-1 focus:ring-primary/20" - /> -
-