"use client"; import { useState, useEffect } from "react"; import { FTUXStepProps } from "@/types/ftux"; import { NodeDefaultsConfig } from "@/types"; import { ModelSearchDialog } from "@/components/modals/ModelSearchDialog"; import { ProviderModel } from "@/lib/providers/types"; import { loadNodeDefaults, saveNodeDefaults } from "@/store/utils/localStorage"; // Provider icons const GeminiIcon = () => ( ); const ReplicateIcon = () => ( ); const FalIcon = () => ( ); const WaveSpeedIcon = () => ( ); const getProviderIcon = (provider: string) => { switch (provider) { case "gemini": return ; case "replicate": return ; case "fal": return ; case "wavespeed": return ; default: return null; } }; export function FTUXModelDefaultsStep({}: FTUXStepProps) { const [localDefaults, setLocalDefaults] = useState({}); const [showImageDialog, setShowImageDialog] = useState(false); const [showVideoDialog, setShowVideoDialog] = useState(false); // Load current defaults on mount useEffect(() => { const currentDefaults = loadNodeDefaults(); setLocalDefaults(currentDefaults); }, []); return (

Choose Your Models

Pick your default AI models for images and videos. You can change these later.

{/* Default Image Model */}
Default Image Model
{localDefaults.generateImage?.selectedModel ? ( <>
{getProviderIcon(localDefaults.generateImage.selectedModel.provider)} {localDefaults.generateImage.selectedModel.displayName}
) : ( <> None set )}
{/* Default Video Model */}
Default Video Model
{localDefaults.generateVideo?.selectedModel ? ( <>
{getProviderIcon(localDefaults.generateVideo.selectedModel.provider)} {localDefaults.generateVideo.selectedModel.displayName}
) : ( <> None set )}
{/* Model Selection Dialogs */} {showImageDialog && ( setShowImageDialog(false)} onModelSelected={(model: ProviderModel) => { const updatedDefaults = { ...localDefaults, generateImage: { ...localDefaults.generateImage, selectedModel: { provider: model.provider, modelId: model.id, displayName: model.name, }, }, }; setLocalDefaults(updatedDefaults); saveNodeDefaults(updatedDefaults); setShowImageDialog(false); }} initialCapabilityFilter="image" /> )} {showVideoDialog && ( setShowVideoDialog(false)} onModelSelected={(model: ProviderModel) => { const updatedDefaults = { ...localDefaults, generateVideo: { ...localDefaults.generateVideo, selectedModel: { provider: model.provider, modelId: model.id, displayName: model.name, }, }, }; setLocalDefaults(updatedDefaults); saveNodeDefaults(updatedDefaults); setShowVideoDialog(false); }} initialCapabilityFilter="video" /> )}
); }