Skip to content

fix(mobile): polish nav, dashboard, and accessibility#113

Merged
ChitkulLakshya merged 3 commits into
designfrom
mobile
Apr 21, 2026
Merged

fix(mobile): polish nav, dashboard, and accessibility#113
ChitkulLakshya merged 3 commits into
designfrom
mobile

Conversation

@ChitkulLakshya
Copy link
Copy Markdown
Collaborator

Summary

  • add a dedicated mobile dashboard view and route Home tab to the mobile-safe layout to prevent horizontal overflow
  • improve mobile activity UX with user profile summary, team member drill-down stats, and cleaner time formatting (hide 0h)
  • fix mobile navigation and accessibility by auto-closing the drawer on page selection and adding missing dialog/sheet title+description metadata

Test plan

  • Open app in mobile viewport and verify Home no longer slides horizontally
  • Open side drawer, tap any menu item, and confirm drawer closes after navigation
  • Open Activity tab and verify profile summary + member expand/collapse stats render correctly
  • Confirm settings top tabs can be swiped horizontally on mobile
  • Verify console no longer shows DialogContent/SheetContent accessibility warnings

Chitkul Lakshya added 3 commits April 21, 2026 12:46
Route mobile users through a new src/mobile/pages structure and add a mobile-first home page while preserving existing desktop pages.

Made-with: Cursor
Render a real mobile activity log experience with live session/task data and replace the bottom Profile tab with Settings for better navigation consistency.

Made-with: Cursor
Improve mobile UX by adding a dedicated dashboard layout, closing drawer on navigation, refining activity summaries/member drilldown, and adding missing dialog metadata to remove accessibility warnings.

Made-with: Cursor
Copilot AI review requested due to automatic review settings April 21, 2026 08:01
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 21, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
zync Ready Ready Preview, Comment Apr 21, 2026 8:01am

@ChitkulLakshya ChitkulLakshya merged commit 246da28 into design Apr 21, 2026
6 checks passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves the mobile experience by introducing mobile-specific routes/pages, adding mobile-optimized dashboard and activity views, and addressing navigation + accessibility issues in dialogs/sheets.

Changes:

  • Add mobile routing in App.tsx plus new src/mobile/pages/* entrypoints (including a dedicated IndexMobile landing page).
  • Replace mobile Home/Activity content with new MobileDashboardView and MobileActivityLogView, including improved time formatting (hide 0h).
  • Improve mobile navigation + accessibility (auto-close drawer on selection; add Dialog/Sheet title/description metadata; make Settings tabs horizontally scrollable on small screens).

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/mobile/pages/WelcomeToZyncMobile.tsx Mobile route wrapper for Welcome page.
src/mobile/pages/TermsMobile.tsx Mobile route wrapper for Terms page.
src/mobile/pages/SignupMobile.tsx Mobile route wrapper for Signup page.
src/mobile/pages/ProjectDetailsMobile.tsx Mobile route wrapper for Project Details page.
src/mobile/pages/PrivacyPolicyMobile.tsx Mobile route wrapper for Privacy Policy page.
src/mobile/pages/PrivacyMobile.tsx Mobile route wrapper for Privacy page.
src/mobile/pages/NotFoundMobile.tsx Mobile route wrapper for 404 page.
src/mobile/pages/NewProjectMobile.tsx Mobile route wrapper for New Project page.
src/mobile/pages/LoginMobile.tsx Mobile route wrapper for Login page.
src/mobile/pages/IndexMobile.tsx New mobile-first landing page layout.
src/mobile/pages/DashboardMobile.tsx Mobile route wrapper for Dashboard page.
src/lib/firebase.ts Removes dev-only App Check “skipped” console info message.
src/components/views/mobile/MobileDashboardView.tsx New mobile dashboard UI (profile summary, GitHub contributions graph, project/task counts).
src/components/views/mobile/MobileActivityLogView.tsx New mobile activity log UI (profile summary, team drill-down, cleaner time labels).
src/components/views/SettingsView.tsx Makes Settings tabs horizontally scrollable on mobile; adjusts padding.
src/components/views/MobileView.tsx Uses new mobile dashboard/activity views; adds activity polling + session timing state.
src/components/views/ActivityLogView.tsx Centralizes time formatting to hide 0h for various metrics.
src/components/ui/command.tsx Adds hidden dialog title/description for accessibility compliance.
src/components/layout/MobileLayout.tsx Auto-closes drawer on selection; adds hidden sheet title/description; adjusts bottom-nav items.
src/components/ProfilePhotoCropper.tsx Adds dialog description metadata for accessibility.
src/App.tsx Routes swap between mobile vs desktop pages using useIsMobile().
Comments suppressed due to low confidence (1)

src/components/layout/MobileLayout.tsx:45

  • isMainTab is computed but never used, which will trigger the unused-vars lint rule. Either use it (e.g., to conditionally render the bottom nav) or remove it.

    const isMainTab = navItems.some(item => item.id === activeTab);


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +337 to +345
<Button
size="icon"
variant="ghost"
className="h-7 w-7 text-destructive"
onClick={() => onDeleteLog(log._id)}
>
<Trash2 className="h-3.5 w-3.5" />
</Button>
)}
Comment thread src/App.tsx
Comment on lines +71 to +75
<Route path="/" element={isMobile ? <IndexMobile /> : <Index />} />
<Route path="/login" element={isMobile ? <LoginMobile /> : <Login />} />
<Route path="/signup" element={isMobile ? <SignupMobile /> : <Signup />} />
<Route path="/welcome" element={isMobile ? <WelcomeToZyncMobile /> : <WelcomeToZync />} />
<Route path="/dashboard" element={isMobile ? <DashboardMobile /> : <Dashboard />} />
Comment on lines +18 to +40
const currentYear = new Date().getFullYear();
const { data: contributions = [] } = useGitHubContributions(currentYear, !!currentUser);

const contributionMap = contributions.reduce((acc, c) => {
acc[c.date] = c.count;
return acc;
}, {} as Record<string, number>);

const maxCount = Math.max(...contributions.map((c) => c.count), 1);
const yearStart = new Date(currentYear, 0, 1);
const yearEnd = new Date(currentYear, 11, 31);
const days = eachDayOfInterval({ start: yearStart, end: yearEnd });
const graphData = days.map((date) => {
const dateStr = formatISO(date, { representation: "date" });
const count = contributionMap[dateStr] || 0;
const level = count === 0 ? 0 : Math.ceil((count / maxCount) * 4);
return { date: dateStr, count, level: Math.min(level, 4) };
});

const totalTasks = projects.reduce((sum, project: any) => {
const steps = project.steps || [];
return sum + steps.reduce((stepSum: number, step: any) => stepSum + (step.tasks?.length || 0), 0);
}, 0);
Comment on lines +327 to +334
return (
<div key={logKey} className="rounded-lg border border-border/60 p-3 flex items-start gap-2">
<Clock3 className="h-4 w-4 text-primary mt-0.5" />
<div className="min-w-0 flex-1">
<p className="text-sm font-medium truncate">{title}</p>
<p className="text-[11px] text-muted-foreground">
{formatDistanceToNow(start, { addSuffix: true })}
</p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants