"use client"; interface GenerationControlsProps { cfgScale: number; onCfgScaleChange: (v: number) => void; inferenceSteps: number; onInferenceStepsChange: (v: number) => void; onGenerate: () => void; isGenerating: boolean; wordCount: number; } export default function GenerationControls({ cfgScale, onCfgScaleChange, inferenceSteps, onInferenceStepsChange, onGenerate, isGenerating, wordCount, }: GenerationControlsProps) { const estimatedSeconds = Math.ceil(wordCount / 50); const estimatedDisplay = wordCount === 0 ? "—" : estimatedSeconds < 60 ? `~${estimatedSeconds}s` : `~${Math.floor(estimatedSeconds / 60)}m ${estimatedSeconds % 60}s`; return (

Generation Settings

{/* CFG Scale slider */}
{cfgScale.toFixed(1)}
onCfgScaleChange(parseFloat(e.target.value))} className="w-full" />
Flat (1.0) CFG Scale Expressive (3.0)
{/* Inference Steps slider */}
{inferenceSteps}
onInferenceStepsChange(parseInt(e.target.value, 10))} className="w-full" style={ { "--thumb-color": "var(--accent-violet)", } as React.CSSProperties } />
Faster (10) Inference Steps Higher quality (30)
{/* Estimated time */}
Estimated generation time {estimatedDisplay}
{/* Generate button */}
); }