'use client'; import * as React from 'react'; import { m, LazyMotion, domAnimation, Variants } from 'framer-motion'; import { HoverShineOverlay } from '@/components/ui/HoverShineOverlay'; export interface ServicePanelData { id: string; title: string; icon: 'energy' | 'fiber' | 'hdd' | 'planning' | 'survey'; fullWidth?: boolean; lists: string[][]; } interface ServiceDetailGridProps { badge?: string; title?: string; descriptionParagraphs?: string[]; problemStatement?: { title: string; text: string; }; solutionStatement?: { title: string; text: string; }; panels: ServicePanelData[]; } const containerVariants: Variants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: 0.1, }, }, }; const itemVariants: Variants = { hidden: { opacity: 0, y: 20 }, visible: { opacity: 1, y: 0, transition: { duration: 1.0, ease: [0.16, 1, 0.3, 1] } }, }; const Icons = { energy: ( ), fiber: ( ), hdd: ( ), planning: ( ), survey: ( ) }; export function ServiceDetailGrid({ badge, title, descriptionParagraphs, problemStatement, solutionStatement, panels }: ServiceDetailGridProps) { return (
{badge &&

{badge}

} {title && (

{title}

)}
{descriptionParagraphs?.map((p, i) => { const parts = p.split('**'); if (parts.length > 1) { return (

{parts.map((part, j) => j % 2 === 1 ? {part} : part)}

); } return

{p}

; })}
{(problemStatement || solutionStatement) && ( {problemStatement && (

{problemStatement.title}

{problemStatement.text}

)} {solutionStatement && (

{solutionStatement.title}

{solutionStatement.text}

)}
)} {panels.map((panel, idx) => { const isFullWidth = panel.fullWidth; const number = String(idx + 1).padStart(2, '0'); return ( {/* Premium Watermark Number */}
{number}
{/* On a white card, a very subtle primary/grey shine works best */}

{panel.title}

{/* Glossy Icon Container */}
{Icons[panel.icon]}
{panel.lists.map((list, listIdx) => (
    {list.map((item, itemIdx) => (
  • {item}
  • ))}
))}
); })}
); }