"use client"; import React, { useState, useRef } from 'react'; import Image from 'next/image'; import { LayoutDashboard, Newspaper, Users, BarChart3, Settings, HelpCircle, Image as ImageIcon, Type, Calendar, Clock, Tag, User, Save, Eye, Send } from 'lucide-react'; // Importe o componente que criámos (ajuste o caminho se necessário) import MultiAspectEditor from '../components/MultiAspectEditor'; import { Editor } from '@tinymce/tinymce-react'; const CreateNewsPage = () => { // Configuração do Design do Editor para combinar com seu layout const editorConfig = { height: 500, menubar: false, plugins: [ 'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount' ], // Adicionei 'blockquote' na toolbar toolbar: 'undo redo | blocks | ' + 'bold italic forecolor | alignleft aligncenter ' + 'alignright alignjustify | bullist numlist | ' + 'blockquote link image | removeformat | help', // Customização do aspeto da citação dentro do editor content_style: ` body { font-family: Inter, Helvetica, Arial, sans-serif; font-size: 14px; color: #334155; line-height: 1.6; } blockquote { border-left: 4px solid #2563eb; /* Azul da TVone */ padding-left: 1.5rem; color: #475569; font-style: italic; margin: 1.5rem 0; background: #f8fafc; padding: 1rem 1.5rem; border-radius: 0 8px 8px 0; } `, skin: 'oxide', promotion: false, // Remove o botão "Upgrade" do Tiny branding: false, // Remove o "Powered by Tiny" }; // 1. Estados para o Crop const [tempImage, setTempImage] = useState(null); const [isEditorOpen, setIsEditorOpen] = useState(false); const [finalCrops, setFinalCrops] = useState(null); // Guarda os Base64 finais const [content, setContent] = useState(''); const fileInputRef = useRef(null); // 2. Lógica de Upload const handleFileChange = (e: React.ChangeEvent) => { if (e.target.files && e.target.files.length > 0) { const reader = new FileReader(); reader.readAsDataURL(e.target.files[0]); reader.onload = () => { setTempImage(reader.result as string); setIsEditorOpen(true); }; } }; const triggerUpload = () => { fileInputRef.current?.click(); }; return (
{/* --- MODAL DO EDITOR (Renderiza fora do fluxo quando ativo) --- */} {isEditorOpen && tempImage && ( setIsEditorOpen(false)} onExport={(data) => { setFinalCrops(data); // Aqui tens o objeto com hero, news, square em Base64 setIsEditorOpen(false); console.log("Imagens prontas para envio:", data); }} /> )} {/* Sidebar Lateral */} {/* Main Content Area */}

James Wilson

Editor

User

Criar Nova Notícia

{/* Coluna Principal */}
{/* Título */}

{/* TinyMCE Editor */}
setContent(newContent)} />
{/* Resumo (Lead) */}