import { useRef, createElement, useState, useEffect, useMemo, Component, } from '@wordpress/element' import DashboardContext, { Provider, getDefaultValue } from './context' import Heading from './Heading' import { createHashRouter, RouterProvider, Link, useLocation, useNavigate, useMatch, useParams, Outlet, createRoutesFromElements, Route, } from 'react-router-dom' import ctEvents from 'ct-events' window.ctDashboardLocalizations.DashboardContext = DashboardContext import Navigation from './Navigation' import Home from './screens/Home' import RecommendedPlugins from './screens/RecommendedPlugins' import Changelog from './screens/Changelog' class ErrorBoundary extends Component { state = { hasError: false, error: null } static getDerivedStateFromError(error) { return { hasError: true, error } } componentDidCatch(error, errorInfo) { console.error('Dashboard Route Error:', error, errorInfo) if (this.props.onError) { this.props.onError(error, errorInfo) } } render() { if (this.state.hasError) { return null } return this.props.children } } const RouteComponentWrapper = ({ Component, ...props }) => { const navigate = useNavigate() const location = useLocation() const params = useParams() const match = useMatch('*') return ( ) } const AnimatedOutlet = () => { return (
) } const DashboardLayout = () => { const navigate = useNavigate() const location = useLocation() const match = useMatch return (
) } const createDashboardRouter = () => { const userRoutes = [] ctEvents.trigger('ct:dashboard:routes', userRoutes) return createHashRouter( createRoutesFromElements( }> } /> } /> } /> {userRoutes.map(({ Component, key, path, ...props }) => ( } /> ))} ) ) } const Dashboard = () => { const router = useMemo(() => createDashboardRouter(), []) return ( ) } export default Dashboard