import { lazy, Suspense } from "react"
import { CenterSpinner } from "@/shared/components/CenterSpinner"
import { Navigate, type RouteObject } from "react-router-dom"
import Layout from "@/shared/components/Layout"
import ProtectedRoute from "@/shared/components/ProtectedRoute"
import { SnapLayout } from "@/features/snap/components/SnapLayout"
import { PaletteShell } from "@/shared/components/PaletteShell"
import { PATHS } from "@/config/routes"
const LoginPage = lazy(() => import("@/features/auth/pages/LoginPage"))
const SessionListPage = lazy(() => import("@/features/snap/pages/SessionListPage"))
const NewChatPage = lazy(() => import("@/features/snap/pages/NewChatPage"))
const SessionChatPage = lazy(() => import("@/features/snap/pages/SessionChatPage"))
const SnippetPalettePage = lazy(() => import("@/features/snippets/pages/SnippetPalettePage"))
const AdminStatsPage = lazy(() => import("@/features/admin/pages/AdminStatsPage"))
const fallback =
const wrap = (el: React.ReactNode) => {el}
export const routes: RouteObject[] = [
{
element: ,
children: [{ path: PATHS.LOGIN.slice(1), element: wrap() }],
},
{
element: ,
children: [
{
// 챗봇(snap)·스니펫 공통 래퍼 — 붙여넣기 대상 배지 등 공통 UI 를 여기 한 곳에.
element: ,
children: [
{
element: ,
children: [
{ path: PATHS.SNAP.slice(1), element: wrap() },
{ path: PATHS.SNAP_NEW.slice(1), element: wrap() },
{ path: PATHS.SNAP_SESSION.slice(1), element: wrap() },
{ path: PATHS.ADMIN.slice(1), element: wrap() },
],
},
{
// snap 헤더·Ctrl+N 없이 풀윈도우(Raycast). h-full 체인은 PaletteShell 의 h-screen 에 기댐.
path: PATHS.SNIPPET.slice(1),
element: wrap(),
},
],
},
],
},
{ path: "*", element: },
]