Initial commit
This commit is contained in:
96
src/components/Features.js
Normal file
96
src/components/Features.js
Normal file
@@ -0,0 +1,96 @@
|
||||
import React from 'react';
|
||||
import { motion, useReducedMotion } from 'framer-motion';
|
||||
import { Check } from 'lucide-react';
|
||||
|
||||
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
|
||||
initial: { opacity: 0, y: 20 },
|
||||
whileInView: { opacity: 1, y: 0 },
|
||||
viewport: { once: true, amount: 0.2 },
|
||||
transition: { delay, duration, ease: "easeOut" }
|
||||
});
|
||||
|
||||
const Features = () => {
|
||||
const shouldReduce = useReducedMotion();
|
||||
|
||||
const features = [
|
||||
"Providing technical guidance & architectural reviews",
|
||||
"Mentoring team members",
|
||||
"Advising best practices",
|
||||
"Addressing security & performance concerns",
|
||||
"Performing in-depth code reviews",
|
||||
"Long-term support LTS & upgrade assistance"
|
||||
];
|
||||
|
||||
if (shouldReduce) {
|
||||
return (
|
||||
<section className="section-padding bg-gray-50">
|
||||
<div className="container-custom">
|
||||
<div className="grid lg:grid-cols-2 gap-12 items-center">
|
||||
<div>
|
||||
<h2 className="text-4xl md:text-5xl font-bold text-gray-900 mb-6">
|
||||
Accelerate your development
|
||||
</h2>
|
||||
<p className="text-xl text-gray-600 mb-8">
|
||||
We work alongside you to meet your deadlines while avoiding costly tech debt. Challenging issue? We've got you covered.
|
||||
</p>
|
||||
<p className="text-gray-600 mb-8">
|
||||
Our Nest core team got you covered! Nest core team members will help you define best practices and choose the right strategy for your goals.
|
||||
</p>
|
||||
<a href="#" className="text-brand-red font-medium hover:underline">
|
||||
Contact us to learn more
|
||||
</a>
|
||||
</div>
|
||||
<div className="space-y-4">
|
||||
{features.map((feature, index) => (
|
||||
<div key={index} className="flex items-start space-x-3">
|
||||
<Check className="w-5 h-5 text-green-500 mt-1 flex-shrink-0" />
|
||||
<span className="text-gray-700">{feature}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<motion.section
|
||||
{...fadeUpPreset(0.1, 1.0)}
|
||||
className="section-padding bg-gray-50"
|
||||
>
|
||||
<div className="container-custom">
|
||||
<div className="grid lg:grid-cols-2 gap-12 items-center">
|
||||
<motion.div {...fadeUpPreset(0.2, 1.0)}>
|
||||
<h2 className="text-4xl md:text-5xl font-bold text-gray-900 mb-6">
|
||||
Accelerate your development
|
||||
</h2>
|
||||
<p className="text-xl text-gray-600 mb-8">
|
||||
We work alongside you to meet your deadlines while avoiding costly tech debt. Challenging issue? We've got you covered.
|
||||
</p>
|
||||
<p className="text-gray-600 mb-8">
|
||||
Our Nest core team got you covered! Nest core team members will help you define best practices and choose the right strategy for your goals.
|
||||
</p>
|
||||
<a href="#" className="text-brand-red font-medium hover:underline">
|
||||
Contact us to learn more
|
||||
</a>
|
||||
</motion.div>
|
||||
<motion.div {...fadeUpPreset(0.3, 1.0)} className="space-y-4">
|
||||
{features.map((feature, index) => (
|
||||
<motion.div
|
||||
key={index}
|
||||
{...fadeUpPreset(0.4 + index * 0.1, 0.8)}
|
||||
className="flex items-start space-x-3"
|
||||
>
|
||||
<Check className="w-5 h-5 text-green-500 mt-1 flex-shrink-0" />
|
||||
<span className="text-gray-700">{feature}</span>
|
||||
</motion.div>
|
||||
))}
|
||||
</motion.div>
|
||||
</div>
|
||||
</div>
|
||||
</motion.section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Features;
|
||||
Reference in New Issue
Block a user