import { Feather } from '@expo/vector-icons'; import * as ImagePicker from 'expo-image-picker'; import { Stack, useLocalSearchParams, useRouter } from 'expo-router'; import { UploadCloud } from 'lucide-react'; import React, { useEffect, useState } from 'react'; import { ActivityIndicator, Alert, Image, ScrollView, StyleSheet, Text, TextInput, TouchableOpacity, View, } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; export const unstable_settings = { headerShown: false, }; import { DynamicForm } from '@/components/forms/dynamic-form'; import { BackButton } from '@/components/ui/back-button'; import { getTemplateById } from '@/lib/api/templates'; import { Template } from '@/lib/types/template'; import { RunFormSchema, RunTemplateData } from '@/lib/types/template-run'; import { transformWorkflowToFormSchema, validateFormSchema } from '@/lib/utils/form-schema-transformer'; interface Step1FormData { characterImage: string; productImage: string; script: string; } interface Step2FormData extends RunTemplateData { } interface FormData { step1: Step1FormData; step2: Step2FormData; } type UploadFieldKey = 'characterImage' | 'productImage'; const FALLBACK_PREVIEW = 'https://images.unsplash.com/photo-1542204165-0198c1e21a3b?auto=format&fit=crop&w=1200&q=80'; const FALLBACK_INSET = 'https://images.unsplash.com/photo-1524504388940-b1c1722653e1?auto=format&fit=crop&w=640&q=80'; export default function TemplateFormScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const router = useRouter(); const [currentStep, setCurrentStep] = useState(1); const [template, setTemplate] = useState