Skip to content

Add contact section#39

Merged
nitinmohan18 merged 5 commits into
mainfrom
add-contact-section
Jun 30, 2026
Merged

Add contact section#39
nitinmohan18 merged 5 commits into
mainfrom
add-contact-section

Conversation

@nitinmohan18

@nitinmohan18 nitinmohan18 commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR improves the visual hierarchy and overall UI consistency across the Home, University, Contact, and Footer sections to deliver a cleaner, more polished, and responsive user experience. It also cleanly resolves merge conflicts with main.


Related Issue

Closes #


Type of Change

  • Feature
  • Bug Fix
  • Documentation
  • Refactor
  • Performance Improvement
  • CI / Build
  • Other

What Changed?

Home

  • Improved visual hierarchy.
  • Refined spacing and content alignment.

University

  • Improved spacing and section alignment.
  • Enhanced typography hierarchy and visual consistency.

Contact

  • Refined layout and visual hierarchy.
  • Improved typography and spacing.
  • Enhanced form sizing, alignment, and responsiveness.
  • Improved desktop and mobile presentation.

Footer

  • Improved spacing and alignment.
  • Enhanced visual hierarchy by formatting navigation lists into responsive 2-column grids on mobile.

Other Changes

  • Fixed formatting issues.
  • Fixed CI/check-related issues.
  • Resolved merge conflicts with the latest main branch.

Screenshots (UI Changes Only)

(Attach any necessary screenshots or recordings here)


Testing

  • Verified desktop responsiveness.
  • Verified mobile responsiveness.
  • Confirmed existing functionality remains unchanged.
  • No known regressions introduced.

Checklist

Before requesting a review, confirm the following:

  • My branch is up to date with the latest main.
  • My code follows the project's coding standards.
  • I have formatted the modified files (npx prettier --write <file>).
  • npm run format:check passes.
  • npm run lint passes.
  • npm run typecheck passes.
  • npm run build passes.
  • I have updated documentation if required.
  • I have tested my changes locally.
  • This Pull Request focuses on a single feature or fix.

Additional Notes

None.

@vercel

vercel Bot commented Jun 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hyper-learning-tech Ready Ready Preview, Comment Jun 30, 2026 8:16pm

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds a new client-side ContactSection component with an accompanying CSS module, wires it into the contact page and home page, and reorders the navbar's Contact link before About. Separately adjusts Tailwind spacing, grid layout, and responsive sizing classes in footer, hero, and universities components.

Changes

Contact Section feature

Layer / File(s) Summary
ContactSection component and styles
components/contact/ContactSection.tsx, components/contact/ContactSection.module.css
New client component manages name/email/subject/message form state, logs submissions, and renders left-column info plus a right-column contact card; paired CSS module defines layout, divider, card glow, icon ring animations, and responsive breakpoints.
Wiring into pages and navbar
app/(public)/contact/page.tsx, app/(public)/page.tsx, components/navbar.tsx
Contact page renders ContactSection instead of a placeholder div, home page renders it after the Universities section, and navbar's navLinks array moves "Contact" before "About".

Footer, hero, and universities spacing adjustments

Layer / File(s) Summary
Footer grid layout updates
components/footer.tsx
Navigation container switches to a grid layout, Company links become a 2-column grid, Feature Cards grid base changes to 2 columns, and bottom section padding is reduced.
Hero spacing and sizing tweaks
features/landing/hero.tsx
Adjusts container padding, headline font sizing, chat bubble spacing/padding, related-questions row padding, and CTA row spacing across breakpoints.
Universities card responsive styling
features/landing/universities.tsx
Updates section min-height/padding, card rounding/padding, badge icon sizing, heading/description typography, and Explore button sizing.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant ContactSection
  participant Console

  User->>ContactSection: type into input (handleChange)
  ContactSection->>ContactSection: update formData state
  User->>ContactSection: submit form (handleSubmit)
  ContactSection->>ContactSection: e.preventDefault()
  ContactSection->>Console: log formData
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~20 minutes

Possibly related PRs

  • imuniqueshiv/HyperLearningTech#16: Both PRs modify features/landing/universities.tsx, with the main PR tweaking styling on a component that PR #16 substantially refactored.
  • imuniqueshiv/HyperLearningTech#21: Both PRs modify components/navbar.tsx; reordering the Contact link in this PR interacts with the scroll-based active-section logic from PR #21.
  • imuniqueshiv/HyperLearningTech#24: Both PRs touch landing navigation/section logic—this PR's navbar reorder and new ContactSection affect the active-section behavior implemented in PR #24.

Suggested reviewers

  • imuniqueshiv
  • RamuuXfree

A rabbit hopped through fields of code,
Stitched a contact form, lightened the load.
Gold dividers gleam, the cards now glow,
Nav links reordered, ready to go.
🐇✉️ Hop, click, send — off the message flows!

🚥 Pre-merge checks | ✅ 4 | ❌ 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 (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly reflects the main change: adding a contact section, which is a central part of the PR.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ 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 add-contact-section

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 (3)
components/contact/ContactSection.module.css (3)

1-1: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Consider next/font instead of a CSS @import for Google Fonts.

A render-blocking @import adds an extra round trip; next/font self-hosts and optimizes font loading in Next.js apps.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/contact/ContactSection.module.css` at line 1, The ContactSection
stylesheet is loading Google Fonts via a render-blocking CSS `@import`, so replace
that approach with next/font for the fonts used by ContactSectionModule and its
consumers. Move the font setup to the appropriate Next.js entry point or shared
layout, then update the ContactSection.module.css and any related class usage to
rely on the imported font variables/classes instead of the CSS import.

16-26: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Unused .sr-only rule — JSX uses Tailwind's built-in utility instead.

The labels apply the literal "sr-only" Tailwind class (e.g. components/contact/ContactSection.tsx line 144), not styles.sr-only, so this CSS-module rule is dead code.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/contact/ContactSection.module.css` around lines 16 - 26, The
`.sr-only` rule in ContactSection.module.css is unused because
ContactSection.tsx applies the Tailwind utility class string rather than the
CSS-module class. Remove the dead CSS-module selector or, if the intent was to
use the module, update the JSX in ContactSection to reference the module class
consistently. Locate this in the `.sr-only` rule and the labels in
ContactSection.

1-26: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Stylelint findings to clean up.

Static analysis flags: deprecated clip property (line 23, prefer clip-path: inset(50%)), quoted font-family names (lines 8, 412), @import notation style (line 1), non-kebab-case keyframe name signalPulse (line 329), and missing empty lines before declarations (487, 496-498) caused by comments embedded mid-value in box-shadow lists.

Also applies to: 329-329, 412-412, 487-498

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/contact/ContactSection.module.css` around lines 1 - 26, Stylelint
is flagging several formatting issues in this stylesheet: update the hidden-text
helper in .sr-only to replace the deprecated clip usage with the preferred
clipping approach, remove unnecessary quotes around font-family names in
.contactSection and elsewhere, and normalize the top-level `@import` syntax to the
expected style. Also rename the signalPulse keyframes to kebab-case and fix the
box-shadow declarations that have inline comments breaking declaration spacing
so there are proper empty lines before those declarations.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@components/contact/ContactSection.tsx`:
- Around line 129-131: The Mail icon in ContactSection is using styles.heroIcon,
but that class is not defined in the CSS module, so the icon gets no styling.
Update the ContactSection component to use an existing class or add a matching
heroIcon rule in ContactSection.module.css, and make sure the class name
referenced by Mail aligns with the module export.
- Around line 33-36: The ContactSection form submission currently only calls
preventDefault and logs formData, so it never sends data anywhere. Update
handleSubmit in ContactSection to post the payload to the intended contact
endpoint, or if the endpoint is not available yet, make the form explicitly
placeholder-only and remove the misleading submit behavior. Use the existing
handleSubmit and formData flow to locate the change.

---

Nitpick comments:
In `@components/contact/ContactSection.module.css`:
- Line 1: The ContactSection stylesheet is loading Google Fonts via a
render-blocking CSS `@import`, so replace that approach with next/font for the
fonts used by ContactSectionModule and its consumers. Move the font setup to the
appropriate Next.js entry point or shared layout, then update the
ContactSection.module.css and any related class usage to rely on the imported
font variables/classes instead of the CSS import.
- Around line 16-26: The `.sr-only` rule in ContactSection.module.css is unused
because ContactSection.tsx applies the Tailwind utility class string rather than
the CSS-module class. Remove the dead CSS-module selector or, if the intent was
to use the module, update the JSX in ContactSection to reference the module
class consistently. Locate this in the `.sr-only` rule and the labels in
ContactSection.
- Around line 1-26: Stylelint is flagging several formatting issues in this
stylesheet: update the hidden-text helper in .sr-only to replace the deprecated
clip usage with the preferred clipping approach, remove unnecessary quotes
around font-family names in .contactSection and elsewhere, and normalize the
top-level `@import` syntax to the expected style. Also rename the signalPulse
keyframes to kebab-case and fix the box-shadow declarations that have inline
comments breaking declaration spacing so there are proper empty lines before
those declarations.
🪄 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: c10190a4-f416-48fa-9f13-f3dafc00f0b7

📥 Commits

Reviewing files that changed from the base of the PR and between a9879ce and 1e38aa2.

📒 Files selected for processing (8)
  • app/(public)/contact/page.tsx
  • app/(public)/page.tsx
  • components/contact/ContactSection.module.css
  • components/contact/ContactSection.tsx
  • components/footer.tsx
  • components/navbar.tsx
  • features/landing/hero.tsx
  • features/landing/universities.tsx

Comment on lines +33 to +36
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
console.log("Form submitted:", formData);
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== files ==\n'
git ls-files | rg '(^|/)ContactSection\.tsx$|(^|/)contact(\.|/)|(^|/)api/|(^|/)actions/|(^|/)route\.(ts|tsx|js|jsx)$|(^|/)server'
printf '\n== search ContactSection ==\n'
rg -n "handleSubmit|Form submitted:|ContactSection|Add contact section|contact" components src app pages -g '!**/node_modules/**' || true

Repository: imuniqueshiv/HyperLearningTech

Length of output: 2255


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Map the target file and nearby symbols before reading it.
ast-grep outline components/contact/ContactSection.tsx --view expanded || true

# Read the file with line numbers.
wc -l components/contact/ContactSection.tsx
sed -n '1,220p' components/contact/ContactSection.tsx

# Search for any contact submission backend or action wiring.
rg -n "fetch\(|axios|/api/.*contact|emailjs|formspree|server action|use server|sendMessage|sendMail|contact.*submit|submitted" . -g '!**/node_modules/**' || true

Repository: imuniqueshiv/HyperLearningTech

Length of output: 9248


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Show the repo root structure around likely app/api locations if present.
fd -td . . | sed -n '1,200p'

Repository: imuniqueshiv/HyperLearningTech

Length of output: 7773


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate the target component and any API route or mail handler relevant to contact submissions.
fd 'ContactSection.tsx|route.ts|route.js|contact' components app src pages -a 2>/dev/null | sed -n '1,200p'

Repository: imuniqueshiv/HyperLearningTech

Length of output: 446


Contact form still doesn’t send anything. There’s no contact API route in the repo, and handleSubmit only prevents default and logs the payload. Wire this to the intended endpoint, or make the form explicitly placeholder-only before merge.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/contact/ContactSection.tsx` around lines 33 - 36, The
ContactSection form submission currently only calls preventDefault and logs
formData, so it never sends data anywhere. Update handleSubmit in ContactSection
to post the payload to the intended contact endpoint, or if the endpoint is not
available yet, make the form explicitly placeholder-only and remove the
misleading submit behavior. Use the existing handleSubmit and formData flow to
locate the change.

Comment on lines +129 to +131
<div className={styles.mailIconCircle}>
<Mail className={styles.heroIcon} size={22} strokeWidth={1.5} />
</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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

styles.heroIcon is undefined — class not defined in the CSS module.

The CSS module only defines .heroIconWrapper, .mailIconCircle, .signalRing, etc.; no .heroIcon rule exists, so this className resolves to undefined and applies no styling.

Add the missing rule (e.g. in ContactSection.module.css)
.heroIcon {
  position: relative;
  z-index: 3;
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/contact/ContactSection.tsx` around lines 129 - 131, The Mail icon
in ContactSection is using styles.heroIcon, but that class is not defined in the
CSS module, so the icon gets no styling. Update the ContactSection component to
use an existing class or add a matching heroIcon rule in
ContactSection.module.css, and make sure the class name referenced by Mail
aligns with the module export.

@nitinmohan18 nitinmohan18 merged commit 173c3d6 into main Jun 30, 2026
4 of 8 checks passed
@github-actions

Copy link
Copy Markdown

🎉 Congratulations @nitinmohan18!

Thank you for contributing to HyperLearningTech.

Your pull request has been successfully merged into main.

📦 Merge Summary

🚀 Keep Contributing

  • Follow the CONTRIBUTING.md guidelines.
  • Keep each Pull Request focused on a single feature or fix.
  • Run formatting, linting, type checking, and a production build before opening a PR.

Thank you for helping make HyperLearningTech better.

Happy Coding! 🚀

@nitinmohan18 nitinmohan18 deleted the add-contact-section branch June 30, 2026 20:26
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.

1 participant