import React, { useState } from 'react'; import { View, Text, TextInput, TouchableOpacity, StyleSheet, KeyboardAvoidingView, Platform, } from 'react-native'; import { useTheme } from '../ThemeProvider'; import { createDeck } from '../../services/firestore'; import { Deck } from '../../types/models'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; interface CreateDeckFormProps { onSuccess: (deck: Deck) => void; onCancel: () => void; } export const CreateDeckForm: React.FC = ({ onSuccess, onCancel }) => { const [name, setName] = useState(''); const [description, setDescription] = useState(''); const [error, setError] = useState(null); const { theme } = useTheme(); const handleSubmit = async () => { if (!name.trim()) { setError('Please enter a name for your deck'); return; } try { const newDeck = await createDeck({ name: name.trim(), description: description.trim(), }); onSuccess(newDeck); } catch (err) { setError('Failed to create deck. Please try again.'); console.error('Error creating deck:', err); } }; return ( Create New Deck Name Description (optional) {error && {error}} Cancel Create Deck ); }; const styles = StyleSheet.create({ container: { flex: 1, }, header: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', padding: 16, borderBottomWidth: 1, }, title: { fontSize: 20, fontWeight: '600', }, closeButton: { padding: 8, }, form: { padding: 16, gap: 16, }, inputContainer: { gap: 8, }, label: { fontSize: 16, fontWeight: '500', }, input: { borderWidth: 1, borderRadius: 8, padding: 12, fontSize: 16, }, textArea: { minHeight: 100, textAlignVertical: 'top', }, error: { fontSize: 14, marginTop: 8, }, buttons: { flexDirection: 'row', gap: 12, marginTop: 16, }, button: { flex: 1, padding: 12, borderRadius: 8, alignItems: 'center', }, buttonText: { fontSize: 16, fontWeight: '600', }, cancelButton: {}, createButton: {}, });