import React, { useEffect, useState } from 'react'; import { Button } from '../ui/button'; import { Badge } from '../ui/badge'; import { Card, CardContent } from '../ui/card'; import { ImageWithFallback } from '../figma/ImageWithFallback'; import { navigateTo } from '../Router'; import { BrandedTag } from '../about/BrandedTag'; import { PrimaryCTAButton } from '../PrimaryCTAButton'; import { StandardCTAButton } from '../StandardCTAButton'; import { ArrowRight, CheckCircle, Settings, Calendar, Download, Network, Users, Target, Brain, Eye, TrendingUp, BarChart3, Award, Lightbulb, Shield, ChevronDown, ChevronUp, ArrowLeft, Star, Zap, Globe, Crown, Compass, Users2, Clock, MessageCircle, Building, UserCheck, Heart } from 'lucide-react'; import { TestimonialsSection } from '../TestimonialsSection'; import { useGetServiceListQuery } from '../../redux/services/sercicesApi'; import { FullScreenLoader } from '../FullScreenLoader'; // Types based on API response interface ServicePageData { hero_section: { id: string; landing_page_type: string; background_image_url: string; background_image_alt_text: string; headline: string; subtext: string; cta_text: string; cta_destination: string; }; overview: { id: string; title: string; description: string; highlight_text: string; overview_cards: Array<{ id: string; title: string; description: string; icon_url: string; accessible_label: string; }>; }; audience_section: { id: string; title: string; description: string; audience_cards: Array<{ id: string; title: string; description: string; icon_url: string; accessible_label: string; challenges: string[]; }>; }; use_case_section: { id: string; title: string; description: string; use_case_cards: Array<{ id: string; title: string; description: string; icon_url: string; accessible_label: string; highlight_text: string; }>; }; approach_section: { id: string; title: string; description: string; approach_cards: Array<{ id: string; title: string; description: string; icon_url: string; accessible_label: string; bullets: string[]; }>; outcomes: Array<{ id: string; title: string; description: string; icon_url: string; accessible_label: string; bullets: string[]; }>; }; stats_section: { id: string; title: string; description: string; stat_cards: Array<{ id: string; value: string; label: string; icon_url: string; accessible_label: string; }>; }; program_section: { id: string; title: string; description: string; program_phases: Array<{ phase: { id: string; phase_number: number; title: string; duration: string; }; activities: Array<{ id: string; phase_id: string; text: string; }>; outcomes: Array<{ id: string; phase_id: string; text: string; }>; }>; }; impact_section: { id: string; title: string; description: string; impact_stats: Array<{ id: string; value: string; description: string; label: string; icon_url: string; accessible_label: string; }>; impact_benefits: Array<{ id: string; title: string; description: string; icon_url: string; accessible_label: string; }>; }; testimonial_section: Array<{ id: string; profile_xid: string; name: string; designation: string; content: string; video_url: string | null; display_order: number; }>; cta_section: { id: string; background_image_url: string; text: string; cta_text: string; cta_destination: string; description: string; landing_page_type: string; service_type: string; }; } // Map API icons to Lucide icons const getIconComponent = (iconUrl: string) => { const iconMap: Record = { '/icons/pipeline.svg': TrendingUp, '/icons/succession.svg': Users, '/icons/capability.svg': Brain, '/icons/hr.svg': Users2, '/icons/management.svg': Crown, '/icons/growth.svg': TrendingUp, '/icons/gap.svg': Target, '/icons/assessment.svg': BarChart3, '/icons/development.svg': Brain, '/icons/outcome.svg': Award, '/icons/target.svg': Target, '/icons/engagement.svg': Heart, '/icons/leader.svg': Crown, '/icons/productivity.svg': TrendingUp, '/icons/performance.svg': TrendingUp, }; const IconComponent = iconMap[iconUrl] || Target; return IconComponent; }; export function LeadershipDevelopment() { const [expandedPhase, setExpandedPhase] = useState(0); const { data: apiResponse, isLoading, error } = useGetServiceListQuery({ service_type: 'leadership_development' }); const apiData = apiResponse?.data as ServicePageData | undefined; useEffect(() => { window.scrollTo(0, 0); }, []); if (isLoading) { return (
); } if (error || !apiData) { return (

Error loading content. Please try again later.

); } // Transform data for UI const targetAudience = apiData.audience_section?.audience_cards.map(card => ({ title: card.title, description: card.description, icon: getIconComponent(card.icon_url), challenges: card.challenges || [] })) || []; const useCases = apiData.use_case_section?.use_case_cards.map(card => ({ title: card.title, description: card.description, icon: getIconComponent(card.icon_url), scenario: card.highlight_text })) || []; const programTimeline = apiData.program_section?.program_phases.map(phase => ({ phase: phase.phase.title, duration: phase.phase.duration, activities: phase.activities.map(activity => activity.text), deliverables: phase.outcomes.map(outcome => outcome.text) })) || []; const expectedOutcomes = apiData.impact_section?.impact_benefits.map(benefit => ({ metric: apiData.impact_section?.impact_stats[0]?.value || '85%', description: benefit.description, icon: getIconComponent(benefit.icon_url), category: benefit.title })) || []; const testimonials = apiData.testimonial_section?.map(testimonial => { const designationParts = testimonial.designation.split(','); const role = designationParts[0]?.trim() || ''; const company = designationParts[1]?.trim() || ''; return { id: parseInt(testimonial.id) || 0, name: testimonial.name, role: role, company: company, avatar: `https://ui-avatars.com/api/?name=${encodeURIComponent(testimonial.name)}&background=04045B&color=fff&size=128`, quote: testimonial.content, rating: 5, isVideo: !!testimonial.video_url, videoThumbnail: testimonial.video_url ? `/images/testimonials/thumbnails/${testimonial.id}.jpg` : undefined, videoUrl: testimonial.video_url || undefined }; }) || []; return (
{/* Hero Section */}

{apiData.hero_section.headline}

{apiData.hero_section.subtext}

navigateTo(apiData.hero_section.cta_destination)} ariaLabel={apiData.hero_section.cta_text} className="primary-cta-button-blue cta-text-white" />
{/* 1. What Is This Service */}

{apiData.overview.title}

{apiData.overview.description}

The Business Problem It Solves: {apiData.overview.highlight_text}

{apiData.overview.overview_cards.map((card, index) => { const IconComponent = getIconComponent(card.icon_url); return (

{card.title}

{card.description}

); })}
{/* 2. Who Is It For */}

{apiData.audience_section.title}

{apiData.audience_section.description}

{targetAudience.map((audience, index) => (

{audience.title}

{audience.description}

Common Challenges:

    {audience.challenges.map((challenge, challengeIndex) => (
  • {challenge}
  • ))}
))}
{/* 3. When to Use It */}

{apiData.use_case_section.title}

{apiData.use_case_section.description}

{useCases.map((useCase, index) => (

{useCase.title}

{useCase.description}

{useCase.scenario}
))}
{/* 4. Our Approach */}

{apiData.approach_section.title}

{apiData.approach_section.description}

{/* Flowchart Container with Connecting Lines */}
{/* Desktop: Horizontal Flowchart */}
{/* Row 1: First 3 approach cards from API */}
{apiData.approach_section.approach_cards.slice(0, 3).map((card, idx) => { const IconComponent = getIconComponent(card.icon_url); return (

{card.title}

{card.description}

{card.bullets.slice(0, 3).map((bullet, bulletIdx) => (
{bullet}
))}
); })} {/* Arrows between first 3 cards */} {apiData.approach_section.approach_cards.length >= 2 && (
)} {apiData.approach_section.approach_cards.length >= 3 && (
)}
{/* Vertical Connector - Center Flow Down */}
{/* Row 2: Next 2 approach cards (if available) */} {apiData.approach_section.approach_cards.length >= 4 && (
{apiData.approach_section.approach_cards.slice(3, 5).map((card, idx) => { const IconComponent = getIconComponent(card.icon_url); const isFirstOfPair = idx === 0; return (

{card.title}

{card.description}

{card.bullets.slice(0, 3).map((bullet, bulletIdx) => (
{bullet}
))}
); })} {/* Arrow between the two cards */} {apiData.approach_section.approach_cards.length >= 5 && (
)}
)} {/* Final Vertical Connector - Center Flow Down to Outcome */}
{/* Row 3: Expected Outcome - Use API outcomes data */}
{apiData.approach_section.outcomes && apiData.approach_section.outcomes[0] && (() => { const OutcomeIcon = getIconComponent(apiData.approach_section.outcomes[0].icon_url); return ; })() || }

{apiData.approach_section.outcomes?.[0]?.title || "Expected Outcome"}

{apiData.approach_section.outcomes?.[0]?.description || "Transformational executive leaders with strategic capability, executive presence, and proven business impact."}

{apiData.approach_section.outcomes?.[0]?.bullets?.slice(0, 2).map((bullet, idx) => (
{bullet}
)) || ( <>
Enhanced Leadership Effectiveness
)}
{/* Tablet & Mobile: Vertical Flowchart */}
{/* Map all approach cards vertically */} {apiData.approach_section.approach_cards.map((card, idx) => { const IconComponent = getIconComponent(card.icon_url); const isEven = idx % 2 === 0; return (

{card.title}

{card.description}

{card.bullets.map((bullet, bulletIdx) => (
{bullet}
))}
{/* Connector Arrow */} {idx < apiData.approach_section.approach_cards.length - 1 && (
)}
); })} {/* Expected Outcome - Use API outcomes data */}
{apiData.approach_section.outcomes && apiData.approach_section.outcomes[0] && (() => { const OutcomeIcon = getIconComponent(apiData.approach_section.outcomes[0].icon_url); return ; })() || }

{apiData.approach_section.outcomes?.[0]?.title || "Expected Outcome"}

{apiData.approach_section.outcomes?.[0]?.description || "Transformational executive leaders with strategic capability, executive presence, and proven business impact."}

{apiData.approach_section.outcomes?.[0]?.bullets?.slice(0, 2).map((bullet, idx) => (
{bullet}
)) || ( <>
Enhanced Leadership Effectiveness
)}
{/* Framework Effectiveness - Stats Section */} {apiData.stats_section && (

{apiData.stats_section.title}

{apiData.stats_section.description}

{apiData.stats_section.stat_cards.map((stat) => { const IconComponent = getIconComponent(stat.icon_url); return (
{stat.value}

{stat.label}

); })}
)}
{/* 5. Sample Program Format */}

{apiData.program_section.title}

{apiData.program_section.description}

{programTimeline.map((phase, index) => (
setExpandedPhase(expandedPhase === index ? null : index)} >
{index + 1}

{phase.phase}

{phase.duration}
{expandedPhase === index ? ( ) : ( )}
{expandedPhase === index && (

Key Activities

    {phase.activities.map((activity, activityIndex) => (
  • {activity}
  • ))}

Deliverables & Outcomes

    {phase.deliverables.map((deliverable, deliverableIndex) => (
  • {deliverable}
  • ))}
)}
))}
{/* 6. Impact You Can Expect */}

{apiData.impact_section.title}

{apiData.impact_section.description}

{apiData.impact_section.impact_stats.map((stat) => { const IconComponent = getIconComponent(stat.icon_url); return (
{stat.value}

{stat.description}

{stat.label}

); })}

Additional Strategic Benefits

{apiData.impact_section.impact_benefits.map((benefit) => { const IconComponent = getIconComponent(benefit.icon_url); return (

{benefit.title}

{benefit.description}

); })}
{/* 7. Client Examples / Testimonials */} {/* 8. CTA Section */} {apiData.cta_section && (

{apiData.cta_section.text} {" "}Get in touch{" "} to drive exceptional strategic outcomes.

navigateTo(apiData.cta_section.cta_destination)} ariaLabel={apiData.cta_section.cta_text} /> {apiData.cta_section.description && (

{apiData.cta_section.description}

)}
)}
); }