Skip to content

✨ Pull Request: Add Minimalistic Animated Footer (Footer2.jsx)#37

Open
SrinjoyeeDey wants to merge 2 commits intoAnmol-TheDev:mainfrom
SrinjoyeeDey:add-Footer2-component
Open

✨ Pull Request: Add Minimalistic Animated Footer (Footer2.jsx)#37
SrinjoyeeDey wants to merge 2 commits intoAnmol-TheDev:mainfrom
SrinjoyeeDey:add-Footer2-component

Conversation

@SrinjoyeeDey
Copy link

@SrinjoyeeDey SrinjoyeeDey commented Oct 5, 2025

📄 Description

This PR adds a new, animated, and minimalistic footer component named Footer2.jsx to the ParticleFX project.
The footer enhances the user experience, provides quick access to essential links, and improves the overall design and professionalism of the project.


🔧 Changes Made

🆕 Footer2.jsx

Created a new component Footer2.jsx that includes:

🌐 GitHub Link – Directs users to the project repository.

💼 LinkedIn Link – Connects users with the creator/contributors.

📬 Contact Section – Allows users to provide feedback or report issues.

🔗 Project Resources – Quick access to documentation and references.

🏷 Hacktoberfest & Open Source Tags – Encourages contributions and visibility.

✨ Animated, Minimalistic Design – Built with motion effects for an engaging experience.

📱 Responsive & Sticky Layout – Always visible at the bottom across devices.

🧩 App.jsx

Imported and rendered below the existing footer to display both designs for testing and contribution visibility.


💡 Why This Is Important

🎨 Professional Look: Adds a polished, finished touch to the project UI.

🔗 Connectivity: Offers quick access to repository, contributors, and documentation.

🧭 Improved Navigation: Sticky position ensures users always have footer access.

💬 Feedback Friendly: Makes user interaction, suggestions, and reporting easier.

💻 Hacktoberfest Ready: Promotes open-source participation and visibility.


🧩 Issue Reference

Fixes #24


✅ Testing & Verification

Verified correct rendering of Footer2.jsx below the existing footer.

Confirmed responsiveness on various screen sizes.

Checked motion animations for smooth transitions.

Validated all social links and resources open correctly.

Ensured no layout conflict with the current design.


🏁 Summary

This PR introduces a clean, animated, and professional footer that aligns with ParticleFX’s design goals, improves accessibility, and enhances open-source contribution visibility. I hope it gets merged after thorough review


Summary by CodeRabbit

  • New Features
    • Added a secondary responsive footer with enhanced branding and decorative glow.
    • Social media links with animated icon buttons and hover effects.
    • Quick navigation links and contact information for easier access.
    • Newsletter signup with email input; subscribing shows a confirmation and clears the field.
    • Scroll-to-top control for faster navigation.
    • Subtle entry animations for improved visual polish.

@coderabbitai
Copy link

coderabbitai bot commented Oct 5, 2025

Walkthrough

Adds a new default-exported React component Footer2 and renders it in src/App.jsx immediately after the existing Footer. Footer2 provides animated footer sections, newsletter email state with a subscribe handler (alert + clear), social/quick links, contact info, and a scroll-to-top control.

Changes

Cohort / File(s) Summary
App integration
src/App.jsx
Imports Footer2 from ./components/ui/Footer2 and renders <Footer2 /> after the existing <Footer />.
UI component: Footer2
src/components/ui/Footer2.jsx
Adds new default-exported React component with framer-motion entrance animations, lucide-react icons, multi-column layout (brand, social, links, contact, newsletter), local useState for email, subscribe handler that alerts and clears input, decorative glow, responsive layout, and a bottom bar with scroll-to-top button.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant App
  participant Footer2
  note over App,Footer2: Render phase
  App->>Footer2: Mount component
  Footer2-->>App: Render animated sections

  rect rgba(200, 240, 255, 0.25)
  note right of User: Newsletter subscribe flow
  User->>Footer2: Type email
  Footer2->>Footer2: setState(email)
  User->>Footer2: Click "Subscribe"
  Footer2->>User: alert("Subscribed: <email>")
  Footer2->>Footer2: setState("") (clear)
  end

  rect rgba(220, 255, 220, 0.25)
  note right of User: Scroll-to-top
  User->>Footer2: Click ↑ button
  Footer2->>Window: window.scrollTo({top:0, behavior:"smooth"})
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

A second footer hops into view,
With links that twinkle, buttons new.
I thump “Subscribe!”—an email cheer,
Then spring to top with arrow clear.
Two paws, one page, animations bright—
Footer2 lands soft, tail alight. 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning The PR adds a newsletter signup form and a scroll-to-top control in Footer2, neither of which were specified in issue #24 and therefore fall outside the original scope of the footer design requirements. Please remove or defer the newsletter signup and scroll-to-top features to a separate issue or confirm with stakeholders that these additions align with the project’s priorities.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title accurately describes the primary change by indicating the addition of a minimalistic animated footer component (Footer2.jsx), but it includes an unnecessary emoji and the redundant “Pull Request:” prefix which add noise without increasing clarity.
Linked Issues Check ✅ Passed The implementation fulfills all coding objectives from issue #24 by introducing a minimalistic, sticky Footer2 component with GitHub and LinkedIn links, contact information, documentation/resource links, and optional badges, matching the requested design and functionality.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a3fc13a and 520b7d2.

📒 Files selected for processing (1)
  • src/components/ui/Footer2.jsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/components/ui/Footer2.jsx

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (4)
src/components/ui/Footer2.jsx (4)

23-26: Add email validation and improve user feedback.

The subscription handler uses an alert for feedback and lacks email validation. While the input has type="email" for basic browser validation, the handler should validate the format before processing.

Consider this improved implementation:

 const handleSubscribe = () => {
+  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
+  if (!email || !emailRegex.test(email)) {
+    alert("Please enter a valid email address")
+    return
+  }
   alert(`Subscribed with: ${email}`)
   setEmail("")
 }

For production, replace the alert with a proper notification system (toast, modal, or inline message) and integrate with your newsletter backend service.


89-92: Extract contact information to configuration.

The contact details appear to be placeholder values (note the 555 phone prefix, which is reserved for fictional numbers). Consider extracting these to a configuration file or environment variables for easier updates and to make it clear they need to be replaced with real values before production deployment.


108-114: Add accessibility attributes for the email input.

The email input lacks an accessible label, which impacts screen reader users.

Apply this diff to improve accessibility:

           <input
             type="email"
             placeholder="Enter your email"
+            aria-label="Email address for newsletter subscription"
             className="flex-1 p-2 rounded-md text-black"
             value={email}
             onChange={(e) => setEmail(e.target.value)}
           />

137-142: Consider conditional visibility for scroll-to-top button.

The scroll-to-top button is always visible. For better UX, you could conditionally show it only when the user has scrolled down from the top.

This would require adding scroll position tracking:

const [showScrollTop, setShowScrollTop] = useState(false)

useEffect(() => {
  const handleScroll = () => {
    setShowScrollTop(window.scrollY > 300)
  }
  window.addEventListener('scroll', handleScroll)
  return () => window.removeEventListener('scroll', handleScroll)
}, [])

// Then conditionally render the button
{showScrollTop && (
  <button onClick={() => window.scrollTo({ top: 0, behavior: "smooth" })} ...>
    ...
  </button>
)}
📜 Review details

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a97393f and a3fc13a.

📒 Files selected for processing (2)
  • src/App.jsx (2 hunks)
  • src/components/ui/Footer2.jsx (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/App.jsx (1)
src/components/ui/Footer2.jsx (1)
  • Footer2 (5-146)
🔇 Additional comments (2)
src/components/ui/Footer2.jsx (1)

1-3: LGTM!

The imports are appropriate for the component's functionality, using lucide-react for icons, framer-motion for animations, and React's useState for managing newsletter email state.

src/App.jsx (1)

20-21: Remove or conditionalize duplicate footers
The app currently renders both <Footer /> and <Footer2 />, resulting in two footer sections per page. Please choose one:

  • Replace <Footer /> with <Footer2 /> in production.
  • Wrap them behind a feature flag for testing:
const USE_NEW_FOOTER = process.env.USE_NEW_FOOTER === 'true';
{USE_NEW_FOOTER ? <Footer2 /> : <Footer />}

Clarify which approach you intend.

@Anmol-TheDev
Copy link
Owner

@SrinjoyeeDey add some screenshots

@SrinjoyeeDey
Copy link
Author

Hi @Anmol-TheDev ,

I’m really sorry I’m unable to provide a screenshot at the moment. My laptop was running very slowly, and I had to clear some things to avoid it hanging, which made it hard to run the project locally right after making the changes.

The code is complete and should work as intended. You can check it by pulling my branch and running it in your own local environment. Once verified, feel free to merge it—I’m confident it will render correctly.

Thank you for understanding!

@SrinjoyeeDey
Copy link
Author

Let me know if I can help you with anything else @Anmol-TheDev

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.

🎨 Footer Design: Minimalistic & Professional for particleFx

2 participants