Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

Commit f390be3

Browse files
committed
refactor(admin): dashboard block spacing & stats grid hairline
Move dashboard section spacing from root gap-6 to per-block mt-6 so each block owns its own rhythm. Soften the stats grid hairline color and pad the trailing empty tracks with panel-bg spacers to avoid the dark color patch on incomplete rows.
1 parent 23fdf24 commit f390be3

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

apps/admin/src/features/dashboard/components/DashboardRouteViewContent.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ export function DashboardRouteViewContent() {
245245
return (
246246
<Scroll
247247
className="h-full min-h-0 bg-white dark:bg-neutral-950"
248-
innerClassName="flex flex-col gap-6 p-4"
248+
innerClassName="flex flex-col p-4"
249249
>
250250
<div className="flex flex-wrap items-end justify-between gap-3">
251251
<div>
@@ -270,7 +270,7 @@ export function DashboardRouteViewContent() {
270270
</Button>
271271
</div>
272272

273-
<section className="grid gap-3 md:grid-cols-3">
273+
<section className="mt-6 grid gap-3 md:grid-cols-3">
274274
<LiveCard
275275
icon={Radio}
276276
label={t('dashboard.live.online')}
@@ -290,6 +290,7 @@ export function DashboardRouteViewContent() {
290290
</section>
291291

292292
<Panel
293+
className="mt-6"
293294
description={t('dashboard.panel.quickActions.updatedAt', {
294295
time: updatedAt.toLocaleTimeString(),
295296
})}
@@ -331,8 +332,8 @@ export function DashboardRouteViewContent() {
331332
</div>
332333
</Panel>
333334

334-
<Panel title={t('dashboard.panel.stats.title')}>
335-
<div className="grid gap-px bg-neutral-200 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-6 dark:bg-neutral-800">
335+
<Panel className="mt-6" title={t('dashboard.panel.stats.title')}>
336+
<div className="grid gap-px bg-neutral-100 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-6 dark:bg-neutral-800">
336337
<StatCell
337338
icon={File}
338339
label={t('dashboard.stat.pages')}
@@ -407,10 +408,17 @@ export function DashboardRouteViewContent() {
407408
onClick={() => navigate('/analyze')}
408409
value={stat.uv}
409410
/>
411+
{Array.from({ length: 5 }).map((_, i) => (
412+
<div
413+
aria-hidden="true"
414+
className="bg-white dark:bg-neutral-950"
415+
key={`stat-spacer-${i}`}
416+
/>
417+
))}
410418
</div>
411419
</Panel>
412420

413-
<section className="grid gap-4 xl:grid-cols-2">
421+
<section className="mt-6 grid gap-4 xl:grid-cols-2">
414422
<BarPanel
415423
items={(trendQuery.data ?? []).map((item) => ({
416424
label: item.date,
@@ -437,7 +445,7 @@ export function DashboardRouteViewContent() {
437445
<TagCloudPanel tags={tagsQuery.data ?? []} />
438446
</section>
439447

440-
<Panel title={t('dashboard.panel.maintenance.title')}>
448+
<Panel className="mt-6" title={t('dashboard.panel.maintenance.title')}>
441449
<div className="grid gap-px bg-neutral-200 sm:grid-cols-2 xl:grid-cols-3 dark:bg-neutral-800">
442450
<MaintenanceCard
443451
disabled={cleanCacheMutation.isPending}

apps/admin/src/features/dashboard/components/OwnerLoginStat.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function OwnerLoginStat(props: {
1313
if (!props.lastLoginIp && !props.lastLoginTime) return null
1414

1515
return (
16-
<div className="grid gap-2 border-t border-neutral-100 pt-4 text-sm text-neutral-500 sm:grid-cols-2 dark:border-neutral-800 dark:text-neutral-400">
16+
<div className="grid gap-2 border-t border-neutral-100 py-4 text-sm text-neutral-500 sm:grid-cols-2 dark:border-neutral-800 dark:text-neutral-400">
1717
<div className="inline-flex min-w-0 items-center gap-2">
1818
<Shield
1919
aria-hidden="true"

0 commit comments

Comments
 (0)