Deploy
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
'use client'
|
||||
|
||||
import Image from "next/image"
|
||||
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/Card"
|
||||
import Badge from "@/components/ui/Badge"
|
||||
import { Award, BookOpen, Scale, Shield } from 'lucide-react'
|
||||
|
||||
const teamMembers = [
|
||||
{
|
||||
name: "Nomsa Mtungwa",
|
||||
role: "Founding Partner – Corporate Law",
|
||||
image: "https://images.pexels.com/photos/7640741/pexels-photo-7640741.jpeg?auto=compress&cs=tinysrgb&h=350",
|
||||
badge: "30+ years",
|
||||
specialty: "Mergers, acquisitions & corporate governance",
|
||||
icon: Shield,
|
||||
},
|
||||
{
|
||||
name: "Thabo Moeketsi",
|
||||
role: "Partner – Real Estate & Property",
|
||||
image: "https://images.pexels.com/photos/7691691/pexels-photo-7691691.jpeg?auto=compress&cs=tinysrgb&h=350",
|
||||
badge: "15+ years",
|
||||
specialty: "Commercial leases, development agreements & property disputes",
|
||||
icon: Scale,
|
||||
},
|
||||
{
|
||||
name: "Lindiwe Cele",
|
||||
role: "Senior Associate – Business Litigation",
|
||||
image: "https://images.pexels.com/photos/7640741/pexels-photo-7640741.jpeg?auto=compress&cs=tinysrgb&h=350",
|
||||
badge: "12+ years",
|
||||
specialty: "Shareholder disputes, contract litigation & arbitration",
|
||||
icon: BookOpen,
|
||||
},
|
||||
]
|
||||
|
||||
export default function TeamSection() {
|
||||
return (
|
||||
<section data-vula-section="team" id="team" className="py-20 bg-[#ffffff]">
|
||||
<div className="container mx-auto px-4 max-w-7xl">
|
||||
<div className="text-center mb-12">
|
||||
<h2 className="text-3xl font-bold text-[#111827] mb-2">Our Attorneys</h2>
|
||||
<p className="text-[#111827]/70 max-w-xl mx-auto">
|
||||
Each partner at Mtungwa & Partners brings deep experience in a specific practice area,
|
||||
ensuring you get expert counsel matched to your transaction or case.
|
||||
</p>
|
||||
</div>
|
||||
<div className="grid md:grid-cols-3 gap-8">
|
||||
{teamMembers.map((member, i) => {
|
||||
const Icon = member.icon
|
||||
return (
|
||||
<Card
|
||||
key={i}
|
||||
className="rounded-xl border border-[#e5e7eb] bg-[#ffffff] shadow-[var(--shadow-card)] hover:shadow-[var(--shadow-lifted)] hover:-translate-y-0.5 transition-all duration-200 ease-out"
|
||||
>
|
||||
<div className="relative aspect-square overflow-hidden rounded-t-xl">
|
||||
<Image
|
||||
src={member.image}
|
||||
alt={member.name}
|
||||
fill
|
||||
sizes="(max-width: 768px) 100vw, 33vw"
|
||||
className="object-cover hover:scale-105 transition-transform duration-500 ease-out"
|
||||
/>
|
||||
</div>
|
||||
<CardHeader>
|
||||
<div className="flex items-center justify-between">
|
||||
<CardTitle className="text-xl font-semibold text-[#111827]">{member.name}</CardTitle>
|
||||
<Badge variant="secondary" className="bg-[#d4af37]/20 text-[#800000] border-none">
|
||||
{member.badge}
|
||||
</Badge>
|
||||
</div>
|
||||
<p className="text-sm text-[#000080] font-medium">{member.role}</p>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="flex items-start gap-2">
|
||||
<Icon className="w-5 h-5 text-[#800000] mt-0.5" />
|
||||
<p className="text-sm text-[#111827]/70">{member.specialty}</p>
|
||||
</div>
|
||||
<p className="text-xs text-[#111827]/40 mt-4">
|
||||
Admitted: High Court of South Africa
|
||||
</p>
|
||||
</CardContent>
|
||||
</Card>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user