CategoriesAllHeroNavigationFooterCall-to-ActionsFeature SectionsTestimonialsPricingContactGalleryStatsFAQServicesNewsletterAuthMiscellaneousButtons
All Components3D Cube InteractionBorder Logo GridCountdownFlip ButtonExpandable FAQsFlow ButtonGlow ButtonGrayscale CarouselInertia Zoom ParallaxLogo Cloud GridMobile Drawer NavigationPixel PreloaderProject GalleryRing ButtonShowcase CarouselSlide PreloaderSliding Stairs PreloaderStormtrooper FAQText Gradient OpacityThreads ButtonTilt HeadlineUltra Preloader
Code
app/page.tsx
1import CompanyLogos from "@/sections/company-logos";
2
3const Home = () => {
4    return (
5        <div className=" bg-[#F6F6F6] min-h-screen w-full flex items-center justify-center">
6            <CompanyLogos />
7        </div>
8    );
9}
10
11export default Home;Installation
Initialized a project and installed the necessary dependencies to use this component.
1. Initialize a new Next.js project:
npx create-next-app@latest my-app2. Install Framer Motion
npm install framer-motion --saveAdd Company Logos Section
src/sections/company-logos.tsx
1"use client"
2
3import { companyLogos } from "@/constants";
4import { motion } from "framer-motion";
5import { Plus } from "lucide-react";
6import Image from "next/image";
7
8
9const CompanyLogos = () => {
10    return (
11        <section className=" w-full py-8 z-20 relative flex flex-col items-center mt-28">
12            <h6 className=" font-medium opacity-80 text-base md:text-lg">Trusted by 24+ Startups and Businesses for Design and Development</h6>
13            <div className=" max-w-6xl mx-auto w-full mt-8">
14                <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 w-full relative group">
15                    {companyLogos.map((logo, index) => (
16                        <div key={index} className={`w-full border bg-[#F6F6F6] py-4 flex items-center justify-center ${index === 0 ? 'xl:rounded-tl-xl' :
17                            index === 5 ? 'xl:rounded-tr-xl' :
18                                index === 18 ? 'xl:rounded-bl-xl' : ''
19                            }`}>
20                            <motion.div
21                                className="relative flex items-center justify-center object-contain"
22                                style={{
23                                    width: `${logo.width}px`,
24                                    height: `${logo.height}px`,
25                                }}
26                                initial={{ opacity: 0, y: 20 }}
27                                whileInView={{ opacity: 1, y: 0 }}
28                                transition={{
29                                    duration: 0.5,
30                                    delay: index * 0.1,
31                                    ease: "easeOut"
32                                }}
33                                viewport={{ once: true, amount: 0.3 }}
34                            >
35                                <Image
36                                    fill
37                                    quality={100}
38                                    src={`/companies/${logo.image}`}
39                                    alt={logo.name}
40                                    sizes={`${Math.max(logo.width, logo.height)}px`}
41                                    className="object-contain"
42                                />
43                            </motion.div>
44                        </div>
45                    ))}
46                    <div className=" w-full border py-2.5 px-2.5 xl:rounded-br-xl bg-[#F6F6F6]">
47                        <div className=" text-sm md:text-[15px] bg-[#F6F6F6] border border-dashed hover:border-none hover:bg-[#002BBA] hover:text-white cursor-pointer border-[#002BBA] w-full h-full text-[#002BBA] font-medium gap-1 xl:rounded-lg flex items-center justify-center">
48                            <p>Your Logo</p> <Plus className=" size-4" />
49                        </div>
50                    </div>
51                </div>
52            </div>
53        </section>
54    );
55}
56
57export default CompanyLogos;Add Constants
src/constants/index.ts
1export const companyLogos = [
2  {
3    name: "Lexos",
4    image: "logo-1.png",
5    width: 116,
6    height: 40,
7  },
8  {
9    name: "InfoSignal",
10    image: "logo-2.png",
11    width: 140,
12    height: 40,
13  },
14  {
15    name: "Stakenet",
16    image: "logo-3.png",
17    width: 140,
18    height: 40,
19  },
20  {
21    name: "FetchTalent AI",
22    image: "logo-4.png",
23    width: 152,
24    height: 40,
25  },
26  {
27    name: "Toonly AI",
28    image: "logo-5.png",
29    width: 148,
30    height: 40,
31  },
32  {
33    name: "Atlas Labs",
34    image: "logo-6.png",
35    width: 125,
36    height: 40,
37  },
38  {
39    name: "Intero",
40    image: "logo-7.png",
41    width: 112,
42    height: 40,
43  },
44  {
45    name: "Skillura",
46    image: "logo-8.png",
47    width: 135,
48    height: 40,
49  },
50  {
51    name: "OnlyTool",
52    image: "logo-9.png",
53    width: 115,
54    height: 40,
55  },
56  {
57    name: "Textbook LM",
58    image: "logo-10.png",
59    width: 160,
60    height: 40,
61  },
62  {
63    name: "InfoSignal InfoBoard",
64    image: "logo-11.png",
65    width: 160,
66    height: 40,
67  },
68  {
69    name: "GenYSolutions",
70    image: "logo-12.png",
71    width: 88,
72    height: 40,
73  },
74  {
75    name: "VoiceAfrica",
76    image: "logo-13.png",
77    width: 140,
78    height: 40,
79  },
80  {
81    name: "Midas",
82    image: "logo-14.png",
83    width: 120,
84    height: 40,
85  },
86  {
87    name: "Astrae",
88    image: "logo-15.png",
89    width: 128,
90    height: 40,
91  },
92  {
93    name: "Refactor",
94    image: "logo-16.png",
95    width: 148,
96    height: 40,
97  },
98  {
99    name: "Fontsnatcher",
100    image: "logo-17.png",
101    width: 160,
102    height: 40,
103  },
104  {
105    name: "Hetzel",
106    image: "logo-18.png",
107    width: 160,
108    height: 40,
109  },
110  {
111    name: "Nova",
112    image: "logo-19.png",
113    width: 160,
114    height: 40,
115  },
116  {
117    name: "Lancershout",
118    image: "logo-20.png",
119    width: 164,
120    height: 40,
121  },
122  {
123    name: "Handle Delivery",
124    image: "logo-21.png",
125    width: 164,
126    height: 40,
127  },
128  {
129    name: "EZ Politix",
130    image: "logo-22.png",
131    width: 180,
132    height: 40,
133  },
134  {
135    name: "VOX-AI",
136    image: "logo-23.png",
137    width: 132,
138    height: 40,
139  },
140];