/** * Main Admin App Component * * Router component for admin interface * * @package ThinkRank * @since 1.0.0 */ import { useState, useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { Spinner, Notice } from '@wordpress/components'; // Page Components import Dashboard from './pages/Dashboard'; import EssentialSEO from './pages/EssentialSEO'; import AITools from './pages/AITools'; import Settings from './pages/Settings'; import UsageAnalytics from './pages/UsageAnalytics'; // Common Components import Header from './common/Header'; import ErrorBoundary from './common/ErrorBoundary'; /** * Main App Component * * @param {Object} props Component props * @param {string} props.page Current page identifier */ const App = ({ page = 'dashboard' }) => { const [currentPage, setCurrentPage] = useState(page); const [isLoading, setIsLoading] = useState(true); // Simplified state - remove store dependency for now const [isInitialized, setIsInitialized] = useState(false); const [hasError, setHasError] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const userCapabilities = {}; // Initialize app useEffect(() => { const initializeApp = async () => { try { // Simple initialization without store dependencies await new Promise(resolve => setTimeout(resolve, 500)); setIsInitialized(true); setIsLoading(false); } catch (error) { console.error('ThinkRank: App initialization failed', error); setHasError(true); setErrorMessage(error.message); setIsLoading(false); } }; initializeApp(); }, []); // Handle page changes const handlePageChange = (newPage) => { if (userCapabilities[newPage] !== false) { setCurrentPage(newPage); } }; // Render loading state if (isLoading || !isInitialized) { return (

{__('Loading ThinkRank...', 'thinkrank')}

); } // Render error state if (hasError) { return (
{__('ThinkRank Error:', 'thinkrank')}
{errorMessage}
); } // Get page information for header const getPageInfo = (page) => { switch (page) { case 'dashboard': return { title: __('Dashboard', 'thinkrank'), description: __('Overview of your SEO optimization progress', 'thinkrank'), showHelp: true }; case 'essential-seo': return { title: __('Essential SEO', 'thinkrank'), description: __('Configure your site-wide SEO settings with AI-powered optimization', 'thinkrank'), showHelp: true }; case 'ai-tools': return { title: __('AI Tools', 'thinkrank'), description: __('AI-powered content tools including Content Planner and Metadata Generator', 'thinkrank'), showHelp: true }; case 'settings': return { title: __('Settings', 'thinkrank'), description: __('Configure your AI API keys and plugin preferences', 'thinkrank'), showHelp: false }; case 'analytics': return { title: __('Usage Analytics', 'thinkrank'), description: __('Track your AI usage, costs, and plugin performance analytics', 'thinkrank'), showHelp: true }; default: return { title: __('ThinkRank', 'thinkrank'), description: __('AI-powered SEO optimization for WordPress', 'thinkrank'), showHelp: false }; } }; const pageInfo = getPageInfo(currentPage); return (
{renderCurrentPage(currentPage)}
); }; /** * Render current page component * * @param {string} page Current page * @return {JSX.Element} Page component */ function renderCurrentPage(page) { switch (page) { case 'dashboard': return ; case 'essential-seo': return ; case 'ai-tools': return ; case 'settings': return ; case 'analytics': return ; default: return ( {__('Page not found. Redirecting to dashboard...', 'thinkrank')} ); } } export default App;