diff --git a/frontend/app/(student)/dashboard/page.tsx b/frontend/app/(student)/dashboard/page.tsx
index 9547849..031760d 100644
--- a/frontend/app/(student)/dashboard/page.tsx
+++ b/frontend/app/(student)/dashboard/page.tsx
@@ -2,6 +2,7 @@
import { useState, useEffect } from 'react';
import Link from 'next/link';
+import { StudentNav } from '@/components/StudentNav';
import { BalanceCard } from '@/components/BalanceCard';
import { TransactionList } from '@/components/TransactionList';
import { Spinner } from '@/components/ui';
@@ -58,6 +59,8 @@ export default function StudentDashboardPage() {
const balance = profile?.balance ?? user?.balance ?? 0;
return (
+
+
Привет, {displayName.split(' ')[0]} 👋
@@ -77,5 +80,6 @@ export default function StudentDashboardPage() {
+
);
}
diff --git a/frontend/app/(student)/history/page.tsx b/frontend/app/(student)/history/page.tsx
index df47ac0..0709e9b 100644
--- a/frontend/app/(student)/history/page.tsx
+++ b/frontend/app/(student)/history/page.tsx
@@ -2,6 +2,7 @@
import { useState, useEffect, useCallback } from 'react';
import Link from 'next/link';
+import { StudentNav } from '@/components/StudentNav';
import { TransactionList } from '@/components/TransactionList';
import { Button } from '@/components/ui';
import { api } from '@/lib/api';
@@ -49,13 +50,10 @@ export default function HistoryPage() {
const hasMore = transactions.length < total;
return (
+
+
-
-
- ← Назад
-
-
История операций
-
+ История операций
{error && (
{error}
@@ -77,5 +75,6 @@ export default function HistoryPage() {
Это все операции
)}
+
);
}
diff --git a/frontend/app/(student)/partners/page.tsx b/frontend/app/(student)/partners/page.tsx
index 180f367..18bb34f 100644
--- a/frontend/app/(student)/partners/page.tsx
+++ b/frontend/app/(student)/partners/page.tsx
@@ -1,7 +1,7 @@
'use client';
import { useState, useEffect } from 'react';
-import Link from 'next/link';
+import { StudentNav } from '@/components/StudentNav';
import { PartnerCard } from '@/components/PartnerCard';
import { Spinner } from '@/components/ui';
import { api } from '@/lib/api';
@@ -27,13 +27,10 @@ export default function PartnersPage() {
}, []);
return (
+
+
-
-
- ← Назад
-
-
Партнёры
-
+ Партнёры
{loading && (
@@ -57,5 +54,6 @@ export default function PartnersPage() {
)}
+
);
}
diff --git a/frontend/app/(student)/qr/page.tsx b/frontend/app/(student)/qr/page.tsx
index f8ec27c..9f0be38 100644
--- a/frontend/app/(student)/qr/page.tsx
+++ b/frontend/app/(student)/qr/page.tsx
@@ -1,22 +1,21 @@
'use client';
-import Link from 'next/link';
+import { StudentNav } from '@/components/StudentNav';
import { QRDisplay } from '@/components/QRDisplay';
export default function QRPage() {
return (
-
- Оплата поинтами
+
+
+
+ Оплата поинтами
-
+
-
- Покажи этот QR кассиру. Он действителен 5 минут и может быть использован только один раз.
-
-
-
- ← Назад
-
-
+
+ Покажи этот QR кассиру. Он действителен 5 минут и может быть использован только один раз.
+
+
+
);
}
diff --git a/frontend/components/StudentNav.tsx b/frontend/components/StudentNav.tsx
new file mode 100644
index 0000000..7289785
--- /dev/null
+++ b/frontend/components/StudentNav.tsx
@@ -0,0 +1,44 @@
+'use client';
+
+import Link from 'next/link';
+import { usePathname } from 'next/navigation';
+import { useAuthStore } from '@/lib/store';
+
+const LINKS = [
+ { href: '/dashboard', label: 'Главная' },
+ { href: '/history', label: 'История' },
+ { href: '/qr', label: 'QR-код' },
+ { href: '/partners', label: 'Партнёры' },
+] as const;
+
+export function StudentNav() {
+ const pathname = usePathname();
+ const { logout } = useAuthStore();
+
+ return (
+
+ );
+}