import React, { useState } from 'react'; import Input from '../common/Input'; import Button from '../common/Button'; import { Category } from '../../types'; interface CategoryFormProps { initialCategory?: Partial; onSubmit: (category: Omit) => void; onCancel: () => void; } const CategoryForm: React.FC = ({ initialCategory = {}, onSubmit, onCancel }) => { const [name, setName] = useState(initialCategory.name || ''); const [color, setColor] = useState(initialCategory.color || '#007AFF'); const [error, setError] = useState(''); const colorOptions = [ { color: '#007AFF', name: '蓝色' }, { color: '#4CD964', name: '绿色' }, { color: '#FF3B30', name: '红色' }, { color: '#FF9500', name: '橙色' }, { color: '#FFCC00', name: '黄色' }, { color: '#5856D6', name: '紫色' }, { color: '#FF2D55', name: '粉色' }, { color: '#5AC8FA', name: '浅蓝色' }, ]; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!name.trim()) { setError('请输入分类名称'); return; } onSubmit({ name: name.trim(), color }); }; return (
{ setName(e.target.value); if (error) setError(''); }} error={error} required />
{colorOptions.map((option) => (
setColor(option.color)} title={option.name} /> ))}
); }; export default CategoryForm;