Add Engagement Modal with custom animations and accessibility features#780
Merged
Conversation
- Implemented EngagementModal component with props for headline, body, and call-to-action buttons. - Added custom CSS animations for emoji wiggle effect on button hover. - Integrated Framer Motion for smooth modal transitions. - Included accessibility features such as focus trapping and ESC key close functionality. - Added session storage logic to prevent multiple modal displays in a session. - Provided a development-only button to test modal functionality.
Contributor
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a new EngagementModal component with custom animations and enhanced accessibility features, along with minor updates to existing components and dependency changes.
- Added a fully featured EngagementModal with focus trapping, ESC key handling, session-based display logic, and custom "wiggle" animations.
- Updated NewsletterArea and Section components to support an optional id prop for improved accessibility.
- Integrated framer-motion for smooth modal transitions and added new CSS files for modal animations.
Reviewed Changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/pages/index.tsx | Added EngagementModal import and integrated the modal on the homepage. |
| src/containers/newsletter/layout-02/index.tsx | Updated the Section component usage by passing an id ("newsletter") for accessibility. |
| src/components/ui/section/index.tsx | Modified Section component to accept and pass through an optional id prop. |
| src/components/EngagementModal.tsx | Implements the EngagementModal with all required accessibility and animation features. |
| src/components/EngagementModal.tsx.fixed | Contains a variant of the EngagementModal implementation with additional debug code. |
| src/components/EngagementModal.module.css | Provides module CSS for the modal’s custom "wiggle" animations. |
| src/assets/css/engagement-modal.css | Provides asset CSS for modal animations (duplicative with the module CSS). |
| package.json | Added the framer-motion dependency to support advanced animations in the modal. |
Comments suppressed due to low confidence (1)
src/components/EngagementModal.tsx.fixed:1
- There are two versions of the EngagementModal component. Please remove the redundant 'EngagementModal.tsx.fixed' file to avoid confusion and ensure maintainability.
import React, { useEffect, useRef, useState } from "react";
|
🔍 Code Quality Score Breakdown:
💡 Recommendations:
|
jonulak
added a commit
that referenced
this pull request
Jun 18, 2025
commit b56e409 Author: Jerome Hardaway <jerome@vetswhocode.io> Date: Tue Jun 17 18:24:35 2025 -0400 Refactor: Replace Section component imports with EngagementModal in various containers (#781) - Updated imports in blog, brand, contact, course, cta, donate, event, faq, funfact, gradation, newsletter, profile, quote, register-guide, service, team, testimonial, timeline, video, and zoom-meetings containers to use EngagementModal instead of the previous Section component. - Added EngagementModal component with custom animations and accessibility features. - Introduced EngagementModal styles for improved UI/UX. commit bc3c9d2 Author: Jerome Hardaway <jerome@vetswhocode.io> Date: Tue Jun 17 13:22:46 2025 -0400 refactor: remove unused EngagementModal component and associated animations commit 8add330 Author: Jerome Hardaway <jerome@vetswhocode.io> Date: Tue Jun 17 08:44:42 2025 -0400 Add Engagement Modal with custom animations and accessibility features (#780) - Implemented EngagementModal component with props for headline, body, and call-to-action buttons. - Added custom CSS animations for emoji wiggle effect on button hover. - Integrated Framer Motion for smooth modal transitions. - Included accessibility features such as focus trapping and ESC key close functionality. - Added session storage logic to prevent multiple modal displays in a session. - Provided a development-only button to test modal functionality. commit e4c58e6 Author: Jerome Hardaway <jerome@vetswhocode.io> Date: Wed Jun 11 18:44:26 2025 -0400 refactor: streamline request body validation and Slack message formatting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new
EngagementModalcomponent, enhancements to animations and accessibility, and minor updates to existing components and dependencies. The changes focus on improving user interaction and modularity across the codebase.New Features and Components:
EngagementModalcomponent with animations, accessibility features (e.g., focus trap and ESC key handling), and session-based display logic. It includes customizable headline, body, and call-to-action buttons. [1] [2]Dependency Updates:
framer-motiontopackage.jsonto enable advanced animations in theEngagementModal.Component Enhancements:
idprop to theSectioncomponent for enhanced accessibility and modularity. [1] [2]idprop (newsletter) to theSectioncomponent in the newsletter layout for improved accessibility.Integration:
EngagementModalcomponent into the main page for potential use.- Implemented EngagementModal component with props for headline, body, and call-to-action buttons.