Skip to content

Commit a661b46

Browse files
feat(mobile): kpi 2-col grid + tap feedback + chart height (PRD-6) (#185)
- dashboard/page.tsx: grid-cols-2 mobile, active:scale tap feedback, hover gated md:, responsive padding p-4 md:p-6 - dashboard-charts.tsx: barSize->maxBarSize (recharts 3), fixed-height container h-[200px] md:h-[300px] + ResponsiveContainer height=100% (CLS fix) - twMerge class order fix: pb-2 after p-4 (cubic P3) Skipped spec §5 recharts Legend layout — no Legend in dashboard-charts; useIsMobile SSR=false would cause hydration mismatch. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 3301f43 commit a661b46

2 files changed

Lines changed: 11 additions & 11 deletions

File tree

src/app/dashboard/page.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,25 @@ export default async function DashboardPage() {
5353
description="Bem-vindo ao centro de comando da Five Star Gym."
5454
/>
5555

56-
<div className="grid gap-6 md:grid-cols-2 lg:grid-cols-4">
56+
<div className="grid grid-cols-2 gap-3 sm:gap-4 md:gap-6 lg:grid-cols-4">
5757
{kpis.map((kpi) => (
5858
<Card
5959
key={kpi.title}
60-
className={`glass-card group overflow-hidden border-white/5 hover:border-primary/30 transition-all duration-500 hover:-translate-y-1 ${kpi.glow}`}
60+
className={`glass-card group overflow-hidden border-white/5 transition-all duration-200 active:scale-[0.98] md:hover:border-primary/30 md:duration-500 md:hover:-translate-y-1 ${kpi.glow}`}
6161
>
62-
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
62+
<CardHeader className="flex flex-row items-center justify-between space-y-0 p-4 pb-2 md:p-6">
6363
<CardTitle className="text-xs font-bold uppercase tracking-widest text-muted-foreground group-hover:text-foreground transition-colors">
6464
{kpi.title}
6565
</CardTitle>
6666
<div
67-
className={`p-2 rounded-lg bg-gradient-to-br ${kpi.color} ${kpi.iconColor} border border-white/5 group-hover:scale-110 transition-transform duration-300`}
67+
className={`p-2 rounded-lg bg-gradient-to-br ${kpi.color} ${kpi.iconColor} border border-white/5 md:group-hover:scale-110 transition-transform duration-300`}
6868
>
6969
{kpi.icon}
7070
</div>
7171
</CardHeader>
72-
<CardContent>
72+
<CardContent className="p-4 md:p-6">
7373
<div
74-
className={`text-3xl font-headline font-black tracking-tight drop-shadow-sm ${
74+
className={`text-2xl md:text-3xl font-headline font-black tracking-tight drop-shadow-sm ${
7575
kpi.isWeighted ? 'text-destructive-foreground/90' : 'text-foreground'
7676
}`}
7777
>
@@ -82,7 +82,7 @@ export default async function DashboardPage() {
8282

8383
{/* Subtle bottom glow line — reuses card gradient directly */}
8484
<div
85-
className={`absolute bottom-0 left-0 h-1 w-0 group-hover:w-full transition-all duration-700 bg-gradient-to-r ${kpi.color}`}
85+
className={`absolute bottom-0 left-0 h-1 w-0 md:group-hover:w-full transition-all duration-300 md:duration-700 bg-gradient-to-r ${kpi.color}`}
8686
></div>
8787
</Card>
8888
))}

src/components/dashboard/dashboard-charts.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ export function DashboardCharts({ data }: Readonly<DashboardChartsProps>) {
2020
Crescimento de Alunos (Últimos meses)
2121
</CardTitle>
2222
</CardHeader>
23-
<CardContent className="pt-6 pl-2 pb-2">
24-
<ResponsiveContainer width="100%" height={350}>
25-
<BarChart data={data}>
23+
<CardContent className="pt-6 pl-2 pb-2 h-[200px] md:h-[300px]">
24+
<ResponsiveContainer width="100%" height="100%">
25+
<BarChart data={data} maxBarSize={32}>
2626
<defs>
2727
<linearGradient id="neonCyan" x1="0" y1="0" x2="0" y2="1">
2828
<stop offset="0%" stopColor="oklch(0.7 0.25 190)" stopOpacity={0.9} />
@@ -68,7 +68,7 @@ export function DashboardCharts({ data }: Readonly<DashboardChartsProps>) {
6868
itemStyle={{ color: 'oklch(0.7 0.25 190)', fontSize: '14px' }}
6969
cursor={{ fill: 'oklch(0.7 0.25 190 / 0.03)' }}
7070
/>
71-
<Bar dataKey="alunos" fill="url(#neonCyan)" radius={[8, 8, 0, 0]} barSize={40} />
71+
<Bar dataKey="alunos" fill="url(#neonCyan)" radius={[8, 8, 0, 0]} />
7272
</BarChart>
7373
</ResponsiveContainer>
7474
</CardContent>

0 commit comments

Comments
 (0)