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


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="/dashboard/*" element={<UploadPage />} />

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

      {/* 最后一个兜底 */}
      <Route path="*" element={<PlaceholderPage pageId="home" />} />

      {/* 普通管理员，无 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} />} />
        <Route path="dashboard" element={<LogsDashboard />} />
      </Route>
    </Routes>
  );
}