"use client"; import React, { useState, useEffect } from "react"; import { JournalPost, MoodType, PostType } from "./types"; import { MOODS } from "./mockData"; import { X, Feather, Save, StickyNote, BookOpen, Code, Camera, Volume2 } from "lucide-react"; interface EditPostModalProps { post: JournalPost | null; isOpen: boolean; onClose: () => void; onUpdatePost: (updatedPost: JournalPost) => void; } export const EditPostModal: React.FC = ({ post, isOpen, onClose, onUpdatePost, }) => { const [type, setType] = useState("sticky"); const [mood, setMood] = useState("spark"); const [title, setTitle] = useState(""); const [content, setContent] = useState(""); const [marginNote, setMarginNote] = useState(""); const [tagInput, setTagInput] = useState(""); const [codeSnippet, setCodeSnippet] = useState(""); const [stampedText, setStampedText] = useState(""); const [imageUrl, setImageUrl] = useState(""); const [imageCaption, setImageCaption] = useState(""); const [likes, setLikes] = useState(0); useEffect(() => { if (post) { setType(post.type); setMood(post.mood); setTitle(post.title || ""); setContent(post.content); setMarginNote(post.marginNotes ? post.marginNotes.join(", ") : ""); setTagInput(post.tags ? post.tags.join(", ") : ""); setCodeSnippet(post.codeSnippet || ""); setStampedText(post.stampedText || ""); setImageUrl(post.imageUrl || ""); setImageCaption(post.imageCaption || ""); setLikes(post.likes || 0); } }, [post]); if (!isOpen || !post) return null; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!content.trim()) return; const moodObj = MOODS.find((m) => m.id === mood) || MOODS[0]; const tags = tagInput .split(",") .map((t) => t.trim().replace(/^#/, "")) .filter((t) => t.length > 0); const updated: JournalPost = { ...post, type, mood, moodLabel: moodObj.label, title: title.trim() ? title : undefined, content, marginNotes: marginNote.trim() ? marginNote.split(",").map((n) => n.trim()) : undefined, tags: tags.length > 0 ? tags : ["genel"], stampedText: stampedText.trim() ? stampedText.trim() : undefined, codeSnippet: type === "code" && codeSnippet.trim() ? codeSnippet : undefined, codeLanguage: type === "code" ? "typescript" : undefined, imageUrl: type === "polaroid" && imageUrl.trim() ? imageUrl : undefined, imageCaption: type === "polaroid" && imageCaption.trim() ? imageCaption : undefined, likes, }; onUpdatePost(updated); onClose(); }; return (
e.stopPropagation()} > {/* Washi Tape */}
{/* Header */}
✏️

Notu Düzenle (Admin)

ID: {post.id} • {post.date}

{/* Format Selector */}
{/* Mood Selector */}
{MOODS.filter((m) => m.id !== "all").map((m) => ( ))}
{/* Title */}
setTitle(e.target.value)} placeholder="Başlık..." className="w-full px-3 py-2 text-sm bg-white/80 border border-[#18181B]/15 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#E11D48]/30 font-serif" />
{/* Content */}