From 5614894e49b91b7eb0a6ef4339a7cc33bd2f98ae Mon Sep 17 00:00:00 2001 From: Redsandyg Date: Sat, 7 Jun 2025 17:17:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=20TabsNav=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BD=D0=B0=D0=B2=D0=B8=D0=B3=D0=B0=D1=86=D0=B8=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BE=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA?= =?UTF-8?q?=D0=B0=D0=BC=20=D0=B2=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B0=D1=85=20=D0=B0=D0=BA=D0=BA=D0=B0=D1=83=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D0=B8=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B8.=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B8=D0=B5=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=8B=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D0=B0,?= =?UTF-8?q?=20=D1=87=D1=82=D0=BE=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80?= =?UTF-8?q?=D1=83=20=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B8=20=D1=83=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=89=D0=B0=D0=B5=D1=82=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4?= =?UTF-8?q?=D0=BA=D0=B0=D0=BC=D0=B8.=20=D0=A2=D0=B0=D0=BA=D0=B6=D0=B5=20?= =?UTF-8?q?=D0=B2=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BB=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=D0=B8=D0=B7=D1=83?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B2=D0=BE=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D1=8F=D1=82=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/account/page.tsx | 18 +------- src/app/stat/page.tsx | 13 +----- src/components/DateInput.tsx | 31 ++++++++++---- src/components/Navigation.tsx | 29 +++++++------ src/components/TabsNav.tsx | 71 ++++++++++++++++++++++++++++++++ src/styles/account.module.css | 57 +++++++------------------ src/styles/dateinput.module.css | 37 +++++++++++++++++ src/styles/navigation.module.css | 4 +- src/styles/stat.module.css | 9 +++- src/styles/tabs.module.css | 31 ++++++++++++++ 10 files changed, 204 insertions(+), 96 deletions(-) create mode 100644 src/components/TabsNav.tsx create mode 100644 src/styles/dateinput.module.css create mode 100644 src/styles/tabs.module.css diff --git a/src/app/account/page.tsx b/src/app/account/page.tsx index a067ad3..8e93a69 100644 --- a/src/app/account/page.tsx +++ b/src/app/account/page.tsx @@ -23,6 +23,7 @@ import AccountProfile from "../../components/AccountProfile"; import AccountSecurity from "../../components/AccountSecurity"; import AccountNotifications from "../../components/AccountNotifications"; import AccountAgentTransactionSection from "../../components/AccountAgentTransactionSection"; +import TabsNav from "../../components/TabsNav"; const initialNotifications = { emailNotifications: true, @@ -54,22 +55,7 @@ export default function AccountPage() {

Аккаунт

- +
{activeTab === "profile" && ( diff --git a/src/app/stat/page.tsx b/src/app/stat/page.tsx index a50c5da..49b8d91 100644 --- a/src/app/stat/page.tsx +++ b/src/app/stat/page.tsx @@ -8,6 +8,7 @@ import styles from "../../styles/stat.module.css"; import DateInput from "../../components/DateInput"; import DateFilters from "../../components/DateFilters"; import AuthGuard from "../../components/AuthGuard"; +import TabsNav from "../../components/TabsNav"; const tabs = [ { id: "agents", label: "Агенты" }, @@ -40,17 +41,7 @@ export default function StatPage() {

Статистика и аналитика

{/* */}
-
- {tabs.map((tab) => ( - - ))} -
+ = ({ label, value, onChange, min, max }) => (
- +
+ + { + const inputElement = e.currentTarget.previousElementSibling as HTMLInputElement; + if (inputElement && typeof inputElement.showPicker === 'function') { + inputElement.showPicker(); + } else { + inputElement.focus(); + } + }} + /> +
); diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx index c331105..579fabb 100644 --- a/src/components/Navigation.tsx +++ b/src/components/Navigation.tsx @@ -5,6 +5,8 @@ import styles from "../styles/navigation.module.css"; import Cookies from "js-cookie"; import { useEffect, useState } from "react"; import { useUser } from "./UserContext"; +import TabsNav from "./TabsNav"; +import { useRouter } from "next/navigation"; interface NavItem { id: string; @@ -22,6 +24,7 @@ const Navigation: React.FC = () => { const pathname = usePathname(); const [login, setLogin] = useState(""); const { firstName, surname } = useUser(); + const router = useRouter(); useEffect(() => { if (typeof document !== "undefined") { @@ -30,25 +33,21 @@ const Navigation: React.FC = () => { } }, []); + const handleNavigationChange = (tabId: string) => { + if (tabId === "home") { + router.push("/"); + } else if (tabId === "stat") { + router.push("/stat"); + } else if (tabId === "billing") { + router.push("/billing"); + } + }; + if (pathname === "/auth") return null; return (