snp-global/frontend/src/App.tsx
HYOJIN f2c331214a refactor: Basic Auth 인증 비활성화 및 계정 메뉴 숨김
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 09:02:13 +09:00

64 lines
2.3 KiB
TypeScript

import { lazy, Suspense } from 'react';
import { BrowserRouter, Routes, Route, useLocation } from 'react-router-dom';
import { ToastProvider, useToastContext } from './contexts/ToastContext';
import { ThemeProvider } from './contexts/ThemeContext';
import Navbar from './components/Navbar';
import ToastContainer from './components/Toast';
import LoadingSpinner from './components/LoadingSpinner';
const MainMenu = lazy(() => import('./pages/MainMenu'));
const BypassConfig = lazy(() => import('./pages/BypassConfig'));
const BypassCatalog = lazy(() => import('./pages/BypassCatalog'));
const ScreeningGuide = lazy(() => import('./pages/ScreeningGuide'));
const RiskComplianceHistory = lazy(() => import('./pages/RiskComplianceHistory'));
function AppLayout() {
const { toasts, removeToast } = useToastContext();
const location = useLocation();
const isMainMenu = location.pathname === '/';
return (
<div className="h-screen bg-wing-bg text-wing-text flex flex-col overflow-hidden">
{/* 메인 화면: 전체화면, 섹션 페이지: 탭 + 스크롤 콘텐츠 */}
{isMainMenu ? (
<div className="flex-1 overflow-auto px-4">
<Suspense fallback={<LoadingSpinner />}>
<Routes>
<Route path="/" element={<MainMenu />} />
</Routes>
</Suspense>
</div>
) : (
<>
<div className="flex-shrink-0 px-4 pt-4 max-w-7xl mx-auto w-full">
<Navbar />
</div>
<div className="flex-1 overflow-auto px-4 pb-4 pt-6 max-w-7xl mx-auto w-full">
<Suspense fallback={<LoadingSpinner />}>
<Routes>
<Route path="/bypass-catalog" element={<BypassCatalog />} />
<Route path="/bypass-config" element={<BypassConfig />} />
<Route path="/screening-guide" element={<ScreeningGuide />} />
<Route path="/risk-compliance-history" element={<RiskComplianceHistory />} />
</Routes>
</Suspense>
</div>
</>
)}
<ToastContainer toasts={toasts} onRemove={removeToast} />
</div>
);
}
export default function App() {
return (
<ThemeProvider>
<BrowserRouter basename="/snp-global">
<ToastProvider>
<AppLayout />
</ToastProvider>
</BrowserRouter>
</ThemeProvider>
);
}