'use client' import React, { useState } from 'react' import { flashcardsService, type CreateFlashcardRequest, type Flashcard } from '@/lib/services/flashcards' import AudioPlayer from './AudioPlayer' interface FlashcardFormProps { initialData?: Partial isEdit?: boolean onSuccess: () => void onCancel: () => void } export function FlashcardForm({ initialData, isEdit = false, onSuccess, onCancel }: FlashcardFormProps) { const [formData, setFormData] = useState({ word: initialData?.word || '', translation: initialData?.translation || '', definition: initialData?.definition || '', pronunciation: initialData?.pronunciation || '', partOfSpeech: initialData?.partOfSpeech || '名詞', example: initialData?.example || '', exampleTranslation: initialData?.exampleTranslation || '', }) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData(prev => ({ ...prev, [name]: value })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError(null) try { let result if (isEdit && initialData?.id) { result = await flashcardsService.updateFlashcard(initialData.id, formData) } else { result = await flashcardsService.createFlashcard(formData) } if (result.success) { onSuccess() } else { setError(result.error || `Failed to ${isEdit ? 'update' : 'create'} flashcard`) } } catch (error) { setError(error instanceof Error ? error.message : 'An unexpected error occurred') } finally { setLoading(false) } } return (
{error && (
{error}
)}