@@ -32,6 +32,7 @@ interface PromptInputProps {
3232 transitionSteps ?: number ;
3333 onTransitionStepsChange ?: ( steps : number ) => void ;
3434 timelinePrompts ?: TimelinePrompt [ ] ;
35+ cloudMode ?: boolean ;
3536}
3637
3738export function PromptInput ( {
@@ -51,6 +52,7 @@ export function PromptInput({
5152 transitionSteps = 4 ,
5253 onTransitionStepsChange,
5354 timelinePrompts = [ ] ,
55+ cloudMode = false ,
5456} : PromptInputProps ) {
5557 const [ isProcessing , setIsProcessing ] = useState ( false ) ;
5658 const [ focusedIndex , setFocusedIndex ] = useState < number | null > ( null ) ;
@@ -160,7 +162,8 @@ export function PromptInput({
160162 />
161163 </ div >
162164
163- < div className = "space-y-2" >
165+ < div className = "space-y-2" >
166+ { ! cloudMode && (
164167 < TemporalTransitionControls
165168 transitionSteps = { transitionSteps }
166169 onTransitionStepsChange = { steps => onTransitionStepsChange ?.( steps ) }
@@ -171,42 +174,43 @@ export function PromptInput({
171174 disabled = { disabled || ! isStreaming || timelinePrompts . length === 0 }
172175 className = "space-y-2"
173176 />
177+ ) }
174178
175- { /* Add/Submit buttons - Bottom row */ }
176- < div className = "flex items-center justify-end gap-2" >
177- { managedPrompts . length < 4 && (
178- < Button
179- onMouseDown = { e => {
180- e . preventDefault ( ) ;
181- handleAddPrompt ( ) ;
182- } }
183- disabled = { disabled }
184- size = "sm"
185- variant = "ghost"
186- className = "rounded-full w-8 h-8 p-0"
187- >
188- < Plus className = "h-4 w-4" />
189- </ Button >
190- ) }
179+ { /* Add/Submit buttons - Bottom row */ }
180+ < div className = "flex items-center justify-end gap-2" >
181+ { managedPrompts . length < 4 && (
191182 < Button
192183 onMouseDown = { e => {
193184 e . preventDefault ( ) ;
194- handleSubmit ( ) ;
185+ handleAddPrompt ( ) ;
195186 } }
196- disabled = {
197- disabled ||
198- ! managedPrompts . some ( p => p . text . trim ( ) ) ||
199- isProcessing
200- }
187+ disabled = { disabled }
201188 size = "sm"
202- className = "rounded-full w-8 h-8 p-0 bg-black hover:bg-gray-800 text-white disabled:opacity-50 disabled:cursor-not-allowed"
189+ variant = "ghost"
190+ className = "rounded-full w-8 h-8 p-0"
203191 >
204- { isProcessing ? "..." : < ArrowUp className = "h-4 w-4" /> }
192+ < Plus className = "h-4 w-4" />
205193 </ Button >
206- </ div >
194+ ) }
195+ < Button
196+ onMouseDown = { e => {
197+ e . preventDefault ( ) ;
198+ handleSubmit ( ) ;
199+ } }
200+ disabled = {
201+ disabled ||
202+ ! managedPrompts . some ( p => p . text . trim ( ) ) ||
203+ isProcessing
204+ }
205+ size = "sm"
206+ className = "rounded-full w-8 h-8 p-0 bg-black hover:bg-gray-800 text-white disabled:opacity-50 disabled:cursor-not-allowed"
207+ >
208+ { isProcessing ? "..." : < ArrowUp className = "h-4 w-4" /> }
209+ </ Button >
207210 </ div >
208211 </ div >
209- ) ;
212+ </ div >
213+ ) ;
210214 }
211215
212216 // Multiple prompts mode: show weights and controls
@@ -241,43 +245,47 @@ export function PromptInput({
241245 } ) }
242246
243247 < div className = "space-y-2" >
244- { /* Spatial Blend - only for multiple prompts */ }
245- { managedPrompts . length >= 2 && (
246- < div className = "flex items-center justify-between gap-2" >
247- < span className = "text-xs text-muted-foreground" >
248- Spatial Blend:
249- </ span >
250- < Select
251- value = { interpolationMethod }
252- onValueChange = { value =>
253- onInterpolationMethodChange ?.( value as "linear" | "slerp" )
248+ { ! cloudMode && (
249+ < >
250+ { /* Spatial Blend - only for multiple prompts */ }
251+ { managedPrompts . length >= 2 && (
252+ < div className = "flex items-center justify-between gap-2" >
253+ < span className = "text-xs text-muted-foreground" >
254+ Spatial Blend:
255+ </ span >
256+ < Select
257+ value = { interpolationMethod }
258+ onValueChange = { value =>
259+ onInterpolationMethodChange ?.( value as "linear" | "slerp" )
260+ }
261+ disabled = { disabled }
262+ >
263+ < SelectTrigger className = "w-24 h-6 text-xs" >
264+ < SelectValue />
265+ </ SelectTrigger >
266+ < SelectContent >
267+ < SelectItem value = "linear" > Linear</ SelectItem >
268+ < SelectItem value = "slerp" disabled = { managedPrompts . length > 2 } >
269+ Slerp
270+ </ SelectItem >
271+ </ SelectContent >
272+ </ Select >
273+ </ div >
274+ ) }
275+
276+ < TemporalTransitionControls
277+ transitionSteps = { transitionSteps }
278+ onTransitionStepsChange = { steps => onTransitionStepsChange ?.( steps ) }
279+ temporalInterpolationMethod = { temporalInterpolationMethod }
280+ onTemporalInterpolationMethodChange = { method =>
281+ onTemporalInterpolationMethodChange ?.( method )
254282 }
255- disabled = { disabled }
256- >
257- < SelectTrigger className = "w-24 h-6 text-xs" >
258- < SelectValue />
259- </ SelectTrigger >
260- < SelectContent >
261- < SelectItem value = "linear" > Linear</ SelectItem >
262- < SelectItem value = "slerp" disabled = { managedPrompts . length > 2 } >
263- Slerp
264- </ SelectItem >
265- </ SelectContent >
266- </ Select >
267- </ div >
283+ disabled = { disabled || ! isStreaming || timelinePrompts . length === 0 }
284+ className = "space-y-2"
285+ />
286+ </ >
268287 ) }
269288
270- < TemporalTransitionControls
271- transitionSteps = { transitionSteps }
272- onTransitionStepsChange = { steps => onTransitionStepsChange ?.( steps ) }
273- temporalInterpolationMethod = { temporalInterpolationMethod }
274- onTemporalInterpolationMethodChange = { method =>
275- onTemporalInterpolationMethodChange ?.( method )
276- }
277- disabled = { disabled || ! isStreaming || timelinePrompts . length === 0 }
278- className = "space-y-2"
279- />
280-
281289 { /* Add/Submit buttons - Bottom row */ }
282290 < div className = "flex items-center justify-end gap-2" >
283291 { managedPrompts . length < 4 && (
0 commit comments