feat: Comprehensive UI/UX Overhaul & Premium Design System Refresh#218
feat: Comprehensive UI/UX Overhaul & Premium Design System Refresh#218dhaanisi wants to merge 3 commits into
Conversation
…nd improved theme styling
❌ Deploy Preview for github-spy failed.
|
|
Caution Review failedFailed to post review comments 📝 WalkthroughWalkthroughThis PR implements a comprehensive design refresh by introducing a custom dark color palette in Tailwind configuration, adding animation utilities and CSS helper classes, redesigning core components with framer-motion animations, and updating styling across the application to use the new theme system consistently. ChangesDesign Refresh with Custom Dark Theme and Animations
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🎉 Thank you @dhaanisi for your contribution. Please make sure your PR follows https://github.com/GitMetricsLab/github_tracker/blob/main/CONTRIBUTING.md#-pull-request-guidelines
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (3)
src/components/Footer.tsx (1)
6-25: ⚡ Quick winComplete the dark-border token migration in Footer.
The inner divider still uses
dark:border-gray-800; switching it todark:border-dark-borderkeeps the footer visually consistent with the refreshed design system.Proposed patch
- <div className="p-2 border-t border-gray-200 dark:border-gray-800 text-center text-gray-600 dark:text-gray-400"> + <div className="p-2 border-t border-gray-200 dark:border-dark-border text-center text-gray-600 dark:text-gray-400">🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/Footer.tsx` around lines 6 - 25, The inner divider in the Footer component still uses the old token dark:border-gray-800; update the divider div (the element with class "p-2 border-t border-gray-200 dark:border-gray-800 text-center ...") to use dark:border-dark-border so it matches the refreshed design system; modify that class string inside the Footer component (Footer or default export in src/components/Footer.tsx) to replace dark:border-gray-800 with dark:border-dark-border.src/components/Hero.tsx (1)
68-75: ⚡ Quick winConsider using local placeholder images instead of external service.
The
pravatar.ccservice introduces an external dependency that could impact reliability and privacy. For production, consider using local placeholder images or a self-hosted avatar service.Alternative approach
You could:
- Add placeholder avatar images to your
/publicfolder- Use a pattern like
src={/avatars/placeholder-${i}.jpg}- Or use a single placeholder with different CSS transformations
This eliminates the external dependency and improves load reliability.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/Hero.tsx` around lines 68 - 75, Replace the external pravatar.cc avatars in the map rendering inside the Hero component with local placeholders: stop using src={`https://i.pravatar.cc/100?u=${i + 10}`} in the <img> elements and point src to files in your public assets (e.g., `/avatars/placeholder-${i}.jpg` or a single `/avatars/placeholder.jpg`) and update any alt/title text as needed; ensure the files are added to the public folder and the <img> rendering logic in the map callback (the anonymous function mapping [1,2,3,4]) references the chosen local path or CSS-based variant so the component no longer depends on the external pravatar service.src/components/HowItWorks.tsx (1)
62-64: 💤 Low valueConsider using CSS variables for the connector line calculations.
The connector line uses magic numbers (60px, 120px) that are tightly coupled to the icon size (w-20/h-20). If the icon dimensions change, the line positioning will break. Consider extracting these as CSS custom properties or using a more maintainable approach.
♻️ Suggested approach with CSS variables
You could define the icon size as a custom property and derive the connector positions from it, making the relationship explicit and easier to maintain.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/HowItWorks.tsx` around lines 62 - 64, The connector line uses hard-coded offsets (left: calc(50% + 60px), width: calc(100% - 120px)) tied to the icon size; change this to derive values from a CSS custom property by introducing an icon-size variable (e.g., --icon-size) applied to the icon container (currently using w-20 h-20) and then update the connector div (the conditional div rendered when index < steps.length - 1) to use calc() expressions with var(--icon-size) (for example calc(50% + var(--icon-size) / 2) and calc(100% - var(--icon-size))) so the connector stays correct if the icon dimensions change.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/components/Hero.tsx`:
- Around line 8-10: The two decorative background glow divs in the Hero
component (the elements with className "bg-glow top-[-10%]..." and "bg-glow
bottom-[-10%]...") should be hidden from assistive tech; add aria-hidden="true"
to both of those <div> elements (you may also add role="presentation" if
desired) so screen readers ignore these purely decorative elements.
In `@src/components/Navbar.tsx`:
- Around line 69-78: In the Navbar component, update the hamburger <button> (the
one using setIsOpen and reading isOpen) to include accessible attributes: add
aria-expanded={isOpen} and an appropriate aria-label that reflects action/state
(e.g., aria-label={isOpen ? "Close navigation menu" : "Open navigation menu"});
if the mobile menu has an id, also add aria-controls="your-mobile-menu-id" to
the same button so screen readers can map the control to the menu.
- Around line 63-68: The mobile theme toggle button (the element with
onClick={toggleTheme} that renders Sun/Moon based on mode) is missing an
aria-label; add aria-label="Toggle theme" to that button to match the desktop
toggle and ensure consistent accessibility for assistive technologies.
---
Nitpick comments:
In `@src/components/Footer.tsx`:
- Around line 6-25: The inner divider in the Footer component still uses the old
token dark:border-gray-800; update the divider div (the element with class "p-2
border-t border-gray-200 dark:border-gray-800 text-center ...") to use
dark:border-dark-border so it matches the refreshed design system; modify that
class string inside the Footer component (Footer or default export in
src/components/Footer.tsx) to replace dark:border-gray-800 with
dark:border-dark-border.
In `@src/components/Hero.tsx`:
- Around line 68-75: Replace the external pravatar.cc avatars in the map
rendering inside the Hero component with local placeholders: stop using
src={`https://i.pravatar.cc/100?u=${i + 10}`} in the <img> elements and point
src to files in your public assets (e.g., `/avatars/placeholder-${i}.jpg` or a
single `/avatars/placeholder.jpg`) and update any alt/title text as needed;
ensure the files are added to the public folder and the <img> rendering logic in
the map callback (the anonymous function mapping [1,2,3,4]) references the
chosen local path or CSS-based variant so the component no longer depends on the
external pravatar service.
In `@src/components/HowItWorks.tsx`:
- Around line 62-64: The connector line uses hard-coded offsets (left: calc(50%
+ 60px), width: calc(100% - 120px)) tied to the icon size; change this to derive
values from a CSS custom property by introducing an icon-size variable (e.g.,
--icon-size) applied to the icon container (currently using w-20 h-20) and then
update the connector div (the conditional div rendered when index < steps.length
- 1) to use calc() expressions with var(--icon-size) (for example calc(50% +
var(--icon-size) / 2) and calc(100% - var(--icon-size))) so the connector stays
correct if the icon dimensions change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e04b3e8d-5e60-4ddd-b612-59b74c66fbc7
📒 Files selected for processing (11)
src/App.tsxsrc/components/Features.tsxsrc/components/Footer.tsxsrc/components/Hero.tsxsrc/components/HowItWorks.tsxsrc/components/Navbar.tsxsrc/index.csssrc/pages/About/About.tsxsrc/pages/ContributorProfile/ContributorProfile.tsxsrc/pages/Contributors/Contributors.tsxtailwind.config.js
|
Hey! |
|
@dhaanisi - navbar color on dark mode looks too light, make it dark |
|
@dhaanisi : resolve conflicts |
|
Hey @mehul-m-prajapati! I have resolved the merge conflicts |
Related Issue
Description
This PR implements a comprehensive UI/UX overhaul of the GitHub Tracker landing page. The goal was to transition the current interface into a premium, high-quality design system using modern frontend practices.
Key Improvements:
How Has This Been Tested?
[x] Local Environment: Verified all animations and layout changes on a local development server.
[x] Responsiveness: Tested across multiple breakpoints (Mobile, Tablet, Desktop) using Chrome DevTools.
[x] Syntax: Fixed a pre-existing syntax error in the Navbar component that was causing layout shifts.
[x] Performance: Ensured background animations do not cause frame drops.
Screenshots (if applicable)
Type of Change
Summary by CodeRabbit
New Features
Style