Skip to content

fix: polish mobile responsive layout#1340

Open
TUPM96 wants to merge 1 commit into
SolFoundry:mainfrom
TUPM96:feat/bounty-833-mobile-polish
Open

fix: polish mobile responsive layout#1340
TUPM96 wants to merge 1 commit into
SolFoundry:mainfrom
TUPM96:feat/bounty-833-mobile-polish

Conversation

@TUPM96
Copy link
Copy Markdown

@TUPM96 TUPM96 commented May 26, 2026

Closes #833

Summary

  • Polish mobile bounty cards so repo metadata, skills, reward, PR count, deadline, and status wrap cleanly instead of overlapping.
  • Improve the bounties page header, status select, filter pills, and duplicated top spacing for 375px and 768px layouts.
  • Make the hero terminal readable on narrow screens with a shorter mobile command, stacked CTAs, and wrapped stats.
  • Harden the mobile navbar with accessible hamburger attributes, route-close behavior, and body scroll lock while the menu is open.
  • Restore tracked frontend shared helpers needed by the existing app imports and build.

Verification

  • git diff --check
  • npm run test -- mobile-responsive-polish.test.tsx
  • npm run build

Wallet

  • Not included by automation; contributor should add their Solana wallet address before payout.

Copilot AI review requested due to automatic review settings May 26, 2026 01:58
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

Note

Copilot was unable to run its full agentic suite in this review.

This PR improves mobile responsiveness and UI polish across the frontend, focusing on preventing horizontal overflow and making navigation/cards behave better on small screens.

Changes:

  • Refined mobile layouts for Hero, Bounty grid/cards, and Navbar (spacing, wrapping, truncation, mobile menu behavior).
  • Added shared UI helpers (utils.ts) and reusable Framer Motion variant definitions (animations.ts).
  • Introduced global CSS rules and a new test to validate mobile polish and navbar accessibility/scroll locking.

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
frontend/src/pages/BountiesPage.tsx Adjusts top padding for the bounties page container.
frontend/src/lib/utils.ts Adds formatting helpers (currency, relative time, deadline time-left) and language color mapping.
frontend/src/lib/animations.ts Adds shared Framer Motion variants for consistent UI animation.
frontend/src/index.css Adds global overflow prevention and utility styles (no-scrollbar, media max-width).
frontend/src/components/layout/Navbar.tsx Improves mobile menu accessibility, closes menus on route change, and locks body scroll when open.
frontend/src/components/home/HeroSection.tsx Adjusts hero sizing/typography and improves small-screen wrapping and button layout.
frontend/src/components/bounty/BountyGrid.tsx Improves mobile filter/header layout and makes filter pills horizontally scrollable.
frontend/src/components/bounty/BountyCard.tsx Improves small-screen layout (wrapping, truncation) and moves status badge into normal flow.
frontend/src/tests/mobile-responsive-polish.test.tsx Adds regression coverage for mobile card layout and navbar menu a11y + scroll lock.
.gitignore Un-ignores frontend/src/lib so newly added shared libs are tracked.
Comments suppressed due to low confidence (1)

frontend/src/index.css:1

  • Globally forcing overflow-x: hidden on html, body, and #root can mask layout bugs and can make legitimately overflowing content unreachable (e.g., wide code blocks, tables, devtools-like UI). Prefer fixing the specific element(s) causing overflow, or scope overflow clipping to a responsible layout wrapper. If the goal is only to prevent tiny sub-pixel overflow, consider more targeted CSS (and avoid redundant max-width: 100% on these root elements unless there’s a demonstrated need).
@import "tailwindcss";

animate="animate"
exit="exit"
className="pt-16"
className="pt-0"
Comment thread frontend/src/lib/utils.ts
Comment on lines +37 to +47
const deltaSeconds = Math.max(0, Math.floor((Date.now() - date.getTime()) / 1000));
if (deltaSeconds < 30) return 'just now';

for (const unit of RELATIVE_TIME_UNITS) {
const value = Math.floor(deltaSeconds / unit.seconds);
if (value >= 1) {
return `${value} ${unit.label}${value === 1 ? '' : 's'} ago`;
}
}

return 'just now';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

missing-wallet PR is missing a Solana wallet for bounty payout

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🏭 Bounty T1: Mobile Responsive Polish

2 participants