Skip to main content
The Features component displays your services or product features in a clean, icon-driven grid. Each feature includes an SVG icon, title, and description.

Import

import Features from "@/components/Features";

Usage

src/app/page.tsx
import Features from "@/components/Features";

export default function Home() {
  return (
    <>
      <Features />
    </>
  );
}

Data Structure

Features are defined in src/components/Features/featuresData.tsx:
src/components/Features/featuresData.tsx
import { Feature } from "@/types/feature";

const featuresData: Feature[] = [
  {
    id: 1,
    icon: (
      <svg width="40" height="41" viewBox="0 0 40 41" className="fill-current">
        {/* SVG paths */}
      </svg>
    ),
    title: "Desarrollo Web",
    paragraph: "Desarrollaremos la página web que necesita tu empresa...",
  },
  // More features...
];

Feature Type

From src/types/feature.ts:
export type Feature = {
  id: number;
  icon: JSX.Element;
  title: string;
  paragraph: string;
};
id
number
required
Unique identifier for the feature (used as React key)
icon
JSX.Element
required
SVG icon component (40x40px recommended)
title
string
required
Feature title (e.g., “Desarrollo Web”, “e-Commerce”)
paragraph
string
required
Detailed description of the feature or service

Component Props

SingleFeature

The SingleFeature component renders individual feature cards:
src/components/Features/SingleFeature.tsx
const SingleFeature = ({ feature }: { feature: Feature }) => {
  const { icon, title, paragraph } = feature;
  return (
    <div className="w-full">
      <div className="wow fadeInUp" data-wow-delay=".15s">
        <div className="mb-10 flex h-[70px] w-[70px] items-center justify-center rounded-md bg-primary bg-opacity-10 text-primary">
          {icon}
        </div>
        <h3 className="mb-5 text-xl font-bold text-black dark:text-white sm:text-2xl lg:text-xl xl:text-2xl">
          {title}
        </h3>
        <p className="pr-[10px] text-base font-medium leading-relaxed text-body-color">
          {paragraph}
        </p>
      </div>
    </div>
  );
};
feature
Feature
required
Feature object containing id, icon, title, and paragraph

Adding New Features

1

Create your icon

Design or find an SVG icon (40x40px). Use className="fill-current" to inherit colors:
const myIcon = (
  <svg width="40" height="40" viewBox="0 0 40 40" className="fill-current">
    <path d="..." />
  </svg>
);
2

Add to featuresData

Add your feature to the array in featuresData.tsx:
{
  id: 7,
  icon: myIcon,
  title: "SEO Optimization",
  paragraph: "Improve your search rankings with our proven SEO strategies...",
}
3

Test responsive layout

The grid automatically adjusts:
  • Mobile: 1 column
  • Tablet (md): 2 columns
  • Desktop (lg): 3 columns

Customization

Section Title

Modify the section heading in src/components/Features/index.tsx:
<SectionTitle
  title="Soluciones Pengrafic"
  paragraph="Nuestra agencia de marketing te ofrece..."
  center
/>

Grid Layout

Change the number of columns:
// Default: 1, 2, 3 columns
className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3"

// Custom: 1, 3, 4 columns
className="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4"

Icon Container

Customize the icon background:
// Default: Primary color with 10% opacity
className="bg-primary bg-opacity-10 text-primary"

// Custom: Different color
className="bg-blue-500 bg-opacity-20 text-blue-600"

// Custom: Larger size
className="h-[90px] w-[90px]" // Instead of h-[70px] w-[70px]

Spacing

Adjust gaps between cards:
// Default gaps
className="gap-x-8 gap-y-14"

// Tighter spacing
className="gap-x-4 gap-y-8"

// Wider spacing
className="gap-x-12 gap-y-20"

Default Features

The template includes 6 pre-configured features:
  1. Desarrollo Web - Web development services
  2. e-Commerce - Online store solutions
  3. Social Media - Social media marketing
  4. Google Ads - PPC advertising
  5. Branding - Brand identity design
  6. Programación de apps - Mobile app development

Styling

Dark Mode

Feature cards automatically adapt:
className="text-black dark:text-white"  // Title
className="text-body-color"              // Description (same in dark mode)

Animations

Cards use WOW.js animations:
className="wow fadeInUp" data-wow-delay=".15s"
To disable animations, remove these attributes.

Accessibility

  • Section has id="features" for anchor navigation
  • Proper heading hierarchy (<h3> for feature titles)
  • Semantic HTML structure
  • Sufficient color contrast for text readability

Best Practices

Keep feature titles concise - Aim for 2-4 words per title for scanability.
Limit to 6-9 features - Too many features can overwhelm users. Focus on your top services.
Consistent icon style - Use icons from the same set or design system for visual cohesion.
  • SectionTitle - Shared title component
  • Hero - Often placed before Features
  • Pricing - Natural next step after features

Build docs developers (and LLMs) love