From 242ed1101ec607fcf2e6e09abc3741ac9d9b2760 Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar <30073382+mighty840@users.noreply.github.com> Date: Tue, 14 Apr 2026 16:25:37 +0200 Subject: [PATCH] =?UTF-8?q?style(team):=20tighter=20card=20layout=20?= =?UTF-8?q?=E2=80=94=20equal=20height,=20equity=20pill,=20GitHub/LinkedIn?= =?UTF-8?q?=20detection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - grid items-stretch so cards match height - Smaller avatar (16->64px) to free vertical space - Equity moved to a top-right pill (compact); decimals collapsed via equityDisplay() - Profile link icon auto-detects GitHub vs LinkedIn vs generic - Expertise tags get their own divider strip at card bottom — cleaner hierarchy - Card background lightened from 0.08 to 0.04 with subtle hover border Bio text itself shortened on the data side (both draft versions via admin API). --- pitch-deck/components/slides/TeamSlide.tsx | 144 ++++++++++++--------- 1 file changed, 82 insertions(+), 62 deletions(-) diff --git a/pitch-deck/components/slides/TeamSlide.tsx b/pitch-deck/components/slides/TeamSlide.tsx index f50d033..48a578e 100644 --- a/pitch-deck/components/slides/TeamSlide.tsx +++ b/pitch-deck/components/slides/TeamSlide.tsx @@ -3,7 +3,7 @@ import { motion } from 'framer-motion' import { Language, PitchTeamMember } from '@/lib/types' import { t } from '@/lib/i18n' -import { User, Linkedin } from 'lucide-react' +import { User, Linkedin, Github } from 'lucide-react' import GradientText from '../ui/GradientText' import FadeInView from '../ui/FadeInView' import Image from 'next/image' @@ -13,89 +13,109 @@ interface TeamSlideProps { team: PitchTeamMember[] } +function equityDisplay(pct: number | string | null | undefined): string { + const n = Number(pct) + if (!Number.isFinite(n)) return '—' + return Number.isInteger(n) ? `${n}%` : `${n.toFixed(1)}%` +} + +function detectProfileLink(url: string | null | undefined): { icon: typeof Linkedin | typeof Github; label: string } | null { + if (!url) return null + if (url.includes('github.com')) return { icon: Github, label: 'GitHub' } + if (url.includes('linkedin.com')) return { icon: Linkedin, label: 'LinkedIn' } + return { icon: Linkedin, label: 'Profile' } +} + export default function TeamSlide({ lang, team }: TeamSlideProps) { const i = t(lang) return (
{i.team.subtitle}
- {lang === 'de' ? member.role_de : member.role_en} -
-- {lang === 'de' ? member.bio_de : member.bio_en} -
- - {/* Equity */} -+ {lang === 'de' ? member.role_de : member.role_en} +
+ {lang === 'de' ? member.bio_de : member.bio_en} +
+ + {/* Expertise tags */} + {(member.expertise || []).length > 0 && ( +