Skip to content

feat: complete team section UI redesign with tabs, animations, & centered layouts#7

Open
BeeXD wants to merge 5 commits into
mainfrom
feature/team-section-final
Open

feat: complete team section UI redesign with tabs, animations, & centered layouts#7
BeeXD wants to merge 5 commits into
mainfrom
feature/team-section-final

Conversation

@BeeXD

@BeeXD BeeXD commented Apr 20, 2026

Copy link
Copy Markdown
Collaborator
image

Copilot AI review requested due to automatic review settings April 20, 2026 19:07
@netlify

netlify Bot commented Apr 20, 2026

Copy link
Copy Markdown

Deploy Preview for devhack3 ready!

Name Link
🔨 Latest commit fd9dc1f
🔍 Latest deploy log https://app.netlify.com/projects/devhack3/deploys/69e91f8c092a7900081ebc61
😎 Deploy Preview https://deploy-preview-7--devhack3.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@vercel

vercel Bot commented Apr 20, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
devhack3 Ready Ready Preview, Comment Apr 22, 2026 7:20pm

Copilot AI 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.

Pull request overview

This PR redesigns the Team section into a tabbed, animated layout with a modal bio viewer, and re-enables the Team section in the main app navigation.

Changes:

  • Replaced the previous carousel-based Team UI with a new tabbed layout and modal bio popup in Team.tsx.
  • Added coin divider animation styles to index.css.
  • Re-enabled <Team /> rendering and added a “Team” navbar link in App.tsx.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 10 comments.

File Description
src/sections/Team.tsx Full UI rebuild: tabs, animated team cards, coin dividers, and bio modal.
src/index.css Adds spinY keyframes and .coin / .animate-spin-y styles used by the new divider.
src/components/TeamCarousel.tsx Removes the old carousel component (now unused).
src/App.tsx Imports/renders the Team section and adds “Team” to desktop + mobile nav links.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/sections/Team.tsx
Comment on lines +110 to +114
{ top: 4, left: 4 } as React.CSSProperties,
{ top: 4, right: 4 } as React.CSSProperties,
{ bottom: 4, left: 4 } as React.CSSProperties,
{ bottom: 4, right: 4 } as React.CSSProperties,
].map((pos, ri) => (

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

React.CSSProperties is referenced here, but React isn’t imported in this module. In TS this will fail to type-check. Import React (or import CSSProperties as a type) and update these casts accordingly.

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx Outdated
Comment on lines +359 to +363
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
className="fixed inset-0 z-50 flex items-center justify-center bg-[rgba(26,26,26,0.8)] backdrop-blur-sm p-4"

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

For accessibility, the modal overlay/container should expose dialog semantics. Consider adding role="dialog" and aria-modal="true" (and ideally associating a label via aria-labelledby).

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx Outdated
/>
</motion.div>
</AnimatePresence>
{/* Header block condtionally rendered */}

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

Typo in comment: “condtionally” → “conditionally”.

Suggested change
{/* Header block condtionally rendered */}
{/* Header block conditionally rendered */}

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx
Comment on lines +38 to +39
{ id: '1', name: 'Trisha', role: 'Student Co ordinator', image: 'https://api.dicebear.com/9.x/pixel-art/svg?seed=Trisha' },
{ id: '2', name: 'S Shreenidhi', role: 'Student Co ordinator', image: 'https://api.dicebear.com/9.x/pixel-art/svg?seed=Shreenidhi' },

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

Spelling in user-visible role text: “Co ordinator” should be “Coordinator” (currently shown in the card and modal).

Suggested change
{ id: '1', name: 'Trisha', role: 'Student Co ordinator', image: 'https://api.dicebear.com/9.x/pixel-art/svg?seed=Trisha' },
{ id: '2', name: 'S Shreenidhi', role: 'Student Co ordinator', image: 'https://api.dicebear.com/9.x/pixel-art/svg?seed=Shreenidhi' },
{ id: '1', name: 'Trisha', role: 'Student Coordinator', image: 'https://api.dicebear.com/9.x/pixel-art/svg?seed=Trisha' },
{ id: '2', name: 'S Shreenidhi', role: 'Student Coordinator', image: 'https://api.dicebear.com/9.x/pixel-art/svg?seed=Shreenidhi' },

Copilot uses AI. Check for mistakes.
Comment thread src/index.css
.animate-spin-y {
animation: spinY 3s linear infinite;
}

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

.animate-spin-y runs an infinite animation; consider a prefers-reduced-motion: reduce override to disable/simplify it for users who prefer reduced motion.

Suggested change
@media (prefers-reduced-motion: reduce) {
.animate-spin-y {
animation: none;
}
}

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx
Comment on lines +171 to +175
if (selectedBio) {
if (typeof window !== 'undefined') document.body.style.overflow = 'hidden';
} else {
if (typeof window !== 'undefined') document.body.style.overflow = 'auto';
}

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

Directly mutating document.body.style.overflow during render introduces side effects on every render and can leave the page stuck (e.g., if the component unmounts while the modal is open). Move this into a useEffect that runs when selectedBio changes and add a cleanup to restore the previous overflow value.

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx Outdated
Comment on lines +103 to +107
className="group relative bg-[#fff9f4] border-[3px] border-[#1a1a1a] shadow-[6px_6px_0px_#1a1a1a] hover:shadow-[8px_8px_0px_#f97028] transition-all cursor-pointer flex flex-col h-full overflow-hidden w-full max-w-[280px] sm:max-w-[300px] shrink-0"
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
onClick={() => onClickBio(member)}
>

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

The card container has an onClick handler and the nested “SHOW BIO” button also triggers onClickBio. Clicking the button will bubble and invoke the handler twice. Stop propagation in the button handler, or remove one of the click handlers.

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx Outdated
Comment on lines +103 to +107
className="group relative bg-[#fff9f4] border-[3px] border-[#1a1a1a] shadow-[6px_6px_0px_#1a1a1a] hover:shadow-[8px_8px_0px_#f97028] transition-all cursor-pointer flex flex-col h-full overflow-hidden w-full max-w-[280px] sm:max-w-[300px] shrink-0"
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
onClick={() => onClickBio(member)}
>

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

This card is interactive (click opens the modal) but it’s not keyboard accessible because it’s a div. Use a semantic button/a, or add role="button", tabIndex={0}, and handle Enter/Space key presses.

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx
Comment on lines +375 to +379
<button
className="absolute top-4 right-4 w-10 h-10 border-2 border-[#1a1a1a] flex items-center justify-center font-bold font-mono hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
onClick={() => setSelectedBio(null)}
>
X

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

The close button content is just "X"; add an aria-label (e.g., "Close") so screen readers announce it properly.

Copilot uses AI. Check for mistakes.
Comment thread src/sections/Team.tsx
Comment on lines +396 to +411
<a
href={selectedBio.twitter || '#'}
target="_blank"
rel="noreferrer"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
>
Twitter/X
</a>
<a
href={selectedBio.linkedin || '#'}
target="_blank"
rel="noreferrer"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
>
LinkedIn
</a>

Copilot AI Apr 20, 2026

Copy link

Choose a reason for hiding this comment

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

These social links fall back to href="#" when the profile URL is missing, which is a broken UX (and still opens a new tab). Conditionally render the links only when a real URL exists, or render a disabled state.

Suggested change
<a
href={selectedBio.twitter || '#'}
target="_blank"
rel="noreferrer"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
>
Twitter/X
</a>
<a
href={selectedBio.linkedin || '#'}
target="_blank"
rel="noreferrer"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
>
LinkedIn
</a>
{selectedBio.twitter ? (
<a
href={selectedBio.twitter}
target="_blank"
rel="noreferrer"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
>
Twitter/X
</a>
) : (
<span
aria-disabled="true"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest opacity-50 cursor-not-allowed"
>
Twitter/X
</span>
)}
{selectedBio.linkedin ? (
<a
href={selectedBio.linkedin}
target="_blank"
rel="noreferrer"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest hover:bg-[#1a1a1a] hover:text-[#f3ecd2] transition-colors"
>
LinkedIn
</a>
) : (
<span
aria-disabled="true"
className="flex-1 py-3 border-2 border-[#1a1a1a] text-center font-bold uppercase tracking-widest opacity-50 cursor-not-allowed"
>
LinkedIn
</span>
)}

Copilot uses AI. Check for mistakes.
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.

3 participants