feat: initial commit

This commit is contained in:
2026-03-05 22:12:38 +01:00
commit bce762a783
380 changed files with 51955 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
import { useAuthStore } from './store/auth'
import Layout from './components/layout/Layout'
import LoginPage from './pages/Login'
import DashboardPage from './pages/Dashboard'
import OrdersPage from './pages/Orders'
import OrderDetailPage from './pages/OrderDetail'
import NewOrderPage from './pages/NewOrder'
import UploadPage from './pages/Upload'
import AdminPage from './pages/Admin'
import CadPreviewPage from './pages/CadPreview'
import MaterialsPage from './pages/Materials'
import WorkerActivityPage from './pages/WorkerActivity'
import ProductLibraryPage from './pages/ProductLibrary'
import ProductDetailPage from './pages/ProductDetail'
import NewProductOrderPage from './pages/NewProductOrder'
import NotificationsPage from './pages/Notifications'
import PreferencesPage from './pages/Preferences'
function ProtectedRoute({ children }: { children: React.ReactNode }) {
const token = useAuthStore((s) => s.token)
if (!token) return <Navigate to="/login" replace />
return <>{children}</>
}
function AdminRoute({ children }: { children: React.ReactNode }) {
const { token, user } = useAuthStore()
if (!token) return <Navigate to="/login" replace />
if (user?.role !== 'admin' && user?.role !== 'project_manager') return <Navigate to="/" replace />
return <>{children}</>
}
export default function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/login" element={<LoginPage />} />
<Route
path="/"
element={
<ProtectedRoute>
<Layout />
</ProtectedRoute>
}
>
<Route index element={<DashboardPage />} />
<Route path="orders" element={<OrdersPage />} />
<Route path="orders/new" element={<NewOrderPage />} />
<Route path="orders/new/product" element={<NewProductOrderPage />} />
<Route path="orders/:id" element={<OrderDetailPage />} />
<Route path="upload" element={<UploadPage />} />
<Route
path="admin"
element={
<AdminRoute>
<AdminPage />
</AdminRoute>
}
/>
<Route path="materials" element={<MaterialsPage />} />
<Route path="activity" element={<WorkerActivityPage />} />
<Route path="products" element={<ProductLibraryPage />} />
<Route path="products/:id" element={<ProductDetailPage />} />
<Route path="notifications" element={<NotificationsPage />} />
<Route path="preferences" element={<PreferencesPage />} />
<Route path="cad/:id" element={<CadPreviewPage />} />
</Route>
</Routes>
</BrowserRouter>
)
}