Files
kakeibo/frontend/src/features/more/page.tsx
T
suphicakir c6d4c30461 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>
2026-11-12 00:46:17 +03:00

41 lines
1.4 KiB
TypeScript

import { ChevronRight } from 'lucide-react'
import { Link } from 'react-router'
import { AccountSummary, LogoutButton } from '@/components/layout/app-layout'
import { moreNav } from '@/components/layout/nav-items'
import { PageHeader } from '@/components/page'
import { ThemeToggle } from '@/components/theme-toggle'
import { t } from '@/lib/strings'
/** Mobil "☰ Diğer": alt menüye sığmayan sayfalar, tema ve hesap. */
export function MorePage() {
return (
<>
<PageHeader title={t.pages.more.title} />
<nav className="divide-y overflow-hidden rounded-xl border bg-card">
{moreNav.map(({ to, label, icon: Icon }) => (
<Link
key={to}
to={to}
className="flex min-h-14 items-center gap-3 px-4 transition-colors hover:bg-muted"
>
<Icon className="size-5 text-muted-foreground" aria-hidden />
<span className="flex-1 font-medium">{label}</span>
<ChevronRight className="size-4 text-muted-foreground" aria-hidden />
</Link>
))}
</nav>
<section className="mt-6 space-y-3">
<h2 className="text-sm font-medium text-muted-foreground">{t.account.theme}</h2>
<ThemeToggle className="w-full [&>button]:flex-1" />
</section>
<section className="mt-6 flex items-center justify-between gap-3 rounded-xl border bg-card p-4">
<AccountSummary />
<LogoutButton />
</section>
</>
)
}