diff --git a/apps/web/src/components/page-header.tsx b/apps/web/src/components/page-header.tsx index bb3674c..67b397d 100644 --- a/apps/web/src/components/page-header.tsx +++ b/apps/web/src/components/page-header.tsx @@ -6,11 +6,11 @@ interface PageHeaderProps { actions?: ReactNode } -/** Page-level section header — etalon EvoBGP. */ +/** Page-level section header — etalon EvoBGP / Domains list. */ export function PageHeader({ title, description, actions }: PageHeaderProps) { return (
-
+

{title}

{description ? (

{description}

diff --git a/apps/web/src/components/reui-kit/dashboard-analytics.tsx b/apps/web/src/components/reui-kit/dashboard-analytics.tsx index 1181c58..430d83d 100644 --- a/apps/web/src/components/reui-kit/dashboard-analytics.tsx +++ b/apps/web/src/components/reui-kit/dashboard-analytics.tsx @@ -2,6 +2,7 @@ import { useMemo, useEffect, useRef } from 'react' import { Bar, BarChart, CartesianGrid, Cell, Pie, PieChart, XAxis } from 'recharts' import { StatusBadge } from '@/components/status-badge' +import { EmptyState } from '@/components/empty-state' import { Frame, FrameDescription, @@ -85,9 +86,15 @@ export function CertStatusChart({ data }: CertStatusChartProps) { Статусы сертификатов Распределение по последней проверке - + {data.length === 0 ? ( -

Нет данных о сертификатах

+
+ +
) : (
Домены по группам Топ-6 групп по количеству зон - + {data.length === 0 ? ( -

Нет групп с доменами

+
+ +
) : (
-
- - -
@@ -44,8 +38,6 @@ function OpsDashboardSkeleton() { } export function OpsDashboard({ - title = 'Панель управления', - description = 'Обзор доменов, групп, сервисов и сертификатов Cloudflare', kpiCards, afterKpi, charts, @@ -58,8 +50,6 @@ export function OpsDashboard({ return (
- -
diff --git a/apps/web/src/routes/_auth/index.tsx b/apps/web/src/routes/_auth/index.tsx index 104d126..53a5fac 100644 --- a/apps/web/src/routes/_auth/index.tsx +++ b/apps/web/src/routes/_auth/index.tsx @@ -18,6 +18,8 @@ import { serviceGroupsQueryOptions, } from '@/queries' import { PageShell } from '@/components/page-shell' +import { PageHeader } from '@/components/page-header' +import { EmptyState } from '@/components/empty-state' import { CertStatusChart, GroupDomainsChart, @@ -276,6 +278,10 @@ function DashboardPage() { return ( + {attentionServices.length === 0 ? ( -

- Нет сервисов со статусом Down или Slow -

+
+ +
) : ( {attentionServices.map((service) => ( @@ -356,9 +367,14 @@ function DashboardPage() { ) : null}
{expiringCerts.length === 0 ? ( -

- В пределах 14 дней истечений нет -

+
+ +
) : ( {expiringCerts.map(({ cert, ts }) => ( @@ -391,7 +407,14 @@ function DashboardPage() { ) : null}
{ungroupedDomains.length === 0 ? ( -

Все домены в группах

+
+ +
) : ( {ungroupedDomains.map((domain) => (