Skip to content

T1 Bounty: Footer component with links + socials (#478)#774

Closed
davidweb3-ctrl wants to merge 10 commits intoSolFoundry:mainfrom
davidweb3-ctrl:feature/footer-478
Closed

T1 Bounty: Footer component with links + socials (#478)#774
davidweb3-ctrl wants to merge 10 commits intoSolFoundry:mainfrom
davidweb3-ctrl:feature/footer-478

Conversation

@davidweb3-ctrl
Copy link
Contributor

Closes #478

Summary

Enhanced site footer with comprehensive navigation, social links, and SolFoundry branding.

Changes

  • 4 Footer Sections:

    • About: How It Works, Leaderboard, Agents
    • Resources: Bounties, Documentation, GitHub
    • Community: X/Twitter, Discord, Website
    • Legal: Terms of Service, Privacy Policy
  • Social Media Icons:

    • X/Twitter (@SolFoundry)
    • GitHub (SolFoundry/solfoundry)
    • Discord
  • Features:

    • Responsive grid layout (stacks on mobile, 4-column on desktop)
    • Dark/light theme support
    • token contract address with copy-to-clipboard
    • Copyright notice with dynamic current year
    • Accessible with proper ARIA labels
  • Design:

    • Matches SolFoundry dark theme
    • Consistent with existing design system
    • Professional footer layout

Wallet: EDFxPF6yAQNod3nFzwV7z1qwSjt42WDYzmdT6b6YHDh7

Bounty

- Create reusable TimeAgo component with auto-update
- Add comprehensive test suite
- Apply to bounty cards, list view, timeline, and activity feed
- Supports multiple formats: just now, Xm ago, Xh ago, Xd ago, date
- Includes tooltip with full datetime on hover
- Fix 7-day boundary logic (< 7 to <= 7)
- Add invalid date handling with safe fallbacks
- Fix test expectations for 60-minute boundary
- Add tests for invalid date inputs

Fixes critical issues from multi-LLM review (score: 6.4/10)
- Fix 'just now' test with deterministic timing
- Add act() wrapper for auto-update test
- Import act from testing-library/react
- Consistent with BountyCard.tsx handling
- Shows '-' when createdAt is undefined
- Addresses CodeRabbit review feedback
- Verifies that TimeAgo does not set interval for old dates
- Complements existing auto-update test for recent dates
- Addresses CodeRabbit review feedback
- Add UTC timezone for deterministic date formatting
- Add comprehensive invalid date handling tests
- Add setInterval spy tests for >7 days and invalid dates
- Fix component to skip interval for invalid dates
- Fix NaN handling in isValidDate

All 21 tests passing!
- Replace custom formatRelativeTime with TimeAgo component
- Maintains auto-update functionality via TimeAgo's built-in interval
- Add TimeAgo display for most recent PR submission timestamp
- Shows 'Last PR submitted' with relative time in profile stats
- Reusable CopyAddress component with clipboard functionality
- Visual feedback (checkmark icon for 2 seconds after copy)
- Truncated display with full address tooltip
- Accessible with keyboard support and screen reader announcements
- 13 comprehensive tests, all passing
- Integrated into ContributorProfile for wallet display
- Added 4 sections: About, Resources, Community, Legal
- Added social links: X/Twitter, GitHub, Discord with icons
- Added navigation links: Bounties, Leaderboard, How It Works, Docs
- Responsive grid layout (mobile stack, desktop grid)
- Dark/light theme support
- Token contract address with copy-to-clipboard
- Copyright notice with dynamic year
- Matches SolFoundry design system
@coderabbitai
Copy link

coderabbitai bot commented Mar 23, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: c300ecfc-3f62-4fa4-831d-dad04788ff9f

📥 Commits

Reviewing files that changed from the base of the PR and between 5a3017b and 8e23c06.

📒 Files selected for processing (12)
  • frontend/src/components/BountyDetailPage.tsx
  • frontend/src/components/BountyTimeline.tsx
  • frontend/src/components/ContributorProfile.tsx
  • frontend/src/components/activity/ActivityFeed.tsx
  • frontend/src/components/bounties/BountyCard.tsx
  • frontend/src/components/bounties/BountyListView.tsx
  • frontend/src/components/common/CopyAddress.tsx
  • frontend/src/components/common/TimeAgo.tsx
  • frontend/src/components/common/__tests__/CopyAddress.test.tsx
  • frontend/src/components/common/__tests__/TimeAgo.test.tsx
  • frontend/src/components/layout/Footer.tsx
  • frontend/src/components/layout/__tests__/Footer.test.tsx

📝 Walkthrough

Walkthrough

The PR introduces two new shared utility React components—TimeAgo for displaying relative timestamps and CopyAddress for rendering truncated addresses with clipboard functionality—along with comprehensive test coverage. It then refactors six existing components to use the new TimeAgo component instead of local date formatting logic. The Footer component undergoes a major restructure, replacing its simple layout with a multi-section grid footer containing About, Resources, Community, and Legal sections, social media icon links, and dynamic theme support.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

review-triggered

Suggested reviewers

  • chronoeth-creator

Important

Merge conflicts detected (Beta)

  • Resolve merge conflict in branch feature/footer-478
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant