Skip to content

Redesign Footer Component#2

Open
Rahmankhattak711 wants to merge 3 commits intoAOSSIE-Org:mainfrom
Rahmankhattak711:ui/footer-redesign
Open

Redesign Footer Component#2
Rahmankhattak711 wants to merge 3 commits intoAOSSIE-Org:mainfrom
Rahmankhattak711:ui/footer-redesign

Conversation

@Rahmankhattak711
Copy link

@Rahmankhattak711 Rahmankhattak711 commented Feb 27, 2026

This PR introduces a full redesign of the Footer component for PictoPy, enhancing its visual appeal, responsiveness, and dark/light mode compatibility.

Changes Implemented

Added a soft radial glow background for subtle depth.

Implemented gradient text for the logo and Discord link with smooth hover effects.

Added large background text (“PictoPy”) as a decorative element.

Improved responsive layout for both mobile and desktop devices.

Updated divider and copyright section for better alignment and aesthetics.

Ensured dark mode support with smooth color transitions.

Benefits

Modern and clean design improves user experience.

Enhances brand identity with gradient logo and background text.

Fully responsive and accessible across devices and themes.

Summary by CodeRabbit

  • New Features

    • Enhanced footer with decorative visuals: soft radial glow, large background branding text, layered overlays, top-row label and Discord link, plus divider and copyright section
  • Style

    • Updated gradient text, hover effects, spacing, min-height layout and transition timing for improved visual hierarchy and polish

@github-actions github-actions bot added no-issue-linked PR is not linked to any issue configuration Configuration file changes frontend Changes to frontend code javascript JavaScript/TypeScript code changes size/M Medium PR (51-200 lines changed) first-time-contributor First PR of an external contributor pending-coderabbit-review labels Feb 27, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 27, 2026

Walkthrough

Replaced the Footer component markup with a visually rich footer: added a soft radial glow, oversized background "PictoPy" text, gradient "PictoPy" label, a top-row Discord link with updated styling, a divider, copyright line, and container/class adjustments (min-height, absolute positioning, transitions).

Changes

Cohort / File(s) Summary
Footer Component
src/Pages/Footer/Footer.tsx
Reworked footer structure and styling: introduced radial glow, large background "PictoPy" text, gradient logo/label with hover effects, top-row Discord link restyled, divider and copyright line added, container spacing/class updates (min-h, absolute positioning, transitions).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

Typescript Lang

Poem

🐰 I hopped in with pixels, a glow and a cheer,
PictoPy towering, elegant and clear,
A Discord link twinkles beneath the moon,
Divider hums softly, layout in tune,
Hooray — the footer now bounces with cheer!

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Redesign Footer Component' directly and accurately summarizes the main change in the pull request, which is a comprehensive redesign of the Footer component with new visual elements, styling, and layout improvements.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share

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: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Pages/Footer/Footer.tsx`:
- Around line 32-33: The Footer component contains hard-coded user-visible
strings ("PictoPy", "Made with love by AOSSIE team", and the copyright line)
that must be externalized for i18n; update Footer.tsx to import and use your
app's i18n helper (for example useTranslation or t) and replace the literal
strings with translation keys (e.g., footer.title, footer.tagline,
footer.copyright) and move the actual text into the locale resource file(s);
ensure you reference the Footer component (Footer or default export) and update
both occurrences of "PictoPy" (the h1 and wherever else), the "Made with love by
AOSSIE team" line, and the copyright line to use the translation function.
- Around line 1-2: The Footer component uses dynamic client-side content (new
Date().getFullYear()) but lacks the Next.js client directive; add the "use
client" directive as the very first line of src/Pages/Footer/Footer.tsx (before
any imports) so the component renders on the client, then leave the existing
imports (e.g., React import and FaDiscord) and component code unchanged.
- Around line 46-54: The Discord anchor in Footer.tsx (the <a> element with href
"https://discord.com/..." and the FaDiscord icon) lacks an accessible label; add
an aria-label on that anchor such as aria-label="AOSSIE team on Discord (opens
in new tab)" to clearly indicate to screen readers that this is a
Discord/external link while keeping target="_blank" and rel attributes intact so
the visual text can remain unchanged.
- Around line 12-33: The large decorative "PictoPy" heading is semantic HTML but
purely visual; replace the <h1> element in the Footer component (the block
rendering "PictoPy") with a non-semantic element (e.g., <div> or <span>), keep
the existing className entirely, and add aria-hidden="true" to that element so
screen readers ignore it; ensure no other heading roles are lost in Footer and
that visible styles remain unchanged.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1496367 and 8e34675.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • src/Pages/Footer/Footer.tsx

Comment on lines +1 to +2
import type React from "react";
import { FaDiscord } from "react-icons/fa";
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Missing "use client" directive for NextJS.

This component uses dynamic content (new Date().getFullYear()) which requires client-side rendering. Per NextJS guidelines, add the "use client" directive at the top of the file.

Proposed fix
+"use client";
+
 import type React from "react";
 import { FaDiscord } from "react-icons/fa";
📝 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.

Suggested change
import type React from "react";
import { FaDiscord } from "react-icons/fa";
"use client";
import type React from "react";
import { FaDiscord } from "react-icons/fa";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 1 - 2, The Footer component uses
dynamic client-side content (new Date().getFullYear()) but lacks the Next.js
client directive; add the "use client" directive as the very first line of
src/Pages/Footer/Footer.tsx (before any imports) so the component renders on the
client, then leave the existing imports (e.g., React import and FaDiscord) and
component code unchanged.

Comment on lines +32 to +33
PictoPy
</h1>
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

User-visible strings should be externalized for internationalization (i18n).

Per coding guidelines, user-visible strings should be externalized to resource files. The following hardcoded strings should be moved to an i18n solution:

  • "PictoPy" (lines 32, 42)
  • "Made with love by AOSSIE team" (line 53)
  • "© ... PictoPy. All rights reserved." (line 62)

Also applies to: 42-43, 53-53, 62-62

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 32 - 33, The Footer component
contains hard-coded user-visible strings ("PictoPy", "Made with love by AOSSIE
team", and the copyright line) that must be externalized for i18n; update
Footer.tsx to import and use your app's i18n helper (for example useTranslation
or t) and replace the literal strings with translation keys (e.g., footer.title,
footer.tagline, footer.copyright) and move the actual text into the locale
resource file(s); ensure you reference the Footer component (Footer or default
export) and update both occurrences of "PictoPy" (the h1 and wherever else), the
"Made with love by AOSSIE team" line, and the copyright line to use the
translation function.

Comment on lines +46 to +54
<a
href="https://discord.com/channels/1022871757289422898/1311271974630330388"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-3 text-sm font-medium text-transparent bg-clip-text bg-gradient-to-r from-yellow-400 to-green-400 hover:opacity-80 transition-all duration-300"
>
<FaDiscord className="text-yellow-400 dark:text-green-400 text-lg transition-transform duration-300 hover:scale-110" />
Made with love by AOSSIE team
</a>
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Improve accessibility for Discord link.

The link text "Made with love by AOSSIE team" doesn't indicate to screen reader users that this is a Discord link. Add an aria-label to provide better context.

Proposed fix
           <a
             href="https://discord.com/channels/1022871757289422898/1311271974630330388"
             target="_blank"
             rel="noopener noreferrer"
+            aria-label="Join our Discord - Made with love by AOSSIE team"
             className="flex items-center gap-3 text-sm font-medium text-transparent bg-clip-text bg-gradient-to-r from-yellow-400 to-green-400 hover:opacity-80 transition-all duration-300"
           >
📝 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.

Suggested change
<a
href="https://discord.com/channels/1022871757289422898/1311271974630330388"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-3 text-sm font-medium text-transparent bg-clip-text bg-gradient-to-r from-yellow-400 to-green-400 hover:opacity-80 transition-all duration-300"
>
<FaDiscord className="text-yellow-400 dark:text-green-400 text-lg transition-transform duration-300 hover:scale-110" />
Made with love by AOSSIE team
</a>
<a
href="https://discord.com/channels/1022871757289422898/1311271974630330388"
target="_blank"
rel="noopener noreferrer"
aria-label="Join our Discord - Made with love by AOSSIE team"
className="flex items-center gap-3 text-sm font-medium text-transparent bg-clip-text bg-gradient-to-r from-yellow-400 to-green-400 hover:opacity-80 transition-all duration-300"
>
<FaDiscord className="text-yellow-400 dark:text-green-400 text-lg transition-transform duration-300 hover:scale-110" />
Made with love by AOSSIE team
</a>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 46 - 54, The Discord anchor in
Footer.tsx (the <a> element with href "https://discord.com/..." and the
FaDiscord icon) lacks an accessible label; add an aria-label on that anchor such
as aria-label="AOSSIE team on Discord (opens in new tab)" to clearly indicate to
screen readers that this is a Discord/external link while keeping
target="_blank" and rel attributes intact so the visual text can remain
unchanged.

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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Pages/Footer/Footer.tsx`:
- Line 63: In the Footer component (Footer.tsx) the JSX is rendering the literal
text "(new Date().getFullYear())" because the expression is wrapped in
parentheses instead of JSX interpolation; replace the parentheses around new
Date().getFullYear() with curly braces so the expression is evaluated (i.e.,
update the JSX node that currently reads © (new Date().getFullYear()) PictoPy to
use © {new Date().getFullYear()} PictoPy).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 761764c1-50c3-4228-a83c-1536b03b47a9

📥 Commits

Reviewing files that changed from the base of the PR and between 8e34675 and e515531.

📒 Files selected for processing (1)
  • src/Pages/Footer/Footer.tsx

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: 1

♻️ Duplicate comments (3)
src/Pages/Footer/Footer.tsx (3)

47-55: ⚠️ Potential issue | 🟡 Minor

Give the Discord link an explicit accessible name.

The visible copy is branding-focused and does not clearly expose “Discord” or “opens in new tab” to assistive tech. Add an aria-label that includes both.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 47 - 55, Add an explicit accessible
name to the Discord link by adding an aria-label on the anchor rendered in
Footer (the <a> element that wraps FaDiscord and the "Made with love by AOSSIE
team" text) that mentions "Discord" and that it opens in a new tab (e.g., "Open
AOSSIE Discord in new tab"); update the anchor element in Footer.tsx so
assistive tech reads a clear, descriptive label while keeping existing visual
text and attributes.

33-55: 🛠️ Refactor suggestion | 🟠 Major

Externalize the footer copy instead of hardcoding it.

PictoPy, Made with love by AOSSIE team, and the copyright string should come from translation resources rather than literals in the component. As per coding guidelines, user-visible strings should be externalized to resource files (i18n).

Also applies to: 63-63

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 33 - 55, The footer currently
hardcodes user-facing strings ("PictoPy", "Made with love by AOSSIE team", and
the copyright) inside the Footer component; replace these literals with i18n
lookups from your translation resources (e.g., use the translation hook/utility
your app uses such as t('footer.brand'), t('footer.credit'),
t('footer.copyright')) in the Footer component so all visible strings are
externalized; update the JSX nodes that render the brand (the <p> with
"PictoPy"), the Discord anchor text ("Made with love by AOSSIE team"), and the
copyright output to use those translation keys.

13-34: ⚠️ Potential issue | 🟡 Minor

Use a non-semantic element for the decorative background title.

This oversized PictoPy text is visual only, so keeping it as <h1> adds noise to the accessibility tree. Replace it with a <div>/<span> and mark it aria-hidden="true".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 13 - 34, Replace the decorative
<h1> that renders the oversized "PictoPy" background text with a non-semantic
element (e.g., <div> or <span>) and add aria-hidden="true" so it is removed from
the accessibility tree; locate the element rendering "PictoPy" in Footer.tsx
(the element with the long className containing text-[260px], bg-clip-text,
select-none, pointer-events-none) and update it accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Pages/Footer/Footer.tsx`:
- Around line 47-50: The Discord link in Footer.tsx currently points at a
private channel URL (the <a> element href) which fails for non-members; replace
that href with a public invite or canonical server entry point (e.g., a
discord.gg invite or the server's public landing URL) so visitors land on the
community join flow, and ideally source the URL from a central constant or env
var (e.g., EXTERNAL_LINKS.DISCORD or process.env.DISCORD_INVITE) instead of
hardcoding it in the <a> tag.

---

Duplicate comments:
In `@src/Pages/Footer/Footer.tsx`:
- Around line 47-55: Add an explicit accessible name to the Discord link by
adding an aria-label on the anchor rendered in Footer (the <a> element that
wraps FaDiscord and the "Made with love by AOSSIE team" text) that mentions
"Discord" and that it opens in a new tab (e.g., "Open AOSSIE Discord in new
tab"); update the anchor element in Footer.tsx so assistive tech reads a clear,
descriptive label while keeping existing visual text and attributes.
- Around line 33-55: The footer currently hardcodes user-facing strings
("PictoPy", "Made with love by AOSSIE team", and the copyright) inside the
Footer component; replace these literals with i18n lookups from your translation
resources (e.g., use the translation hook/utility your app uses such as
t('footer.brand'), t('footer.credit'), t('footer.copyright')) in the Footer
component so all visible strings are externalized; update the JSX nodes that
render the brand (the <p> with "PictoPy"), the Discord anchor text ("Made with
love by AOSSIE team"), and the copyright output to use those translation keys.
- Around line 13-34: Replace the decorative <h1> that renders the oversized
"PictoPy" background text with a non-semantic element (e.g., <div> or <span>)
and add aria-hidden="true" so it is removed from the accessibility tree; locate
the element rendering "PictoPy" in Footer.tsx (the element with the long
className containing text-[260px], bg-clip-text, select-none,
pointer-events-none) and update it accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 56d8d06f-ab5a-4598-8e08-78a65a2d553f

📥 Commits

Reviewing files that changed from the base of the PR and between e515531 and 4b96a58.

📒 Files selected for processing (1)
  • src/Pages/Footer/Footer.tsx

Comment on lines +47 to +50
<a
href="https://discord.com/channels/1022871757289422898/1311271974630330388"
target="_blank"
rel="noopener noreferrer"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Replace the private channel deep link with a public Discord entry point.

https://discord.com/channels/... only works for users who already belong to that server. In a public footer, this will send many visitors into an auth/permission dead end instead of the community landing flow.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Pages/Footer/Footer.tsx` around lines 47 - 50, The Discord link in
Footer.tsx currently points at a private channel URL (the <a> element href)
which fails for non-members; replace that href with a public invite or canonical
server entry point (e.g., a discord.gg invite or the server's public landing
URL) so visitors land on the community join flow, and ideally source the URL
from a central constant or env var (e.g., EXTERNAL_LINKS.DISCORD or
process.env.DISCORD_INVITE) instead of hardcoding it in the <a> tag.

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

Labels

configuration Configuration file changes first-time-contributor First PR of an external contributor frontend Changes to frontend code javascript JavaScript/TypeScript code changes no-issue-linked PR is not linked to any issue pending-coderabbit-review size/M Medium PR (51-200 lines changed)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant