From ef55d9bb24430610b60c1b77821307cd72c08c55 Mon Sep 17 00:00:00 2001 From: zwlucas Date: Sat, 25 Jul 2026 18:23:29 -0300 Subject: feat: upload of the project Signed-off-by: zwlucas --- web/src/router.tsx | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 web/src/router.tsx (limited to 'web/src/router.tsx') diff --git a/web/src/router.tsx b/web/src/router.tsx new file mode 100644 index 0000000..5105fec --- /dev/null +++ b/web/src/router.tsx @@ -0,0 +1,70 @@ +/** + * router.tsx + * Rotas da aplicação com proteção por autenticação. + */ + +import { createBrowserRouter, Navigate } from 'react-router-dom'; +import { lazy, Suspense } from 'react'; +import AppLayout from '@/components/layout/AppLayout'; +import PageLoader from '@/components/ui/PageLoader'; +import { ProtectedRoute } from '@/components/auth/ProtectedRoute'; + +// ─── Lazy pages ─────────────────────────────────────────────────────────────── +const LoginPage = lazy(() => import('@/pages/LoginPage')); +const DashboardPage = lazy(() => import('@/pages/DashboardPage')); +const NewTicketPage = lazy(() => import('@/pages/NewTicketPage')); +const TicketDetailPage = lazy(() => import('@/pages/TicketDetailPage')); +const UsersPage = lazy(() => import('@/pages/UsersPage')); +const SettingsPage = lazy(() => import('@/pages/SettingsPage')); + +function Lazy({ children }: { children: React.ReactNode }) { + return }>{children}; +} + +// ─── Router ─────────────────────────────────────────────────────────────────── +export const router = createBrowserRouter([ + // ── Rota pública: login (sem AppLayout) ─────────────────────────────────── + { + path: '/login', + element: , + }, + + // ── Rotas protegidas (requerem autenticação) ────────────────────────────── + { + path: '/', + element: ( + + + + ), + children: [ + { + index: true, + element: , + }, + { + path: 'dashboard', + element: , + }, + { + path: 'tickets/new', + element: , + }, + { + path: 'tickets/:id', + element: , + }, + { + path: 'users', + element: , + }, + { + path: 'settings', + element: , + }, + ], + }, + + // Fallback + { path: '*', element: }, +]); -- cgit v1.2.3