From 646e97df3e090aa18d8dc538cfcc2e7374d1e109 Mon Sep 17 00:00:00 2001 From: ivannoskov Date: Wed, 7 Jan 2026 16:08:26 +0300 Subject: [PATCH] feat: projects selector replace --- .../[workspaceId]/analytics/channels/page.tsx | 18 ++++++++------ .../analytics/creatives/page.tsx | 18 ++++++++------ .../[workspaceId]/analytics/page.tsx | 13 ++-------- .../[workspaceId]/analytics/spending/page.tsx | 24 +++++++++++-------- app/dashboard/[workspaceId]/channels/page.tsx | 1 - .../[workspaceId]/creatives/page.tsx | 2 ++ app/dashboard/[workspaceId]/page.tsx | 6 ++++- .../[workspaceId]/placements/page.tsx | 2 ++ app/dashboard/[workspaceId]/projects/page.tsx | 1 - .../purchase-plans/[projectId]/page.tsx | 3 +-- .../[workspaceId]/purchase-plans/page.tsx | 1 - .../[workspaceId]/settings/invites/page.tsx | 1 - .../[workspaceId]/settings/members/page.tsx | 1 - app/dashboard/[workspaceId]/settings/page.tsx | 1 - components/layout/dashboard-header.tsx | 4 ---- 15 files changed, 48 insertions(+), 48 deletions(-) diff --git a/app/dashboard/[workspaceId]/analytics/channels/page.tsx b/app/dashboard/[workspaceId]/analytics/channels/page.tsx index ce4b963..006990d 100644 --- a/app/dashboard/[workspaceId]/analytics/channels/page.tsx +++ b/app/dashboard/[workspaceId]/analytics/channels/page.tsx @@ -16,6 +16,7 @@ import { import { DashboardHeader } from "@/components/layout/dashboard-header"; import { useWorkspace } from "@/components/providers/workspace-provider"; import { demoAwareAnalyticsApi } from "@/lib/demo"; +import { ProjectSelector } from "@/components/project-selector"; import { Card, CardContent, @@ -169,13 +170,16 @@ export default function ChannelsAnalyticsPage() { />
-
-

- Аналитика по каналам -

-

- Эффективность каналов размещения -

+
+
+

+ Аналитика по каналам +

+

+ Эффективность каналов размещения +

+
+
{loading ? ( diff --git a/app/dashboard/[workspaceId]/analytics/creatives/page.tsx b/app/dashboard/[workspaceId]/analytics/creatives/page.tsx index f966925..cd091c3 100644 --- a/app/dashboard/[workspaceId]/analytics/creatives/page.tsx +++ b/app/dashboard/[workspaceId]/analytics/creatives/page.tsx @@ -17,6 +17,7 @@ import { import { DashboardHeader } from "@/components/layout/dashboard-header"; import { useWorkspace } from "@/components/providers/workspace-provider"; import { demoAwareAnalyticsApi } from "@/lib/demo"; +import { ProjectSelector } from "@/components/project-selector"; import { Card, CardContent, @@ -189,13 +190,16 @@ export default function CreativesAnalyticsPage() { />
-
-

- Аналитика по креативам -

-

- Сравнение эффективности рекламных материалов -

+
+
+

+ Аналитика по креативам +

+

+ Сравнение эффективности рекламных материалов +

+
+
{loading ? ( diff --git a/app/dashboard/[workspaceId]/analytics/page.tsx b/app/dashboard/[workspaceId]/analytics/page.tsx index ef4abf7..8e9829a 100644 --- a/app/dashboard/[workspaceId]/analytics/page.tsx +++ b/app/dashboard/[workspaceId]/analytics/page.tsx @@ -19,6 +19,7 @@ import { import { DashboardHeader } from "@/components/layout/dashboard-header"; import { useWorkspace } from "@/components/providers/workspace-provider"; import { demoAwareAnalyticsApi } from "@/lib/demo"; +import { ProjectSelector } from "@/components/project-selector"; import { Card, CardContent, @@ -26,7 +27,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Badge } from "@/components/ui/badge"; import { Alert, AlertDescription } from "@/components/ui/alert"; import type { SpendingAnalytics } from "@/lib/types/api"; @@ -97,13 +97,6 @@ export default function AnalyticsPage() { ? (spending.total_cost / spending.total_views) * 1000 : null; - // Selection info text - const selectionText = allProjectsSelected - ? "Все проекты" - : selectedProjects.length === 1 - ? selectedProjects[0].title - : `${selectedProjects.length} проекта`; - return ( <>
- - {selectionText} - +
{selectedProjects.length > 1 && !allProjectsSelected && ( diff --git a/app/dashboard/[workspaceId]/analytics/spending/page.tsx b/app/dashboard/[workspaceId]/analytics/spending/page.tsx index 3ea8824..90f052f 100644 --- a/app/dashboard/[workspaceId]/analytics/spending/page.tsx +++ b/app/dashboard/[workspaceId]/analytics/spending/page.tsx @@ -20,6 +20,7 @@ import { import { DashboardHeader } from "@/components/layout/dashboard-header"; import { useWorkspace } from "@/components/providers/workspace-provider"; import { demoAwareAnalyticsApi } from "@/lib/demo"; +import { ProjectSelector } from "@/components/project-selector"; import { Card, CardContent, @@ -288,16 +289,19 @@ export default function SpendingAnalyticsPage() {

Динамика расходов

Анализ расходов по периодам

- +
+ + +
{loading ? ( diff --git a/app/dashboard/[workspaceId]/channels/page.tsx b/app/dashboard/[workspaceId]/channels/page.tsx index 82985e0..92ba86c 100644 --- a/app/dashboard/[workspaceId]/channels/page.tsx +++ b/app/dashboard/[workspaceId]/channels/page.tsx @@ -168,7 +168,6 @@ export default function ChannelsCatalogPage() { { label: "Главная", href: `/dashboard/${workspaceId}` }, { label: "Каталог каналов" }, ]} - showProjectSelector={false} />
diff --git a/app/dashboard/[workspaceId]/creatives/page.tsx b/app/dashboard/[workspaceId]/creatives/page.tsx index 4b044bf..da6c4f2 100644 --- a/app/dashboard/[workspaceId]/creatives/page.tsx +++ b/app/dashboard/[workspaceId]/creatives/page.tsx @@ -71,6 +71,7 @@ import { DialogTitle, } from "@/components/ui/dialog"; import { BOT_USERNAME } from "@/lib/utils/constants"; +import { ProjectSelector } from "@/components/project-selector"; import type { Creative, CreativeAnalyticsItem } from "@/lib/types/api"; // ============================================================================ @@ -287,6 +288,7 @@ export default function CreativesPage() { className="pl-10" />
+
Статистика за период

{dateRangeLabel}

- +
+ +
{/* Строка 1 — компактные показатели */} diff --git a/app/dashboard/[workspaceId]/placements/page.tsx b/app/dashboard/[workspaceId]/placements/page.tsx index 56e8be0..d012005 100644 --- a/app/dashboard/[workspaceId]/placements/page.tsx +++ b/app/dashboard/[workspaceId]/placements/page.tsx @@ -55,6 +55,7 @@ import { } from "@/components/ui/tooltip"; import { Checkbox } from "@/components/ui/checkbox"; import { Label } from "@/components/ui/label"; +import { ProjectSelector } from "@/components/project-selector"; import type { Placement } from "@/lib/types/api"; // ============================================================================ @@ -498,6 +499,7 @@ export default function PlacementsPage() { className="pl-10" /> +
diff --git a/app/dashboard/[workspaceId]/purchase-plans/[projectId]/page.tsx b/app/dashboard/[workspaceId]/purchase-plans/[projectId]/page.tsx index d1459b0..9a6e55d 100644 --- a/app/dashboard/[workspaceId]/purchase-plans/[projectId]/page.tsx +++ b/app/dashboard/[workspaceId]/purchase-plans/[projectId]/page.tsx @@ -329,7 +329,7 @@ export default function PurchasePlanDetailPage() { if (loading) { return ( <> - +
@@ -345,7 +345,6 @@ export default function PurchasePlanDetailPage() { { label: "Планы закупок", href: `/dashboard/${workspaceId}/purchase-plans` }, { label: project?.title || "План закупок" }, ]} - showProjectSelector={false} />
diff --git a/app/dashboard/[workspaceId]/purchase-plans/page.tsx b/app/dashboard/[workspaceId]/purchase-plans/page.tsx index 896b925..d9e197a 100644 --- a/app/dashboard/[workspaceId]/purchase-plans/page.tsx +++ b/app/dashboard/[workspaceId]/purchase-plans/page.tsx @@ -118,7 +118,6 @@ export default function PurchasePlansPage() { { label: "Главная", href: `/dashboard/${workspaceId}` }, { label: "Планы закупок" }, ]} - showProjectSelector={false} />
diff --git a/app/dashboard/[workspaceId]/settings/invites/page.tsx b/app/dashboard/[workspaceId]/settings/invites/page.tsx index 063e42f..2ce2ac9 100644 --- a/app/dashboard/[workspaceId]/settings/invites/page.tsx +++ b/app/dashboard/[workspaceId]/settings/invites/page.tsx @@ -132,7 +132,6 @@ export default function InvitesPage() { { label: "Настройки", href: `/dashboard/${workspaceId}/settings` }, { label: "Приглашения" }, ]} - showProjectSelector={false} />
diff --git a/app/dashboard/[workspaceId]/settings/members/page.tsx b/app/dashboard/[workspaceId]/settings/members/page.tsx index 5cb3184..c2bd0cd 100644 --- a/app/dashboard/[workspaceId]/settings/members/page.tsx +++ b/app/dashboard/[workspaceId]/settings/members/page.tsx @@ -136,7 +136,6 @@ export default function MembersPage() { { label: "Настройки", href: `/dashboard/${workspaceId}/settings` }, { label: "Участники" }, ]} - showProjectSelector={false} />
diff --git a/app/dashboard/[workspaceId]/settings/page.tsx b/app/dashboard/[workspaceId]/settings/page.tsx index 7be2ff5..e0bbe04 100644 --- a/app/dashboard/[workspaceId]/settings/page.tsx +++ b/app/dashboard/[workspaceId]/settings/page.tsx @@ -86,7 +86,6 @@ export default function SettingsPage() { { label: "Главная", href: `/dashboard/${workspaceId}` }, { label: "Настройки" }, ]} - showProjectSelector={false} />
diff --git a/components/layout/dashboard-header.tsx b/components/layout/dashboard-header.tsx index ee6cb57..d50ceb7 100644 --- a/components/layout/dashboard-header.tsx +++ b/components/layout/dashboard-header.tsx @@ -15,7 +15,6 @@ import { BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; import { ThemeToggle } from "@/components/theme-toggle"; -import { ProjectSelector } from "@/components/project-selector"; import React from "react"; interface BreadcrumbItemType { @@ -25,12 +24,10 @@ interface BreadcrumbItemType { interface DashboardHeaderProps { breadcrumbs?: BreadcrumbItemType[]; - showProjectSelector?: boolean; } export const DashboardHeader: React.FC = ({ breadcrumbs = [], - showProjectSelector = true, }) => { return (
@@ -55,7 +52,6 @@ export const DashboardHeader: React.FC = ({ )}
- {showProjectSelector && }