import React from 'react' import * as Icons from 'lucide-react' import { cn } from '@/core/lib/utils' import { buildSectionClasses } from '@/core/types/blocks' import type { FeaturesGridBlockProps, FeatureItem } from './schema' /** * Features Grid Block Component * * Props from 3-tab structure: * - Content: title, content, cta, items * - Design: backgroundColor, columns * - Advanced: className, id */ export function FeaturesGridBlock({ // Base content props title, content, cta, // Features-specific content items, // Base design props backgroundColor, // Features-specific design columns = '3', // Base advanced props className, id, // Legacy props for backward compatibility ...legacyProps }: FeaturesGridBlockProps & { features?: FeatureItem[]; description?: string }) { // Handle legacy 'features' prop for backward compatibility const safeItems = Array.isArray(items) ? items : Array.isArray((legacyProps as { features?: FeatureItem[] }).features) ? (legacyProps as { features: FeatureItem[] }).features : [] // Handle legacy description prop const displayContent = content || (legacyProps as { description?: string }).description // Build column classes based on columns prop const columnClasses: Record = { '2': '@sm:grid-cols-2', '3': '@sm:grid-cols-2 @lg:grid-cols-3', '4': '@sm:grid-cols-2 @lg:grid-cols-4', } // Build section classes with background and custom className const sectionClasses = buildSectionClasses( 'py-16 px-4 @md:py-24', { backgroundColor, className } ) return (
{/* Section Header */} {(title || displayContent) && (
{title && (

{title}

)} {displayContent && (

{displayContent}

)}
)} {/* Features Grid */}
{safeItems.map((item, index) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const IconComponent = (Icons as any)[item.icon] || Icons.Circle return (

{item.title}

{item.description}

) })}
{/* Optional CTA */} {cta && (
{cta.text}
)}
) }