import React, { useState } from 'react'; import { Plus } from 'lucide-react'; import { TodoItem } from '../types'; import { TodoCard } from './TodoCard'; import { PageHeader } from './PageHeader'; import { ChatDialog } from './ChatDialog'; interface TodoViewProps { items: TodoItem[]; onClose: () => void; onAdd?: () => void; onToggleItem: (id: string) => void; characterImageUrl?: string; onSendMessage: (message: string) => Promise; } export const TodoView: React.FC = ({ items, onClose, onAdd, onToggleItem, characterImageUrl, onSendMessage }) => { const [isChatOpen, setIsChatOpen] = useState(false); // Sort: Not done first, then by time const sortedItems = [...items].sort((a, b) => { if (a.isDone === b.isDone) { return (a.scheduledAt || 0) - (b.scheduledAt || 0); } return a.isDone ? 1 : -1; }); return (
{/* Background Overlay */}
{/* 页面头部 */} setIsChatOpen(true)} characterImageUrl={characterImageUrl} /> {/* Scrollable List */}
{sortedItems.map((item, index) => ( ))}
{/* Floating Action Button */}
{/* 对话弹窗 */} setIsChatOpen(false)} characterImageUrl={characterImageUrl} onSendMessage={onSendMessage} />
); };