Skip to content

Footer complete#5

Open
vivtratx wants to merge 1 commit intodevfrom
footer
Open

Footer complete#5
vivtratx wants to merge 1 commit intodevfrom
footer

Conversation

@vivtratx
Copy link
Copy Markdown

@vivtratx vivtratx commented Apr 4, 2026

added some logos for discord and rh, but mostly just finished the footer. works for both mobile and desktop, using a dropdown for mobile.

Summary by CodeRabbit

  • New Features

    • Redesigned footer with structured link sections and improved layout.
    • Added responsive footer links component supporting mobile dropdown and desktop column views.
  • Style

    • Applied custom Google font styling to footer copyright and "Created with HackKit" text.
    • Updated footer background styling and removed borders from the work section.
    • Enhanced social media icon integration across footer.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 4, 2026

📝 Walkthrough

Walkthrough

The footer components were restructured and styled with Google fonts. A new FooterLinks component was introduced to handle responsive footer link sections. The Footer component was refactored from a placeholder to include a structured layout with logo, link sections, and social icons. Typography enhancements using Shadows_Into_Light font were applied across multiple components, and a minor border style was removed from WorkWithUs.

Changes

Cohort / File(s) Summary
Footer Component Restructuring
apps/web/src/components/landing/Footer.tsx, apps/web/src/components/landing/FooterLinks.tsx
Replaced footer placeholder with structured layout including logo, dynamically rendered link sections via FooterLinks, and social icon row. New FooterLinks component provides responsive mobile dropdown and desktop column layouts with exported footerSections constant.
Typography Integration
apps/web/src/components/landing/CreatedWithHackkit.tsx
Applied Shadows_Into_Light Google font to "Created with HackKit" link and changed container background from dark color to transparent.
Layout Refinement
apps/web/src/components/landing/WorkWithUs.tsx
Removed vertical border styling (border-y-2 border-muted-foreground) from section container.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes


🐰 A footer takes shape with newfound grace,
Google fonts dance in their rightful place,
Links reorganized in columns neat,
Social icons hop in rhythm and beat,
The landing page now looks complete! 🎨✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ 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 'Footer complete' accurately summarizes the main change: implementing a complete footer component with responsive mobile/desktop layouts, new styling, and section organization.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch footer

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
Copy Markdown

@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 (2)
apps/web/src/components/landing/CreatedWithHackkit.tsx (1)

4-9: Consider extracting the shared font instance.

The Shadows_Into_Light font is instantiated identically in three files (CreatedWithHackkit.tsx, Footer.tsx, FooterLinks.tsx). While Next.js deduplicates the font resource at build time, extracting the font configuration to a shared module would improve maintainability and reduce duplication.

💡 Example shared font module

Create a shared font file (e.g., apps/web/src/lib/fonts.ts):

import { Shadows_Into_Light } from "next/font/google";

export const shadowsIntoLight = Shadows_Into_Light({
  weight: "400",
  subsets: ["latin"],
});

Then import from the shared module in each component.

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

In `@apps/web/src/components/landing/CreatedWithHackkit.tsx` around lines 4 - 9,
Extract the duplicated Shadows_Into_Light instantiation into a single shared
export and import it from the three components; specifically, create a module
that exports a const (e.g., shadowsIntoLight) created by calling
Shadows_Into_Light({ weight: "400", subsets: ["latin"] }) and replace the local
instantiations in CreatedWithHackkit.tsx, Footer.tsx, and FooterLinks.tsx with
an import of that shared shadowsIntoLight symbol.
apps/web/src/components/landing/FooterLinks.tsx (1)

63-71: Add target="_blank" and rel="noopener noreferrer" for external links.

Several links in the footer data arrays point to external domains (MLH, GitHub, other hackathon sites). External links should open in a new tab with appropriate security attributes to prevent tabnapping.

♻️ Proposed fix for mobile dropdown links
 							<DropdownMenuItem key={idx}>
 								<Link
 									className="block text-sm font-semibold text-black"
 									href={link}
+									target={link.startsWith("http") ? "_blank" : undefined}
+									rel={link.startsWith("http") ? "noopener noreferrer" : undefined}
 								>
 									{name}
 								</Link>
 							</DropdownMenuItem>
♻️ Proposed fix for desktop links
 				{data.map(({ link, name }, idx) => (
 					<Link
 						href={link}
 						className="text-sm text-black hover:underline"
 						key={idx}
+						target={link.startsWith("http") ? "_blank" : undefined}
+						rel={link.startsWith("http") ? "noopener noreferrer" : undefined}
 					>
 						<span className={`${shadowsIntoLight.className}`}>
 							{name}
 						</span>
 					</Link>
 				))}

Also applies to: 84-93

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

In `@apps/web/src/components/landing/FooterLinks.tsx` around lines 63 - 71, The
footer link items rendered in FooterLinks (the map that returns
<DropdownMenuItem> + <Link> and the other desktop link map) need external links
to open in a new tab with security attrs; update the Link usage inside the map
callbacks (the one mapping data to <DropdownMenuItem> and the other mapping that
renders desktop links) to detect external URLs (e.g., href startsWith('http') or
otherwise not same-origin) and, for those links, add target="_blank" and
rel="noopener noreferrer" to the Link props so external domains (MLH, GitHub,
hackathon sites) open in a new tab securely.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/web/src/components/landing/Footer.tsx`:
- Around line 68-74: The paragraph element using the variable
shadowsIntoLight.className currently includes an invalid Tailwind utility
"text-s"; update the className string in the Footer component's <p> element to
use a valid font-size utility such as "text-sm" or "text-base" (e.g., replace
"text-s" with "text-sm") so Tailwind applies the intended sizing; ensure you
keep the rest of the classes (shadowsIntoLight.className, "text-center",
"text-black") unchanged.
- Around line 45-66: The social icon Link elements (e.g., the Link wrappers
around Twitter, Instagram, Facebook, Github and the Image for Discord) need
accessible labels and safe external link attributes: add an aria-label (or
title) to each Link describing the destination (e.g., "RowdyHacks on Twitter")
so screen readers can announce them, and add target="_blank" rel="noopener
noreferrer" to open external sites safely; ensure the Discord Image alt is
descriptive if needed. Also verify and update the Github Link href (currently
pointing to RowdyHacksX) to the correct RowdyHacksXII repository if required.

---

Nitpick comments:
In `@apps/web/src/components/landing/CreatedWithHackkit.tsx`:
- Around line 4-9: Extract the duplicated Shadows_Into_Light instantiation into
a single shared export and import it from the three components; specifically,
create a module that exports a const (e.g., shadowsIntoLight) created by calling
Shadows_Into_Light({ weight: "400", subsets: ["latin"] }) and replace the local
instantiations in CreatedWithHackkit.tsx, Footer.tsx, and FooterLinks.tsx with
an import of that shared shadowsIntoLight symbol.

In `@apps/web/src/components/landing/FooterLinks.tsx`:
- Around line 63-71: The footer link items rendered in FooterLinks (the map that
returns <DropdownMenuItem> + <Link> and the other desktop link map) need
external links to open in a new tab with security attrs; update the Link usage
inside the map callbacks (the one mapping data to <DropdownMenuItem> and the
other mapping that renders desktop links) to detect external URLs (e.g., href
startsWith('http') or otherwise not same-origin) and, for those links, add
target="_blank" and rel="noopener noreferrer" to the Link props so external
domains (MLH, GitHub, hackathon sites) open in a new tab securely.
🪄 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: 4d9d06d3-a1a2-4c08-a539-8a7115a9a11b

📥 Commits

Reviewing files that changed from the base of the PR and between 664d482 and 4585476.

⛔ Files ignored due to path filters (2)
  • apps/web/public/img/assets/discord-logo.png is excluded by !**/*.png
  • apps/web/public/img/logo/rh-logo-black.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • apps/web/src/components/landing/CreatedWithHackkit.tsx
  • apps/web/src/components/landing/Footer.tsx
  • apps/web/src/components/landing/FooterLinks.tsx
  • apps/web/src/components/landing/WorkWithUs.tsx

Comment on lines +45 to +66
<Link href="https://twitter.com/rowdyhacks/">
<Twitter className="invert dark:invert-0" />
</Link>
<Link href="https://www.instagram.com/rowdyhacks/">
<Instagram className="invert dark:invert-0" />
</Link>
<Link href="https://www.facebook.com/UTSA.ACM">
<Facebook className="invert dark:invert-0" />
</Link>
<Link href="https://github.com/acmutsa/RowdyHacksX">
<Github className="invert dark:invert-0" />
</Link>
<Link href="https://go.rowdyhacks.org/discord">
<Image
className="select-none"
src="/img/assets/discord-logo.png"
alt="Discord logo"
width={20}
height={20}
/>
</Link>
</div>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add accessibility attributes to social icon links.

The social media links contain only icons without text, which makes them inaccessible to screen reader users. Additionally, external links should include target="_blank" with rel="noopener noreferrer" for security and UX.

♿ Proposed fix with accessibility and security attributes
-						<Link href="https://twitter.com/rowdyhacks/">
-							<Twitter className="invert dark:invert-0" />
+						<Link href="https://twitter.com/rowdyhacks/" target="_blank" rel="noopener noreferrer" aria-label="Twitter">
+							<Twitter className="invert dark:invert-0" aria-hidden="true" />
 						</Link>
-						<Link href="https://www.instagram.com/rowdyhacks/">
-							<Instagram className="invert dark:invert-0" />
+						<Link href="https://www.instagram.com/rowdyhacks/" target="_blank" rel="noopener noreferrer" aria-label="Instagram">
+							<Instagram className="invert dark:invert-0" aria-hidden="true" />
 						</Link>
-						<Link href="https://www.facebook.com/UTSA.ACM">
-							<Facebook className="invert dark:invert-0" />
+						<Link href="https://www.facebook.com/UTSA.ACM" target="_blank" rel="noopener noreferrer" aria-label="Facebook">
+							<Facebook className="invert dark:invert-0" aria-hidden="true" />
 						</Link>
-						<Link href="https://github.com/acmutsa/RowdyHacksX">
-							<Github className="invert dark:invert-0" />
+						<Link href="https://github.com/acmutsa/RowdyHacksXII" target="_blank" rel="noopener noreferrer" aria-label="GitHub">
+							<Github className="invert dark:invert-0" aria-hidden="true" />
 						</Link>
-						<Link href="https://go.rowdyhacks.org/discord">
+						<Link href="https://go.rowdyhacks.org/discord" target="_blank" rel="noopener noreferrer" aria-label="Discord">
 							<Image
-								className="select-none"
+								className="select-none"
 								src="/img/assets/discord-logo.png"
 								alt="Discord logo"
+								aria-hidden="true"
 								width={20}
 								height={20}
 							/>
 						</Link>

Note: The GitHub link currently points to RowdyHacksX but this PR is for RowdyHacksXII - verify if this should be updated.

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

In `@apps/web/src/components/landing/Footer.tsx` around lines 45 - 66, The social
icon Link elements (e.g., the Link wrappers around Twitter, Instagram, Facebook,
Github and the Image for Discord) need accessible labels and safe external link
attributes: add an aria-label (or title) to each Link describing the destination
(e.g., "RowdyHacks on Twitter") so screen readers can announce them, and add
target="_blank" rel="noopener noreferrer" to open external sites safely; ensure
the Discord Image alt is descriptive if needed. Also verify and update the
Github Link href (currently pointing to RowdyHacksX) to the correct
RowdyHacksXII repository if required.

Comment on lines +68 to +74
<p
className={`${shadowsIntoLight.className} text-s text-center text-black`}
>
Made with &lt;/&gt; &amp; ♥ @ RowdyHacks
<br />© RowdyHacks &amp; Association of Computing Machinery
at UTSA 2026. All Rights Reserved.
</p>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix invalid Tailwind class text-s.

text-s is not a valid Tailwind CSS utility class. The valid options are text-xs, text-sm, text-base, etc.

🐛 Proposed fix
 				<p
-					className={`${shadowsIntoLight.className} text-s text-center text-black`}
+					className={`${shadowsIntoLight.className} text-sm text-center text-black`}
 				>
📝 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
<p
className={`${shadowsIntoLight.className} text-s text-center text-black`}
>
Made with &lt;/&gt; &amp; @ RowdyHacks
<br />© RowdyHacks &amp; Association of Computing Machinery
at UTSA 2026. All Rights Reserved.
</p>
<p
className={`${shadowsIntoLight.className} text-sm text-center text-black`}
>
Made with &lt;/&gt; &amp; @ RowdyHacks
<br />© RowdyHacks &amp; Association of Computing Machinery
at UTSA 2026. All Rights Reserved.
</p>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/src/components/landing/Footer.tsx` around lines 68 - 74, The
paragraph element using the variable shadowsIntoLight.className currently
includes an invalid Tailwind utility "text-s"; update the className string in
the Footer component's <p> element to use a valid font-size utility such as
"text-sm" or "text-base" (e.g., replace "text-s" with "text-sm") so Tailwind
applies the intended sizing; ensure you keep the rest of the classes
(shadowsIntoLight.className, "text-center", "text-black") unchanged.

@deeg454
Copy link
Copy Markdown

deeg454 commented Apr 10, 2026

added some logos for discord and rh, but mostly just finished the footer. works for both mobile and desktop, using a dropdown for mobile.

Summary by CodeRabbit

  • New Features

    • Redesigned footer with structured link sections and improved layout.
    • Added responsive footer links component supporting mobile dropdown and desktop column views.
  • Style

    • Applied custom Google font styling to footer copyright and "Created with HackKit" text.
    • Updated footer background styling and removed borders from the work section.
    • Enhanced social media icon integration across footer.

Looks good to go, just need you to increase the font thickness or size to make links more visible same goes for RH/HackKit( this one needs an appropriately colroed fill) logos

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.

2 participants