feat(arayüz): sayfa yönlendirme, korumalı sayfalar ve uygulama iskeleti
- react-router: Türkçe adresler (/defter, /plan, /birikim, ...), 404 sayfası - Korumalı sayfalar: oturum yoksa /giris?donus=..., girişten sonra geri dönüş - Açık yönlendirme koruması (safeReturnPath, 10 test) - İskelet: mobilde 5 öğeli alt menü, masaüstünde sol kenar çubuğu - Diğer sayfası (değerlendirme, raporlar, ayarlar, tema, çıkış) - Arayüz metinleri lib/strings.ts'de toplanmaya başlandı - Tasarım önizlemesi /dev/tasarim (yalnızca geliştirmede) - Düzeltme: çıkışta önbellek temizliği ekranı güncellemiyordu Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import { createBrowserRouter, type RouteObject } from 'react-router'
|
||||
import { AppLayout } from '@/components/layout/app-layout'
|
||||
import { paths } from '@/components/layout/nav-items'
|
||||
import { RequireAuth, RequireGuest } from '@/components/layout/require-auth'
|
||||
import { LoginPage, RegisterPage } from '@/features/auth/login-page'
|
||||
import { DashboardPage } from '@/features/dashboard/page'
|
||||
import { DesignPreview } from '@/features/dev/design-preview'
|
||||
import { NotFoundPage } from '@/features/errors/not-found-page'
|
||||
import { LedgerPage } from '@/features/ledger/page'
|
||||
import { MorePage } from '@/features/more/page'
|
||||
import { PlanningPage } from '@/features/planning/page'
|
||||
import { ReportsPage } from '@/features/reports/page'
|
||||
import { ReviewPage } from '@/features/review/page'
|
||||
import { SavingsPage } from '@/features/savings/page'
|
||||
import { SettingsPage } from '@/features/settings/page'
|
||||
|
||||
const routes: RouteObject[] = [
|
||||
// Oturumsuz
|
||||
{
|
||||
element: <RequireGuest />,
|
||||
children: [
|
||||
{ path: paths.login, element: <LoginPage /> },
|
||||
{ path: paths.register, element: <RegisterPage /> },
|
||||
],
|
||||
},
|
||||
// Oturumlu (iskelet: kenar çubuğu / alt menü)
|
||||
{
|
||||
element: <RequireAuth />,
|
||||
children: [
|
||||
{
|
||||
element: <AppLayout />,
|
||||
children: [
|
||||
{ index: true, element: <DashboardPage /> },
|
||||
{ path: paths.ledger, element: <LedgerPage /> },
|
||||
{ path: paths.planning, element: <PlanningPage /> },
|
||||
{ path: paths.savings, element: <SavingsPage /> },
|
||||
{ path: paths.review, element: <ReviewPage /> },
|
||||
{ path: paths.reports, element: <ReportsPage /> },
|
||||
{ path: paths.settings, element: <SettingsPage /> },
|
||||
{ path: paths.more, element: <MorePage /> },
|
||||
{ path: '*', element: <NotFoundPage /> },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
// Tasarım önizlemesi yalnızca geliştirmede (canlı derlemeye girmez)
|
||||
if (import.meta.env.DEV) {
|
||||
routes.unshift({ path: '/dev/tasarim', element: <DesignPreview /> })
|
||||
}
|
||||
|
||||
export const router = createBrowserRouter(routes)
|
||||
Reference in New Issue
Block a user