-
-
Notifications
You must be signed in to change notification settings - Fork 266
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ADDED Cursor Animation of INDIAN TRICOLOR Theme #879
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThe changes involve the addition of interactive visual elements across multiple HTML files, specifically through the implementation of animated circles that follow the mouse cursor. A new CSS class Changes
Possibly related PRs
Suggested labels
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 49
🧹 Outside diff range and nitpick comments (19)
comment.html (1)
Line range hint
8-102
: Consider accessibility and performance implicationsThe cursor animation implementation could benefit from the following considerations:
- Add support for
prefers-reduced-motion
media query for users sensitive to motion- Consider disabling the animation on mobile devices to save battery
- Implement a way to reduce animation complexity when the page is not in focus
Consider adding these improvements:
// Check for reduced motion preference const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)'); // Disable animation if user prefers reduced motion if (prefersReducedMotion.matches) { circles.forEach(circle => circle.style.display = 'none'); } // Reduce animation complexity when page is not in focus document.addEventListener('visibilitychange', () => { if (document.hidden) { cancelAnimationFrame(animationFrameId); } else { animateCircles(); } }); // Disable on mobile devices if ('ontouchstart' in window) { circles.forEach(circle => circle.style.display = 'none'); }login.html (1)
140-185
: Add device-specific optimizations.The cursor animation should be disabled on touch devices for better performance and user experience.
Add a device check before initializing the animation:
// Add at the beginning of your script function isTouchDevice() { return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0); } // Only initialize if not a touch device if (!isTouchDevice()) { // Your existing animation code } else { // Remove circle elements on touch devices document.querySelectorAll('.circle').forEach(el => el.remove()); }privacy-policy.html (1)
Line range hint
1-145
: Reconsider cursor animation placement on privacy policy page.While the cursor animation adds visual appeal, implementing it on a privacy policy page raises some concerns:
- It may distract users from important legal content
- It doesn't align with the serious nature of a privacy policy page
- The animation could impact readability
Consider:
- Limiting this feature to more appropriate pages (e.g., homepage, landing pages)
- Adding a user preference to disable the animation
- Ensuring the animation doesn't interfere with text selection and readability
Faqs.html (1)
Line range hint
114-287
: Consider user experience and provide animation controlsWhile the cursor animation adds visual appeal, consider these architectural improvements:
- Add a user preference toggle to enable/disable the animation
- Store the preference in localStorage
- Consider adding a reduced animation mode for performance
Example implementation:
// Add to your HTML <button id="toggle-animation" aria-label="Toggle cursor animation"> <span class="icon">🎯</span> </button> // Add to your JavaScript const toggleBtn = document.getElementById('toggle-animation'); const cursorTrail = document.getElementById('cursor-trail'); // Initialize from stored preference let isAnimationEnabled = localStorage.getItem('cursorAnimationEnabled') !== 'false'; cursorTrail.style.display = isAnimationEnabled ? 'block' : 'none'; toggleBtn.addEventListener('click', () => { isAnimationEnabled = !isAnimationEnabled; cursorTrail.style.display = isAnimationEnabled ? 'block' : 'none'; localStorage.setItem('cursorAnimationEnabled', isAnimationEnabled); });ats_score_finder.html (1)
Line range hint
61-280
: Consider architectural improvements for cursor animation implementation.While the cursor animation is implemented, there are several architectural improvements to consider:
- Separate the animation logic into its own module/file for better maintainability
- Add configuration options for:
- Color themes (including Indian tricolor)
- Number of circles
- Animation speed
- Performance settings
- Consider using CSS transforms instead of top/left for better performance
- Add feature detection and graceful degradation for older browsers
Would you like assistance in implementing these architectural improvements?
cv.html (1)
Line range hint
100-276
: Consider architectural improvements for better maintainability and performance.The cursor animation implementation would benefit from the following architectural improvements:
- Create a dedicated class to encapsulate the cursor animation logic
- Use CSS custom properties for easier theme customization
- Implement the animation using CSS transforms instead of top/left properties for better performance
- Consider using IntersectionObserver to pause animations when page is not visible
Would you like me to provide an example of a more maintainable and performant implementation that better aligns with the Indian tricolor theme?
resume.html (1)
Modularization needed - cursor animation code is duplicated across files
The verification confirms that identical cursor animation code (HTML, styles, and JavaScript) is duplicated across multiple files (signup.html, index.html, and others). This reinforces the need for modularization as suggested in the original review.
Specific findings:
- Same 20 circle div elements duplicated
- Identical JavaScript implementation including coords, colors, and animation logic
- Style definitions repeated
The original architectural advice to create dedicated files and potentially a web component is the correct approach to eliminate this duplication.
🔗 Analysis chain
Line range hint
10-366
: Consider modularizing the cursor animation feature.The cursor animation is currently embedded directly in resume.html, but based on the PR objectives, this feature should be available across all pages.
Create dedicated files for the cursor animation:
css/cursor-animation.css
for stylesjs/cursor-animation.js
for the animation logic- Update all pages to include these files
Consider creating a reusable web component:
// cursor-animation.js class CursorAnimation extends HTMLElement { constructor() { super(); // Current animation logic here } connectedCallback() { // Setup logic } disconnectedCallback() { // Cleanup logic } } customElements.define('cursor-animation', CursorAnimation);Then use it in any page:
<cursor-animation aria-hidden="true"></cursor-animation>Let's check where this feature needs to be added:
This will help verify if the cursor animation is already implemented across files or if it needs to be modularized.
This will help verify if the cursor animation code is duplicated across files, confirming the need for modularization.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Find all HTML files that might need the cursor animation fd -e html --type f --exec echo "Checking {}" \; --exec rg -l "class=\"circle\"" {} \;Length of output: 802
Script:
#!/bin/bash # Check if cursor animation is already implemented in other HTML files echo "Files containing cursor animation circles:" rg -l "class=\"circle\"" --type html echo -e "\nChecking for cursor animation script content:" rg "const coords.*circles.*animateCircles" --type htmlLength of output: 504
Script:
#!/bin/bash # Let's check the actual implementation in one of these files to confirm if they're duplicated echo "Checking cursor animation implementation in signup.html:" rg -A 30 "class=\"circle\"" signup.html echo -e "\nChecking cursor animation implementation in index.html:" rg -A 30 "class=\"circle\"" index.htmlLength of output: 3321
chatbot.html (1)
Line range hint
23-448
: Consider UX impact of cursor animation in chatbot interfaceWhile the cursor animation adds visual appeal, it might be distracting in a chatbot interface where users need to focus on typing and reading messages. Consider:
- Disabling the animation when the user is typing
- Adding a toggle button to enable/disable the animation
- Reducing animation intensity over input elements
Example implementation for disabling animation while typing:
const inputField = document.getElementById('prompt-input'); let isTyping = false; inputField.addEventListener('focus', () => { isTyping = true; document.querySelectorAll('.circle').forEach(circle => { circle.style.opacity = '0'; }); }); inputField.addEventListener('blur', () => { isTyping = false; document.querySelectorAll('.circle').forEach(circle => { circle.style.opacity = '1'; }); });signup.html (1)
506-551
: Consider adding configuration optionsThe cursor animation could benefit from being configurable to allow users to:
- Enable/disable the animation
- Choose different themes
- Adjust trail length and speed
Consider implementing a configuration object:
const cursorConfig = { enabled: true, theme: 'indian-tricolor', trailLength: 20, animationSpeed: 0.3, // Add more configuration options as needed }; // Update animation code to use these configurationsresume_tips.html (1)
466-533
: Consider performance implications of cursor animationThe cursor animation feature, while visually appealing, may impact performance:
- Mobile devices don't show cursors, making this animation unnecessary
- Low-end devices might experience lag due to continuous animation
- Users with reduced motion preferences might prefer no animation
Consider these improvements:
- Add feature detection for mobile devices
- Implement user preference detection:
// Check if user prefers reduced motion if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { // Disable animation } // Check if device is mobile if ('ontouchstart' in window || navigator.maxTouchPoints > 0) { // Disable animation }index.html (1)
Line range hint
881-1129
: Add accessibility features and performance optimizations.Consider implementing the following improvements:
- Respect user's motion preferences
- Add option to disable animation
- Implement performance optimizations
<style> + @media (prefers-reduced-motion: reduce) { + .circle { + transition: none !important; + animation: none !important; + } + } </style> <script> + // Check user's motion preference + const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)'); + + // Throttle mousemove events for better performance + function throttle(func, limit) { + let inThrottle; + return function(...args) { + if (!inThrottle) { + func.apply(this, args); + inThrottle = true; + setTimeout(() => inThrottle = false, limit); + } + } + } + + // Only initialize animation if motion is allowed + if (!prefersReducedMotion.matches) { + window.addEventListener("mousemove", throttle(function (e) { + coords.x = e.clientX; + coords.y = e.clientY; + }, 16)); // Throttle to ~60fps + animateCircles(); + } </script>privacypolicy.html (5)
Line range hint
101-106
: Remove duplicate:root
CSS variable declarationsThe CSS variables in the
:root
selector are declared twice. The second declaration at lines 101-106 is redundant and can be removed to avoid confusion and potential maintenance issues.Apply this diff to remove the duplicate declaration:
-:root { - --deep-teal: #003d4d; - --off-white: #f8f9fa; - --dark-slate: #2f4f4f; - --soft-gold: #d9c79e; -}
Line range hint
348-361
: Fix incorrect nesting of<nav>
elementsThere is a nested
<nav>
element inside another<nav>
element, which is invalid HTML and may cause issues with styling and accessibility. Restructure the navigation markup to avoid nesting<nav>
elements within each other.Apply this diff to correct the nesting:
<!-- Navbar --> <nav class="navbar"> <img src="images/logo.png" alt="logo"> <h1>Resum Resume</h1> - <nav class="navbar"> + <div class="nav-links"> <div class="tabs-container"></div> <a class="tab" href="index.html">Home</a> <a class="tab" href="about.html">About</a> <a class="tab" href="resume.html">Build Resume</a> <a class="tab" href="signup.html">Sign Up</a> <a class="tab" href="login.html">Login</a> <a class="tab" href="privacypolicy.html">Privacy Policy</a> </div> - </nav> </nav>Consider using a
<div>
or<ul>
element to contain the navigation links.
Line range hint
86-90
: Remove unused CSS class.ul
The CSS class
.ul
is defined but not used in the HTML. Removing unused CSS helps keep the codebase clean and maintainable.Apply this diff to remove the unused class:
-.ul{ - padding: 0; - list-style: none; - font-family: Verdana, Geneva, Tahoma, sans-serif; - text-align: center; -}
428-473
: Consider accessibility impacts of cursor animationsThe cursor animation may affect users with motion sensitivity or visual impairments. It's recommended to provide an option to disable the cursor animation, ensuring compliance with accessibility standards.
You could implement a user-controlled toggle to enable or disable the cursor animation based on preference.
Line range hint
12-310
: Consolidate CSS into external stylesheetEmbedding a large amount of CSS within the HTML can make the file lengthy and harder to maintain. Consider moving the styles into an external CSS file to improve maintainability and promote reusability.
Create a
privacypolicy.css
file and move all the styles into it. Then, link it in the<head>
section:<!-- In the head section --> <link rel="stylesheet" href="privacypolicy.css">about.html (3)
Line range hint
12-390
: Avoid Redefining CSS Variables in ':root' SelectorThe CSS variables are defined twice in the
:root
selector, which can lead to confusion and maintenance issues.Apply this diff to remove the duplicate
:root
definition:-:root { - --deep-teal: #003d4d; - --off-white: #f8f9fa; - --dark-slate: #2f4f4f; - --soft-gold: #d9c79e; -}Ensure that the
:root
variables are defined only once at the beginning of the CSS.
Line range hint
12-390
: Consider Moving Inline Styles to an External CSS FileThe extensive CSS within the
<style>
tag can be moved to an external stylesheet for better maintainability and reusability.Create an external CSS file, for example
about.css
, and link it in the<head>
section:<link rel="stylesheet" href="about.css">Then, move all the CSS code into
about.css
.
400-401
: Remove Initial Positioning from CSSSetting
top: 0;
andleft: 0;
in the.circle
class positions all circles at the top-left corner initially, which may cause a flicker effect.Remove these properties from the CSS:
- top: 0; - left: 0;The JavaScript will handle positioning based on cursor movement.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (15)
- Faqs.html (2 hunks)
- about.html (3 hunks)
- ats_score_finder.html (2 hunks)
- chatbot.html (2 hunks)
- colorChoice.html (2 hunks)
- comment.html (2 hunks)
- contact.html (2 hunks)
- cv.html (2 hunks)
- index.html (2 hunks)
- login.html (2 hunks)
- privacy-policy.html (2 hunks)
- privacypolicy.html (3 hunks)
- resume.html (2 hunks)
- resume_tips.html (2 hunks)
- signup.html (2 hunks)
🔇 Additional comments (6)
contact.html (1)
Line range hint
1-121
: Verify consistent implementation across all files.The changes need to be consistently applied across all mentioned files to maintain a uniform Indian tricolor cursor animation theme.
Consider moving the cursor animation code to a shared JavaScript file to improve maintainability and ensure consistency across all pages.
privacy-policy.html (1)
99-144
:⚠️ Potential issueImprove JavaScript implementation for performance and theme compliance.
Several concerns with the current implementation:
- Colors don't match the Indian tricolor theme (saffron, white, green)
- No cleanup of event listeners or animation frame
- Missing error handling and feature detection
- Continuous animation might impact battery life on mobile devices
Suggested improvements:
const colors = [ - "#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", + // Indian flag colors: Saffron, White, Green + "#FF9933", "#FFFFFF", "#138808" ]; + // Feature detection + if (!window.requestAnimationFrame) { + console.warn('Animation not supported'); + return; + } function animateCircles() { let x = coords.x; let y = coords.y; + // Throttle animation frame for better performance + if (!window.requestAnimationFrame) return; circles.forEach(function (circle, index) { // ... animation logic ... }); requestAnimationFrame(animateCircles); } + // Cleanup on page unload + window.addEventListener('unload', () => { + window.removeEventListener('mousemove', updateCoords); + cancelAnimationFrame(animateCircles); + });Let's verify the color values match the official Indian flag colors:
chatbot.html (1)
403-448
:⚠️ Potential issueImprove animation performance and maintainability
The animation implementation has several areas for improvement:
- Missing cleanup of animation frame
- No handling for mobile/touch devices
- Hard-coded values could be constants
- Potential performance impact from continuous animation
Add cleanup and optimize the implementation:
+ const CIRCLE_RADIUS = 12; + const TRAIL_SPEED = 0.3; + let animationFrame; function animateCircles() { let x = coords.x; let y = coords.y; circles.forEach(function (circle, index) { - circle.style.left = x - 12 + "px"; - circle.style.top = y - 12 + "px"; + circle.style.left = `${x - CIRCLE_RADIUS}px`; + circle.style.top = `${y - CIRCLE_RADIUS}px`; circle.style.scale = (circles.length - index) / circles.length; circle.x = x; circle.y = y; const nextCircle = circles[index + 1] || circles[0]; - x += (nextCircle.x - x) * 0.3; - y += (nextCircle.y - y) * 0.3; + x += (nextCircle.x - x) * TRAIL_SPEED; + y += (nextCircle.y - y) * TRAIL_SPEED; }); - requestAnimationFrame(animateCircles); + animationFrame = requestAnimationFrame(animateCircles); } + // Handle cleanup + window.addEventListener('unload', () => { + if (animationFrame) { + cancelAnimationFrame(animationFrame); + } + }); + // Handle touch devices + window.addEventListener('touchmove', (e) => { + e.preventDefault(); + coords.x = e.touches[0].clientX; + coords.y = e.touches[0].clientY; + });Let's check for potential performance impact:
about.html (3)
584-625
: Optimize Animation Performance for Better User ExperienceThe
animateCircles
function may impact performance due to frequent style updates on multiple elements.[performance]
Consider reducing the number of circles or optimizing the animation logic to improve performance on lower-end devices.
560-582
: Reduce Number of Circles to Enhance PerformanceAdding 22
.circle
elements can affect page performance, especially on mobile devices.[performance]
Consider reducing the number of circles to a reasonable amount, such as 10, to balance visual effect and performance.
<!-- Example: Use only 10 circles --> <div class="circle"></div> <!-- Repeat 9 more times -->
591-597
: Verify Color Assignment Matches Number of CirclesWith fewer colors than circles, colors will repeat due to the modulo operation. Ensure this repetition aligns with the desired visual effect.
Run the following script to check the number of circles and colors:
✅ Verification successful
Let me search for the colors array definition in the code.
Color Assignment is Well-Balanced
The code has 20 circles and 19 unique colors defined in the array, which provides almost a 1:1 mapping between circles and colors. The modulo operation (
index % colors.length
) will only affect the last circle, which is an acceptable design choice for visual consistency.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Count the number of .circle elements and compare with length of colors array. # Test: Ensure number of circles does not vastly exceed number of colors. # Expected: Number of circles should be equal to or less than colors. # Count .circle elements grep -o '<div class="circle"></div>' about.html | wc -l # Output colors array length echo ${#colors[@]}Length of output: 71
Script:
#!/bin/bash # Find the colors array definition in about.html rg "colors\s*=\s*\[" about.html -A 5Length of output: 354
<!-- Circles --> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> | ||
<div class="circle"></div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Optimize circle elements implementation
The current implementation has 20 hardcoded identical div elements, which is not maintainable and could impact performance.
Consider generating these elements dynamically in JavaScript:
-<!-- Circles -->
-<div class="circle"></div>
-<div class="circle"></div>
-... (remove all circle divs)
+<div id="cursor-container" aria-hidden="true"></div>
+<script>
+const container = document.getElementById('cursor-container');
+const circleCount = 20;
+for (let i = 0; i < circleCount; i++) {
+ const circle = document.createElement('div');
+ circle.className = 'circle';
+ container.appendChild(circle);
+}
+</script>
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<!-- Circles --> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div class="circle"></div> | |
<div id="cursor-container" aria-hidden="true"></div> | |
<script> | |
const container = document.getElementById('cursor-container'); | |
const circleCount = 20; | |
for (let i = 0; i < circleCount; i++) { | |
const circle = document.createElement('div'); | |
circle.className = 'circle'; | |
container.appendChild(circle); | |
} | |
</script> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand that the suggested changes didn't produce the desired output. It seems that dynamically generating the circle elements might have affected how they interact with your animation script.
To ensure the circles are created before the animation script runs, you can adjust the code as follows:
<!-- Circles Container -->
<div id="cursor-container" aria-hidden="true"></div>
<script>
// Create circles dynamically
const container = document.getElementById('cursor-container');
const circleCount = 20;
for (let i = 0; i < circleCount; i++) {
const circle = document.createElement('div');
circle.className = 'circle';
container.appendChild(circle);
}
// Coordinates for the cursor
const coords = { x: 0, y: 0 };
const circles = document.querySelectorAll(".circle");
const colors = [
"#fc5720", "#fc6532", "#fc6532", "#fd8b65", "#d5585c", "#fac3b1",
"#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283",
"#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02",
];
circles.forEach(function (circle, index) {
circle.x = 0;
circle.y = 0;
circle.style.backgroundColor = colors[index % colors.length];
});
// Update the coordinates when the mouse moves
window.addEventListener("mousemove", function (e) {
coords.x = e.clientX;
coords.y = e.clientY;
});
// Animation function to move the circles
function animateCircles() {
let x = coords.x;
let y = coords.y;
circles.forEach(function (circle, index) {
circle.style.left = x - 12 + "px";
circle.style.top = y - 12 + "px";
circle.style.scale = (circles.length - index) / circles.length;
circle.x = x;
circle.y = y;
const nextCircle = circles[index + 1] || circles[0];
x += (nextCircle.x - x) * 0.3;
y += (nextCircle.y - y) * 0.3;
});
requestAnimationFrame(animateCircles);
}
animateCircles();
</script>
By creating the circles before initializing the animation script, we ensure that all elements are available when the script runs. This should maintain the same output as your original implementation.
If you prefer to keep your current approach or need further assistance, please let me know!
<style> | ||
/* circle styles */ | ||
.circle { | ||
height: 24px; | ||
width: 24px; | ||
border-radius: 24px; | ||
background-color: rgb(255, 0, 0); | ||
position: fixed; | ||
top: 0; | ||
left: 0; | ||
pointer-events: none; | ||
z-index: 99999999; | ||
} | ||
</style> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CSS implementation needs alignment with Indian tricolor theme
The current CSS implementation has several concerns:
- The hardcoded red background color doesn't align with the PR's Indian tricolor theme objective
- The extremely high z-index (99999999) is excessive and could interfere with other interactive elements
- Fixed pixel dimensions might not scale well across different devices
Consider this improved implementation:
.circle {
- height: 24px;
- width: 24px;
- border-radius: 24px;
- background-color: rgb(255, 0, 0);
+ height: 1.5rem;
+ width: 1.5rem;
+ border-radius: 50%;
position: fixed;
top: 0;
left: 0;
pointer-events: none;
- z-index: 99999999;
+ z-index: 1000;
}
Committable suggestion was skipped due to low confidence.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, I understand that replacing the recommended statements changed the output in a way that doesn't meet your needs. Let's try to adjust the implementation to achieve the desired effect while addressing the concerns.
To align the cursor animation with the Indian tricolor theme, you can modify the background-color
property to use the colors of the Indian flag. Additionally, adjusting the size units and z-index can help with responsiveness and layering without altering the intended visual outcome.
Updated CSS:
.circle {
height: 24px; /* You can keep the pixel value if it suits your design */
width: 24px;
border-radius: 50%;
background-color: rgb(255, 0, 0); /* Starting with red */
position: fixed;
top: 0;
left: 0;
pointer-events: none;
z-index: 1000; /* Reduced z-index to prevent interference */
}
Update the colors in your JavaScript to reflect the Indian tricolor:
const colors = [
"#FF9933", // Saffron
"#FFFFFF", // White
"#138808", // Green
];
By cycling through these colors, the circles will display the Indian tricolor as they follow the cursor. If the size in pixels works better for your design, you can retain it instead of using rem
. The key is to ensure the visual effect remains as you intended while optimizing for responsiveness and compatibility.
Let me know if this helps! 😊
<script> | ||
// coordinates for the cursor : | ||
const coords = { x: 0, y: 0 }; | ||
const circles = document.querySelectorAll(".circle"); | ||
|
||
const colors = [ | ||
"#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", | ||
]; | ||
|
||
circles.forEach(function (circle, index) { | ||
circle.x = 0; | ||
circle.y = 0; | ||
circle.style.backgroundColor = colors[index % colors.length]; | ||
}); | ||
|
||
// update the coordinates when the mouse moves: | ||
window.addEventListener("mousemove", function (e) { | ||
coords.x = e.clientX; | ||
coords.y = e.clientY; | ||
}); | ||
|
||
// animation function to move the circles: | ||
function animateCircles() { | ||
let x = coords.x; | ||
let y = coords.y; | ||
|
||
circles.forEach(function (circle, index) { | ||
|
||
|
||
circle.style.left = x - 12 + "px"; | ||
circle.style.top = y - 12 + "px"; | ||
circle.style.scale = (circles.length - index) / circles.length; | ||
|
||
circle.x = x; | ||
circle.y = y; | ||
|
||
const nextCircle = circles[index + 1] || circles[0]; | ||
x += (nextCircle.x - x) * 0.3; | ||
y += (nextCircle.y - y) * 0.3; | ||
}); | ||
|
||
requestAnimationFrame(animateCircles); | ||
} | ||
|
||
animateCircles(); | ||
</script> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Revise JavaScript implementation for Indian tricolor theme and performance
The current implementation has several concerns:
- The colors array doesn't reflect the Indian tricolor theme
- Missing cleanup for animation frame and event listener
- No performance optimizations for mouse movement tracking
- Potential memory leak from continuous animation
Consider this improved implementation:
-const colors = [
- "#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02",
-];
+// Indian flag colors: Saffron, White, Green
+const colors = [
+ "#FF9933", "#FF9933", "#FF9933", // Saffron
+ "#FFFFFF", "#FFFFFF", "#FFFFFF", // White
+ "#138808", "#138808", "#138808" // Green
+];
+let animationFrameId;
+const throttle = (func, limit) => {
+ let inThrottle;
+ return function(...args) {
+ if (!inThrottle) {
+ func.apply(this, args);
+ inThrottle = true;
+ setTimeout(() => inThrottle = false, limit);
+ }
+ }
+}
-window.addEventListener("mousemove", function(e) {
+window.addEventListener("mousemove", throttle(function(e) {
coords.x = e.clientX;
coords.y = e.clientY;
-});
+}, 16)); // ~60fps
function animateCircles() {
// ... existing animation code ...
- requestAnimationFrame(animateCircles);
+ animationFrameId = requestAnimationFrame(animateCircles);
}
animateCircles();
+
+// Cleanup on page unload
+window.addEventListener('unload', () => {
+ cancelAnimationFrame(animationFrameId);
+});
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<script> | |
// coordinates for the cursor : | |
const coords = { x: 0, y: 0 }; | |
const circles = document.querySelectorAll(".circle"); | |
const colors = [ | |
"#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", | |
]; | |
circles.forEach(function (circle, index) { | |
circle.x = 0; | |
circle.y = 0; | |
circle.style.backgroundColor = colors[index % colors.length]; | |
}); | |
// update the coordinates when the mouse moves: | |
window.addEventListener("mousemove", function (e) { | |
coords.x = e.clientX; | |
coords.y = e.clientY; | |
}); | |
// animation function to move the circles: | |
function animateCircles() { | |
let x = coords.x; | |
let y = coords.y; | |
circles.forEach(function (circle, index) { | |
circle.style.left = x - 12 + "px"; | |
circle.style.top = y - 12 + "px"; | |
circle.style.scale = (circles.length - index) / circles.length; | |
circle.x = x; | |
circle.y = y; | |
const nextCircle = circles[index + 1] || circles[0]; | |
x += (nextCircle.x - x) * 0.3; | |
y += (nextCircle.y - y) * 0.3; | |
}); | |
requestAnimationFrame(animateCircles); | |
} | |
animateCircles(); | |
</script> | |
<script> | |
// coordinates for the cursor : | |
const coords = { x: 0, y: 0 }; | |
const circles = document.querySelectorAll(".circle"); | |
// Indian flag colors: Saffron, White, Green | |
const colors = [ | |
"#FF9933", "#FF9933", "#FF9933", // Saffron | |
"#FFFFFF", "#FFFFFF", "#FFFFFF", // White | |
"#138808", "#138808", "#138808" // Green | |
]; | |
circles.forEach(function (circle, index) { | |
circle.x = 0; | |
circle.y = 0; | |
circle.style.backgroundColor = colors[index % colors.length]; | |
}); | |
let animationFrameId; | |
const throttle = (func, limit) => { | |
let inThrottle; | |
return function(...args) { | |
if (!inThrottle) { | |
func.apply(this, args); | |
inThrottle = true; | |
setTimeout(() => inThrottle = false, limit); | |
} | |
} | |
} | |
// update the coordinates when the mouse moves: | |
window.addEventListener("mousemove", throttle(function(e) { | |
coords.x = e.clientX; | |
coords.y = e.clientY; | |
}, 16)); // ~60fps | |
// animation function to move the circles: | |
function animateCircles() { | |
let x = coords.x; | |
let y = coords.y; | |
circles.forEach(function (circle, index) { | |
circle.style.left = x - 12 + "px"; | |
circle.style.top = y - 12 + "px"; | |
circle.style.scale = (circles.length - index) / circles.length; | |
circle.x = x; | |
circle.y = y; | |
const nextCircle = circles[index + 1] || circles[0]; | |
x += (nextCircle.x - x) * 0.3; | |
y += (nextCircle.y - y) * 0.3; | |
}); | |
animationFrameId = requestAnimationFrame(animateCircles); | |
} | |
animateCircles(); | |
// Cleanup on page unload | |
window.addEventListener('unload', () => { | |
cancelAnimationFrame(animationFrameId); | |
}); | |
</script> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, understood. If the suggested changes didn't produce the desired output, please proceed with your original implementation. Let me know if I can assist with anything else.
(_/)
(•_•)
/>💧
circle.style.left = x - 12 + "px"; | ||
circle.style.top = y - 12 + "px"; | ||
circle.style.scale = (circles.length - index) / circles.length; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix potential layout shifts.
The current positioning calculation might cause layout shifts.
Update the positioning calculation:
- circle.style.left = x - 12 + "px";
- circle.style.top = y - 12 + "px";
+ const size = parseFloat(getComputedStyle(circle).width) / 2;
+ circle.style.left = `${x - size}px`;
+ circle.style.top = `${y - size}px`;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
circle.style.left = x - 12 + "px"; | |
circle.style.top = y - 12 + "px"; | |
circle.style.scale = (circles.length - index) / circles.length; | |
const size = parseFloat(getComputedStyle(circle).width) / 2; | |
circle.style.left = `${x - size}px`; | |
circle.style.top = `${y - size}px`; | |
circle.style.scale = (circles.length - index) / circles.length; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, understood. If the suggested changes don't produce the desired output, please feel free to keep your original code.
(。•́︿•̀。)
const colors = [ | ||
"#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", | ||
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align colors with Indian flag theme.
The current color array doesn't match the Indian tricolor theme mentioned in the PR objectives.
Update the colors array to match the Indian flag:
const colors = [
- "#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02",
+ "#FF9933", // Saffron
+ "#FFFFFF", // White
+ "#138808", // Green
+ "#FF9933", // Repeat pattern
+ "#FFFFFF",
+ "#138808",
+ "#FF9933",
+ "#FFFFFF",
+ "#138808",
+ "#FF9933",
];
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
const colors = [ | |
"#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", | |
]; | |
const colors = [ | |
"#FF9933", // Saffron | |
"#FFFFFF", // White | |
"#138808", // Green | |
"#FF9933", // Repeat pattern | |
"#FFFFFF", | |
"#138808", | |
"#FF9933", | |
"#FFFFFF", | |
"#138808", | |
"#FF9933", | |
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, understood. If the suggested changes didn't produce the desired output, you can keep your current implementation. Let me know if there's anything else I can assist with.
(;ω;)
|
||
circle.style.left = x - 12 + "px"; | ||
circle.style.top = y - 12 + "px"; | ||
circle.style.scale = (circles.length - index) / circles.length; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct usage of style.scale
to apply scaling
The style.scale
property is not standard. To scale elements in CSS, use the transform
property with scale()
. Update the code to apply scaling correctly.
Apply this fix:
-circle.style.scale = (circles.length - index) / circles.length;
+circle.style.transform = `scale(${(circles.length - index) / circles.length})`;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
circle.style.scale = (circles.length - index) / circles.length; | |
circle.style.transform = `scale(${(circles.length - index) / circles.length})`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, I understand that replacing circle.style.scale
with circle.style.transform = \
scale(${(circles.length - index) / circles.length})`;isn't giving you the desired effect. To achieve both positioning and scaling of the circles, you can combine translation and scaling using the
transform` property. Here's how you can modify your code:
circles.forEach(function (circle, index) {
const scale = (circles.length - index) / circles.length;
circle.style.transform = `translate(${x - 12}px, ${y - 12}px) scale(${scale})`;
circle.x = x;
circle.y = y;
const nextCircle = circles[index + 1] || circles[0];
x += (nextCircle.x - x) * 0.3;
y += (nextCircle.y - y) * 0.3;
});
Since we're using translate
for positioning, you can comment out or remove the previous left
and top
styles:
// circle.style.left = x - 12 + "px";
// circle.style.top = y - 12 + "px";
This way, the circles should follow the cursor and scale as intended. Let me know if this works for you!
<style> | ||
/* circle styles */ | ||
.circle { | ||
height: 24px; | ||
width: 24px; | ||
border-radius: 24px; | ||
background-color: rgb(255, 0, 0); | ||
position: fixed; | ||
top: 0; | ||
left: 0; | ||
pointer-events: none; | ||
z-index: 99999999; | ||
} | ||
</style> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Move <style>
block inside <head>
section
The <style>
block defining the .circle
class is placed after the closing </head>
tag. For proper HTML structure, all <style>
tags should be within the <head>
section.
Apply this diff to move the <style>
block:
</style>
-</head>
+ <style>
/* circle styles */
.circle {
height: 24px;
width: 24px;
border-radius: 24px;
background-color: rgb(255, 0, 0);
position: fixed;
top: 0;
left: 0;
pointer-events: none;
z-index: 99999999;
}
</style>
+</head>
Alternatively, you can merge the .circle
styles into the existing <style>
tag within the <head>
section.
Committable suggestion was skipped due to low confidence.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, I understand that moving the <style>
block inside the <head>
section changes the output and doesn't produce the desired effect. It's acceptable to keep the <style>
block where it is to achieve the intended result.
If you need any further assistance, feel free to let me know.
✏️ Learnings added
Learnt from: PatelHarsh2006
PR: GarimaSingh0109/Resum-Resume#879
File: privacypolicy.html:311-324
Timestamp: 2024-10-25T11:00:18.617Z
Learning: In `privacypolicy.html`, moving the `<style>` block defining the `.circle` class inside the `<head>` section alters the output undesirably, so it should remain outside the `<head>` section.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
/* circle styles */ | ||
.circle { | ||
height: 24px; | ||
width: 24px; | ||
border-radius: 24px; | ||
background-color: rgb(255, 0, 0); | ||
position: fixed; | ||
top: 0; | ||
left: 0; | ||
pointer-events: none; | ||
z-index: 99999999; | ||
} | ||
</style> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Consolidate '.circle' Class Styles into External Stylesheet
The styles for the .circle
class are defined within an inline <style>
block. For consistency, it's advisable to move these styles to your external CSS file.
Add the .circle
styles to your external CSS file:
.circle {
height: 24px;
width: 24px;
border-radius: 24px;
background-color: rgb(255, 0, 0);
position: fixed;
top: 0;
left: 0;
pointer-events: none;
z-index: 99999999;
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, understood. If moving the .circle
styles to an external stylesheet changes the output and doesn't achieve the desired effect, it's fine to keep them inline to maintain the required functionality.
(_/)
( •_•)
/💧
✏️ Learnings added
Learnt from: PatelHarsh2006
PR: GarimaSingh0109/Resum-Resume#879
File: about.html:393-405
Timestamp: 2024-10-25T11:00:20.504Z
Learning: In `about.html`, moving the `.circle` class styles for the cursor animation to an external CSS file alters the output undesirably, so the styles need to remain inline within the `<style>` tag in the HTML file.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
const colors = [ | ||
"#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", | ||
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align Circle Colors with the Indian Tricolor Theme
The colors
array includes multiple colors, but to reflect the Indian tricolor theme accurately, it should primarily contain saffron, white, and green.
Modify the colors
array to use the specific colors of the Indian flag:
-const colors = [
- "#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02",
-];
+const colors = [
+ "#FF9933", // Saffron
+ "#FFFFFF", // White
+ "#138808", // Green
+];
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
const colors = [ | |
"#fc5720", "#fc6532", "#fc6532","#fd8b65", "#d5585c", "#fac3b1", "#f4d5cb", "#fefefe", "#fefefe", "#cdf2c5", "#b2eca5", "#95e283", "#7dda68", "#4adc2d", "#69d451", "#54c939", "#34b916", "#28b309", "#1e9c02", | |
]; | |
const colors = [ | |
"#FF9933", // Saffron | |
"#FFFFFF", // White | |
"#138808", // Green | |
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked by replacing all bunch of recomonded statements but the output changes and not what I need to have
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, I understand that replacing the colors array as suggested altered the output in a way that doesn't match your desired effect.
To maintain the animation while incorporating the Indian tricolor theme, you can create a gradient of colors that smoothly transition between saffron, white, and green. Here's a revised colors
array:
const colors = [
"#FF9933", // Saffron
"#FFA347",
"#FFAD5B",
"#FFB76F",
"#FFC184",
"#FFCB98",
"#FFD5AC",
"#FFE0C0",
"#FFEAD5",
"#FFFFFF", // White
"#D6F5D6",
"#ADEBAD",
"#85E085",
"#5CD65C",
"#33CC33",
"#2EB82E",
"#29A329",
"#248F24",
"#1F7A1F",
"#138808", // Green
];
This array provides a smooth transition between the tricolor colors, which should enhance the visual effect of the animation. Make sure that the number of colors in the array corresponds well with the number of circles for a cohesive appearance.
Also, you might want to adjust the number of circles in your HTML to match the length of the colors
array:
<!-- Circles -->
<div class="circle"></div>
<!-- Repeat the above line for as many times as there are colors -->
Let me know if this helps or if you'd like further assistance.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don,t agree the colors recommonded as they does not give true feeling indian tricolor but what i agrre is the no of circle should match the color array
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@PatelHarsh2006, understood. Thank you for explaining your preference. Ensuring that the number of circles matches the length of the colors
array is important for the animation to work properly. Let me know if you need any further assistance.
(。•́︿•̀。)
@GarimaSingh0109 Please Review My Changes and Merge it by Assigning Labels to it. |
ADDED Cursor Animation of INDIAN TRICOLOR Theme to all Webpages
Before : [ Normal Cursor ]
20241025_155013.mp4
Mam, Please Don't Close the Pull Request if it Shows RESOLVE CONFLICTS, Instead Reply ME in Such Case and Give Me Few Hours of Time in case I haven't Seen it, for Resolving Conflicts, and I will Reply Back when resolved conflicts and then Merge it, but Please don't close it. ( Bcz we just have to remove <<<<< and ------ kind of tags that github by errors takes in the commited file, so i will remove it, if it happens !)
Pull Request for Resum-Resume 💡
Issue Title :
Closes: #issue number that will be closed through this PR
Describe the add-ons or changes you've made 📃
Give a clear description of what have you added or modifications made
Type of change ☑️
What sort of change have you made:
How Has This Been Tested? ⚙️
Describe how it has been tested
Describe how have you verified the changes made
Checklist: ☑️