Skip to content

feat(ui): add premium contact section and refine support experience#38

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

feat(ui): add premium contact section and refine support experience#38
nitinmohan18 merged 3 commits into
mainfrom
add-contact-section

Conversation

@nitinmohan18

@nitinmohan18 nitinmohan18 commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

Introduced a redesigned Contact section with a premium support-focused interface, improving visual appeal, usability, and consistency with the Hyper Learning design system.


Related Issue

Closes #


Type of Change

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

What Changed?

  • Added a premium Contact section.
  • Designed a clean support-focused layout.
  • Added dedicated options for reporting bugs, requesting support, and sharing feedback.
  • Implemented a modern contact form with improved visual hierarchy.
  • Enhanced spacing, typography, and alignment.
  • Added subtle lighting effects and decorative background elements.
  • Improved consistency with the overall Hyper Learning design language.
  • Optimized the section for desktop and responsive layouts.

Testing

  • Tested locally
  • Verified responsive layout.
  • Verified Light Mode (if applicable).
  • Verified Dark Mode.
  • Confirmed no console errors.

Screenshots (if applicable)


Checklist

  • Code follows the project's coding standards.
  • Self-reviewed the changes.
  • Tested all affected components.
  • No unnecessary files included.
  • Ready for review.

Summary by CodeRabbit

  • New Features
    • Added a full-featured contact section with a polished layout, contact form, and improved visual styling.
    • Updated the contact page to display the new contact section instead of plain text.
  • UI/UX Improvements
    • Gave the “Contact” navigation link a distinct highlighted appearance.
    • Refined the navigation behavior so the contact link no longer shows the usual active/hover indicators.

@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 7:20pm

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@nitinmohan18, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 7 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a1357624-acd2-405b-b2ea-51f167e0244a

📥 Commits

Reviewing files that changed from the base of the PR and between 86b010c and 422953b.

📒 Files selected for processing (2)
  • components/contact/ContactSection.module.css
  • components/contact/ContactSection.tsx
📝 Walkthrough

Walkthrough

Adds a new ContactSection client component with controlled form state and full CSS Modules styling, wires it into the /contact page route replacing a static placeholder, and updates the desktop navbar to apply a special highlight style to the Contact link while suppressing the active indicator and hover underline for it.

Changes

Contact Section Feature

Layer / File(s) Summary
ContactSection component and styles
components/contact/ContactSection.tsx, components/contact/ContactSection.module.css
Adds a "use client" component with controlled form state (name, email, subject, message), a shared change handler, a submit handler that logs formData, and full left/right two-column JSX. The CSS Modules stylesheet defines layout, typography, decorative backgrounds, glass card, form input focus transitions, circular submit button, and responsive breakpoints at 1024px and 768px.
Contact page route
app/(public)/contact/page.tsx
Replaces the static <div>Contact Page</div> with a <main> wrapping <ContactSection />.
Navbar Contact link special-casing
components/navbar.tsx
Desktop nav conditionally applies a highlight class when link.label === "Contact", suppresses the active background indicator, and hides the hover underline for that link.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • imuniqueshiv/HyperLearningTech#24: Modifies the same desktop navigation link rendering and active-indicator logic in components/navbar.tsx, directly overlapping with the Contact link special-casing in this PR.

Suggested reviewers

  • imuniqueshiv
  • RamuuXfree

🐇 A contact page bloomed where a placeholder stood,
With glass cards and gradients gleaming so good.
The navbar now winks at the Contact link bright,
No underlines creeping, the highlights just right.
Hop hop, the form's ready — send your message tonight! ✉️

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: a redesigned premium contact section with support-focused improvements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
✨ Finishing Touches
🧪 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: 3

🧹 Nitpick comments (1)
components/navbar.tsx (1)

172-195: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Key this special-case off the route, not the label text.

Using link.label === "Contact" makes the styling contract depend on copy. A rename or localization change will silently break the highlight/indicator behavior; link.href === "/contact" or an explicit nav flag is safer.

🤖 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/navbar.tsx` around lines 172 - 195, The navbar special-case
currently keys off link.label for the Contact item, which makes the styling and
indicator logic depend on display copy. Update the conditional in navbar.tsx
around the active indicator/hover styling to use a stable route-based check from
link.href (or an explicit nav metadata flag) instead of link.label, so the
behavior in the navigation rendering remains correct even if the label text
changes.
🤖 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 57-65: The text nodes in ContactSection are using raw apostrophes
that trigger react/no-unescaped-entities, so update the JSX copy in
ContactSection to escape those characters (for example in the “We’re here to”
and “we’ll get back to you” text, plus the other mentioned occurrences) using
typographic apostrophes or entities; keep the changes within the existing JSX
spans/paragraphs and similar text nodes.
- Around line 33-36: The submit handler in ContactSection’s handleSubmit
currently prevents the default form action but does not actually send, persist,
or acknowledge the message, so wire it to a real backend endpoint/server action
or disable the form’s submit path until that integration exists. Update the
ContactSection submit flow so handleSubmit either invokes the real request logic
and handles success/failure states, or the form UI clearly indicates it is
non-interactive; keep the existing formData and handleSubmit symbols as the main
entry points to locate the fix.
- Around line 33-35: The submit handler in ContactSection.tsx is logging
sensitive contact form data to the browser console. Remove the console.log from
handleSubmit and keep the submission flow in ContactSection/handleSubmit free of
name, email, subject, and message output; if needed, replace it with non-PII
status handling or a safe debug message that does not include formData.

---

Nitpick comments:
In `@components/navbar.tsx`:
- Around line 172-195: The navbar special-case currently keys off link.label for
the Contact item, which makes the styling and indicator logic depend on display
copy. Update the conditional in navbar.tsx around the active indicator/hover
styling to use a stable route-based check from link.href (or an explicit nav
metadata flag) instead of link.label, so the behavior in the navigation
rendering remains correct even if the label text changes.
🪄 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: 6a5ed688-1d56-4b9a-b997-1660d7cdedad

📥 Commits

Reviewing files that changed from the base of the PR and between f28950e and 86b010c.

📒 Files selected for processing (4)
  • app/(public)/contact/page.tsx
  • components/contact/ContactSection.module.css
  • components/contact/ContactSection.tsx
  • components/navbar.tsx

Comment on lines +33 to +35
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.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Remove the production PII log.

console.log("Form submitted:", formData) writes the user's name, email, subject, and message to the browser console. That is avoidable exposure for contact data.

Proposed fix
   const handleSubmit = (e: React.FormEvent) => {
     e.preventDefault();
-    console.log("Form submitted:", formData);
   };
📝 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
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
console.log("Form submitted:", formData);
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
};
🤖 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 - 35, The submit
handler in ContactSection.tsx is logging sensitive contact form data to the
browser console. Remove the console.log from handleSubmit and keep the
submission flow in ContactSection/handleSubmit free of name, email, subject, and
message output; if needed, replace it with non-PII status handling or a safe
debug message that does not include formData.

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

Wire the submit path before shipping this form.

handleSubmit currently swallows the native submit and never sends, stores, or acknowledges the message, so every contact request is silently dropped. Please hook this up to a real endpoint/server action or make the UI explicitly non-interactive until the backend exists.

🤖 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 submit
handler in ContactSection’s handleSubmit currently prevents the default form
action but does not actually send, persist, or acknowledge the message, so wire
it to a real backend endpoint/server action or disable the form’s submit path
until that integration exists. Update the ContactSection submit flow so
handleSubmit either invokes the real request logic and handles success/failure
states, or the form UI clearly indicates it is non-interactive; keep the
existing formData and handleSubmit symbols as the main entry points to locate
the fix.

Comment thread components/contact/ContactSection.tsx Outdated
@nitinmohan18 nitinmohan18 merged commit a9879ce into main Jun 30, 2026
4 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! 🚀

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