import React from 'react'; import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; import { AuthProvider, useAuth } from './src/contexts/AuthContext'; import { LanguageProvider } from './src/contexts/LanguageContext'; import { ThemeProvider } from './src/contexts/ThemeContext'; import Navbar from './components/Navbar'; import CastADApp from './src/pages/CastADApp'; import LoginPage from './src/pages/LoginPage'; import RegisterPage from './src/pages/RegisterPage'; import ForgotPasswordPage from './src/pages/ForgotPasswordPage'; import ResetPasswordPage from './src/pages/ResetPasswordPage'; import VerifyEmailPage from './src/pages/VerifyEmailPage'; import OAuthCallbackPage from './src/pages/OAuthCallbackPage'; import AdminDashboard from './src/pages/AdminDashboard'; import LandingPage from './src/pages/LandingPage'; import BrandPage from './src/pages/BrandPage'; import CreditsPage from './src/pages/CreditsPage'; import './src/styles/globals.css'; import './src/styles/text-effects.css'; import './src/styles/animations.css'; // 홈 라우트: 로그인 여부에 따라 랜딩 또는 SaaS 앱 표시 const HomeRoute: React.FC = () => { const { user } = useAuth(); return user ? : ; }; // SaaS 앱 보호 라우트: 로그인 필요 const ProtectedAppRoute: React.FC = () => { const { user } = useAuth(); return user ? : ; }; // 랜딩 페이지용 라우트 (Navbar 포함) const PublicRoutes: React.FC = () => { return ( <>
} /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } />
); }; const AppRoutes: React.FC = () => { const { user } = useAuth(); // 로그인된 사용자는 SaaS 앱으로 (Navbar 없음, Sidebar 사용) if (user) { return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } // 로그인되지 않은 사용자는 공개 페이지로 return ; }; const App: React.FC = () => { return ( ); }; export default App;