"use client"; import { useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { Package, Loader2, Pencil, Trash2, Check, X } from "lucide-react"; export interface MyIdea { id: string; content: string; createdAt: string; } function MyIdeaItem({ idea, onEdit, onDelete, }: { idea: MyIdea; onEdit: (id: string, content: string) => Promise; onDelete: (id: string) => Promise; }) { const [editing, setEditing] = useState(false); const [draft, setDraft] = useState(idea.content); const [saving, setSaving] = useState(false); const handleSave = async () => { if (!draft.trim() || saving) return; setSaving(true); await onEdit(idea.id, draft); setSaving(false); setEditing(false); }; return ( {editing ? ( <> setDraft(e.target.value.slice(0, 200))} onKeyDown={(e) => { if (e.key === "Enter") handleSave(); if (e.key === "Escape") { setEditing(false); setDraft(idea.content); } }} maxLength={200} autoFocus className="h-8 min-w-0 flex-1 rounded-lg bg-elevated px-2.5 text-sm text-foreground outline-none ring-1 ring-border focus:ring-2 focus:ring-purple-600/50" /> ) : ( <> 💡

{idea.content}

)}
); } export default function BlindboxMyIdeas({ ideas, onEdit, onDelete, }: { ideas: MyIdea[]; onEdit: (id: string, content: string) => Promise; onDelete: (id: string) => Promise; }) { return (

我投入的想法({ideas.length})

{ideas.map((idea) => ( ))}
); }