From 129907fcc677f636ca78a7fe067cddec9135841f Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Thu, 18 Dec 2025 06:45:26 -0600 Subject: [PATCH] fix(dashboard): make student dashboard responsive for small screens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Tabs stack vertically on mobile (icon above label) instead of hiding labels - Summary cards use 2x2 grid on mobile, 4x1 on tablet+ - Skill card grids use smaller min-width on mobile (120px vs 140px) - Reduced padding throughout on mobile screens - Section headers and buttons stack vertically on mobile - History and Notes tabs use responsive padding and font sizes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../[studentId]/dashboard/DashboardClient.tsx | 99 ++++++++++++------- 1 file changed, 62 insertions(+), 37 deletions(-) diff --git a/apps/web/src/app/practice/[studentId]/dashboard/DashboardClient.tsx b/apps/web/src/app/practice/[studentId]/dashboard/DashboardClient.tsx index 834944c5..67bc6df8 100644 --- a/apps/web/src/app/practice/[studentId]/dashboard/DashboardClient.tsx +++ b/apps/web/src/app/practice/[studentId]/dashboard/DashboardClient.tsx @@ -291,7 +291,7 @@ function TabNavigation({ padding: '0.25rem', backgroundColor: isDark ? 'gray.800' : 'gray.100', borderRadius: '10px', - marginBottom: '1.5rem', + marginBottom: { base: '1rem', md: '1.5rem' }, })} > {tabs.map((tab) => ( @@ -304,11 +304,12 @@ function TabNavigation({ className={css({ flex: 1, display: 'flex', + flexDirection: { base: 'column', sm: 'row' }, alignItems: 'center', justifyContent: 'center', - gap: '0.5rem', - padding: '0.75rem 1rem', - fontSize: '0.875rem', + gap: { base: '0.125rem', sm: '0.5rem' }, + padding: { base: '0.5rem 0.25rem', sm: '0.75rem 1rem' }, + fontSize: { base: '0.6875rem', sm: '0.875rem' }, fontWeight: 'medium', borderRadius: '8px', border: 'none', @@ -336,7 +337,7 @@ function TabNavigation({ }, })} > - {tab.icon} + {tab.icon} {tab.label} ))} @@ -1020,12 +1021,19 @@ function SkillsTab({
-

+

{practicingSkills.length} skills in practice • Click any skill for details