Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
10 views4 pages

Services Section V 2

The document outlines a React functional component named ServicesSectionV2, which displays a list of technologies and services offered. It utilizes animations from the motion library and includes a tech stack and service offerings presented in a visually appealing layout. The component is structured with two columns, featuring a title and interactive elements for user engagement.

Uploaded by

t2k20802
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views4 pages

Services Section V 2

The document outlines a React functional component named ServicesSectionV2, which displays a list of technologies and services offered. It utilizes animations from the motion library and includes a tech stack and service offerings presented in a visually appealing layout. The component is structured with two columns, featuring a title and interactive elements for user engagement.

Uploaded by

t2k20802
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

import clsx from "clsx";

import { Icon, Icon1 } from "./Icon";


import * as m from "motion/react-m";
import { AnimatedH2 } from "./AnimatedH2";
import { Text } from "./ui/Elements";

const tech = [
{ name: "JavaScript", src: "javascript" },
{ name: "TypeScript", src: "typescript" },
{ name: "React", src: "react" },
{ name: "Next", src: "next" },
{ name: "Tailwind CSS", src: "tailwind" },
{ name: "Framer", src: "framer" },
{ name: "Node.js", src: "node" },
{ name: "Express", src: "express" },
{ name: "Nest.js", src: "nest" },
{ name: "Python", src: "python" },
{ name: "FastAPI", src: "fastapi" },
{ name: "MySQL", src: "mysql" },
{ name: "PostgreSQL", src: "postgresql" },
{ name: "MongoDB", src: "mongodb" },
{ name: "Supabase", src: "supabase" },
{ name: "Firebase", src: "firebase" },
{ name: "AWS", src: "aws" },
{ name: "GCP", src: "gcp" },
{ name: "Azure", src: "azure" },
{ name: "Figma", src: "figma" },
{ name: "OpenAI", src: "openai" },
];

const services = [
{ name: "Website Development", src: "magic-wand" },
{ name: "Brand Design", src: "paint-bucket" },
{ name: "Ad Campaigns", src: "web" },
{ name: "Landing Pages", src: "world" },
{ name: "SEO Optimization", src: "seo" },
{ name: "Motion Graphics", src: "planet" },
{ name: "PPC Campaigns", src: "page" },
];

const container = {
hidden: {},
visible: {
transition: {
staggerChildren: 0.05,
},
},
};

const container2 = {
hidden: {},
visible: {
transition: {
staggerChildren: 0.08,
delayChildren: 0.5,
},
},
};
const element = {
hidden: {
opacity: 0,
x: -40,
filter: "blur(4px)",
},
visible: {
opacity: 1,
x: 0,
filter: "blur(0px)",
},
};

const element2 = {
hidden: {
opacity: 0,
scale: 0.5,
filter: "blur(4px)",
},
visible: {
opacity: 1,
scale: 1,
filter: "blur(0px)",
transition: {
duration: 0.2,
type: "spring",
stiffness: 100,
damping: 10,
},
},
};
export const ServicesSectionV2: React.FC = ({
className = "",
}: {
className?: string;
}) => {
return (
<section
id="services"
className={clsx(
"inside-container items-start justify-center bg-white md:flex-row md:items-
center",
className
)}
>
{/* LEFT COLUMN */}
<div className="flex [flex:1.5_0_0px] flex-col gap-16">
<AnimatedH2>
<span className="text-slate-700">Services </span>that
<br />
<span className="text-nowrap">
supercharge <span className="text-slate-500">your</span> <br />{" "}
business.
</span>
</AnimatedH2>

{/* Tech Stack */}


<div>
<Text size="base" className="mb-8">
My tech stack
</Text>

<m.ul
className="flex flex-wrap gap-8"
variants={container}
initial="hidden"
whileInView="visible"
viewport={{ once: true, margin: "0px 0px -100px 0px" }}
>
{tech.map(({ name, src }) => (
<m.li key={name} variants={element}>
<div className="group relative">
<input
placeholder={name}
type="checkbox"
className="peer hidden"
id={name}
/>

<label
htmlFor={name}
className="button-shadow flex h-14 w-14 items-center justify-
center rounded-xl border border-gray-200 bg-white peer-checked:translate-y-0.5
peer-checked:shadow-none hover:translate-y-0.5"
>
<Icon name={src} className="object-contain w-8 h-8" />
</label>
{/* optional tooltip */}
<span className="absolute -top-7 left-1/2 -translate-x-1/2
rounded-full bg-black px-2 py-1 text-xs text-white opacity-0 transition delay-100
duration-300 group-hover:opacity-100 peer-checked:opacity-100">
{name}
</span>
</div>
</m.li>
))}
</m.ul>
</div>
</div>

{/* RIGHT COLUMN */}


<m.ul
initial="hidden"
whileInView="visible"
viewport={{ once: true, amount: 0.8 }}
variants={container2}
className="grid [flex:1_0_0px] grid-cols-2 gap-12 md:grid-cols-1"
>
{services.map(({ name, src }) => (
<m.li
key={name}
variants={element2}
className="flex items-center gap-3"
>
<span className="button-shadow flex aspect-square h-10 w-10 items-
center justify-center rounded-full bg-black">
<Icon1
name={src}
width={25}
height={30}
className="object-contain invert"
/>
</span>
<Text as="span" size="sm">
{name}
</Text>
</m.li>
))}
</m.ul>
</section>
);
};

You might also like