/** * 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')}