feat: add blog pages, components, and update homepage sections

This commit is contained in:
R-Bharathraj
2026-07-17 17:04:10 +05:30
parent 88ca87e3cc
commit e4dd4e0771
16 changed files with 2080 additions and 412 deletions

View File

@@ -101,7 +101,6 @@ function StageCard({
return (
<div
ref={cardRef}
data-stage-card={index}
className={`wwd-card relative group ${isYellow ? 'wwd-card-yellow' : 'wwd-card-white'} ${active ? 'wwd-card-active' : ''}`}
onMouseMove={onMouseMove}
onMouseEnter={onMouseEnter}
@@ -170,46 +169,8 @@ export default function WhatWeDo({ isLoaded = false }: WhatWeDoProps) {
}
);
// Cards: modern 3D lift + unblur reveal, smoothly staggered across the row
const cards = gsap.utils.toArray<HTMLElement>('.wwd-card');
const grid = document.querySelector('.wwd-grid-container');
if (prefersReducedMotion) {
gsap.fromTo(
cards,
{ opacity: 0 },
{
opacity: 1,
duration: 0.5,
stagger: 0.08,
scrollTrigger: { trigger: grid, start: 'top 85%', toggleActions: 'play none none reset' },
}
);
} else {
gsap.fromTo(
cards,
{
opacity: 0,
y: 72,
scale: 0.92,
rotationX: 14,
transformOrigin: '50% 100%',
transformPerspective: 900,
filter: 'blur(10px)',
},
{
opacity: 1,
y: 0,
scale: 1,
rotationX: 0,
filter: 'blur(0px)',
duration: 1,
ease: 'power3.out',
stagger: 0.13,
scrollTrigger: { trigger: grid, start: 'top 82%', toggleActions: 'play none none reset' },
}
);
}
// The cards have no reveal animation by design — they render in place.
// Hover interactions live in StageCard.
}, containerRef);
return () => ctx.revert();
@@ -252,7 +213,7 @@ export default function WhatWeDo({ isLoaded = false }: WhatWeDoProps) {
</div>
{/* 4-up grid */}
<div className="relative z-10 wwd-grid-container max-w-6xl mx-auto">
<div className="relative z-10 max-w-6xl mx-auto">
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 lg:gap-7">
{STAGES.map((stage, i) => (
<StageCard key={stage.title} stage={stage} index={i} active={active === i} onHover={setActive} />