import React from 'react';
import {
  Routes,
  Route,
  Navigate,
} from 'react-router-dom';
import AdminPage from '../components/Admin';
import UserManagement from '../components/UserManagement';
import LogsDashboard from '../components/LogsDashboard';
import SuperAdmin from '../components/SuperAdmin';

import CreatePost     from '../components/CreatePost'      // src/components/CreatePost.jsx
import HomeFeed       from '../components/HomeFeed'        // src/components/HomeFeed.jsx
import PlaceholderPage from '../components/PlaceholderPage'// src/components/PlaceholderPage.jsx
import UploadPage     from '../components/UploadPage'      // src/components/UploadPage.jsx

import UserProfile from '../components/UserProfile'; // src/components/UserProfileRoute.jsx

import LoginPage from '../pages/LoginPage/LoginPage';
import RegisterPage from '../pages/RegisterPage/RegisterPage';
import ForgotPasswordPage from '../pages/ForgotPasswordPage/ForgotPasswordPage';
import TestDashboard from '../pages/TestDashboard/TestDashboard';

import TransactionLogs from '../components/TransactionLogs';
import PerformanceLogs from '../components/PerformanceLogs';

export default function AppRoutes() {
  return (
    <Routes>
      <Route path="/posts/new" element={<CreatePost />} />
    
      <Route path="/home"      element={<HomeFeed />} />

      <Route path="/notebooks" element={<PlaceholderPage pageId="notebooks" />} />
      <Route path="/activity"  element={<PlaceholderPage pageId="activity"  />} />
      <Route path="/notes"     element={<PlaceholderPage pageId="notes"     />} />
      <Route path="/creator"   element={<PlaceholderPage pageId="creator"   />} />
      <Route path="/journal"   element={<PlaceholderPage pageId="journal"   />} />
      <Route path="/user/:userId" element={<UserProfile />} />
      <Route path="/dashboard/*" element={<UploadPage />} />

      {/* 根路径重定向到 dashboard */}
      {/* <Route path="/" element={<Navigate to="/dashboard/overview" replace />} /> */}

      <Route path="/" element={<LoginPage />} />
      <Route path="/login" element={<LoginPage />} />
      <Route path="/register" element={<RegisterPage />} />
      <Route path="/forgot-password" element={<ForgotPasswordPage />} />
      <Route path="/test-dashboard" element={<TestDashboard />} />

      {/* 普通管理员，无 header */}
      <Route path="admin" element={<AdminPage />} />

      {/* 超级管理员，只用 SuperAdminLayout */}
      <Route path="superadmin" element={<SuperAdmin />}>
        <Route index element={<Navigate to="users" replace />} />
        <Route path="users" element={<UserManagement superAdminId={3} />} />

        {/* dashboard as layout */}
        <Route path="dashboard" element={<LogsDashboard />}>
          <Route index element={<Navigate to="transactions" replace />} />
          <Route path="transactions" element={<TransactionLogs userId={1} />} />
          <Route path="performance" element={<PerformanceLogs userId={1} />} />
        </Route>
      </Route>

      {/* 最后一个兜底，放在最末尾 */}
      <Route path="*" element={<PlaceholderPage pageId="home" />} />
    </Routes>
  );
}