Initializes the Condopay frontend project using Vite, React, and TypeScript. Includes basic project structure, dependencies, and configuration for Tailwind CSS and React Router.
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import React from 'react';
|
|
import { HashRouter, Routes, Route, Navigate, useLocation } from 'react-router-dom';
|
|
import { Layout } from './components/Layout';
|
|
import { FamilyList } from './pages/FamilyList';
|
|
import { FamilyDetail } from './pages/FamilyDetail';
|
|
import { SettingsPage } from './pages/Settings';
|
|
import { LoginPage } from './pages/Login';
|
|
import { CondoService } from './services/mockDb';
|
|
|
|
const ProtectedRoute = ({ children }: { children?: React.ReactNode }) => {
|
|
const user = CondoService.getCurrentUser();
|
|
const location = useLocation();
|
|
|
|
if (!user) {
|
|
return <Navigate to="/login" state={{ from: location }} replace />;
|
|
}
|
|
|
|
return <>{children}</>;
|
|
};
|
|
|
|
const App: React.FC = () => {
|
|
return (
|
|
<HashRouter>
|
|
<Routes>
|
|
<Route path="/login" element={<LoginPage />} />
|
|
|
|
<Route path="/" element={
|
|
<ProtectedRoute>
|
|
<Layout />
|
|
</ProtectedRoute>
|
|
}>
|
|
<Route index element={<FamilyList />} />
|
|
<Route path="family/:id" element={<FamilyDetail />} />
|
|
<Route path="settings" element={<SettingsPage />} />
|
|
</Route>
|
|
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Routes>
|
|
</HashRouter>
|
|
);
|
|
};
|
|
|
|
export default App; |