import { createBrowserRouter } from "react-router-dom"; import { lazy, Suspense, type ComponentType } from "react"; import AppLayout from "@/components/layout/AppLayout"; import AuthLayout from "@/components/layout/AuthLayout"; import ProtectedRoute from "./ProtectedRoute"; import PublicRoute from "./PublicRoute"; /** lazy import 래퍼 */ function lazyPage(importFn: () => Promise<{ default: ComponentType }>) { const LazyComponent = lazy(importFn); return ( 로딩 중...}> ); } /* Auth 페이지 */ const LoginPage = () => lazyPage(() => import("@/features/auth/pages/LoginPage")); const SignupPage = () => lazyPage(() => import("@/features/auth/pages/SignupPage")); const VerifyEmailPage = () => lazyPage(() => import("@/features/auth/pages/VerifyEmailPage")); /* Dashboard 페이지 */ const HomePage = () => lazyPage(() => import("@/features/dashboard/pages/HomePage")); const DashboardPage = () => lazyPage(() => import("@/features/dashboard/pages/DashboardPage")); /* Service 페이지 */ const ServiceListPage = () => lazyPage(() => import("@/features/service/pages/ServiceListPage")); const ServiceRegisterPage = () => lazyPage(() => import("@/features/service/pages/ServiceRegisterPage")); const ServiceDetailPage = () => lazyPage(() => import("@/features/service/pages/ServiceDetailPage")); const ServiceEditPage = () => lazyPage(() => import("@/features/service/pages/ServiceEditPage")); /* Message 페이지 */ const MessageListPage = () => lazyPage(() => import("@/features/message/pages/MessageListPage")); const MessageRegisterPage = () => lazyPage(() => import("@/features/message/pages/MessageRegisterPage")); /* Statistics 페이지 */ const StatisticsPage = () => lazyPage(() => import("@/features/statistics/pages/StatisticsPage")); const StatisticsHistoryPage = () => lazyPage(() => import("@/features/statistics/pages/StatisticsHistoryPage")); /* Device 페이지 */ const DeviceListPage = () => lazyPage(() => import("@/features/device/pages/DeviceListPage")); /* Tag 페이지 */ const TagManagePage = () => lazyPage(() => import("@/features/tag/pages/TagManagePage")); /* Settings 페이지 */ const MyPage = () => lazyPage(() => import("@/features/settings/pages/MyPage")); const ProfileEditPage = () => lazyPage(() => import("@/features/settings/pages/ProfileEditPage")); const NotificationsPage = () => lazyPage(() => import("@/features/settings/pages/NotificationsPage")); export const router = createBrowserRouter([ { /* 공개 라우트 (인증 불필요) */ element: , children: [ { element: , children: [ { path: "/login", element: }, { path: "/signup", element: }, { path: "/verify-email", element: }, ], }, ], }, { /* 보호된 라우트 (인증 필요) */ element: , children: [ { element: , children: [ { path: "/", element: }, { path: "/dashboard", element: }, { path: "/services", element: }, { path: "/services/register", element: }, { path: "/services/:id", element: }, { path: "/services/:id/edit", element: }, { path: "/messages", element: }, { path: "/messages/register", element: }, { path: "/statistics", element: }, { path: "/statistics/history", element: }, { path: "/devices", element: }, { path: "/tags", element: }, { path: "/settings", element: }, { path: "/settings/profile", element: }, { path: "/settings/notifications", element: }, ], }, ], }, ]);