import React, { useState, useEffect } from 'react'; import { toast } from 'react-toastify'; interface SavedPage { id: string; title: string; html: string; createdAt: number; } interface SavedPagesProps { currentHtml: string; onLoadPage: (html: string) => void; } const SavedPages: React.FC = ({ currentHtml, onLoadPage }) => { const [pages, setPages] = useState([]); const [isOpen, setIsOpen] = useState(false); const [newPageTitle, setNewPageTitle] = useState(''); const [isAdding, setIsAdding] = useState(false); // Load saved pages from localStorage useEffect(() => { const savedPagesJson = localStorage.getItem('autosite_saved_pages'); if (savedPagesJson) { try { const savedPages = JSON.parse(savedPagesJson); setPages(savedPages); } catch (error) { console.error('Error loading saved pages:', error); } } }, []); // Save pages to localStorage when they change useEffect(() => { localStorage.setItem('autosite_saved_pages', JSON.stringify(pages)); }, [pages]); // Save current page const savePage = () => { if (!currentHtml) { toast.error('No content to save'); return; } if (!newPageTitle.trim()) { toast.error('Please enter a title for your page'); return; } // Create a new page const newPage: SavedPage = { id: `page_${Date.now()}`, title: newPageTitle, html: currentHtml, createdAt: Date.now() }; setPages([newPage, ...pages]); setNewPageTitle(''); setIsAdding(false); toast.success('Page saved successfully'); }; // Load a page const loadPage = (page: SavedPage) => { if (window.confirm('Are you sure you want to load this page? Your current work will be replaced.')) { onLoadPage(page.html); setIsOpen(false); toast.info(`Loaded page: ${page.title}`); } }; // Delete a page const deletePage = (e: React.MouseEvent, pageId: string) => { e.stopPropagation(); if (window.confirm('Are you sure you want to delete this page?')) { setPages(pages.filter(page => page.id !== pageId)); toast.info('Page deleted'); } }; return (
{isOpen && (

Saved Pages

{/* Add new page form */} {isAdding ? (
setNewPageTitle(e.target.value)} />
) : ( )} {/* List of saved pages */} {pages.length === 0 ? (

No saved pages yet

) : (
{pages.map((page) => (
loadPage(page)} >

{page.title}

{new Date(page.createdAt).toLocaleString()}

))}
)}
)}
); }; export default SavedPages;