import React, { useEffect, useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { Play, X, ExternalLink, Video, Maximize2, Tv, Monitor } from 'lucide-react'; import { PageHeader } from '../components/ui/PageHeader'; import { PageLayout } from '../components/layout/PageLayout'; import { getShowcaseContent } from '../services/ecosystem-api'; import type { ContentShowcase } from '../services/ecosystem-api'; // ── Helper: Extract YouTube video ID ── const extractYouTubeVideoId = (url: string): string | null => { const patterns = [ /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube\.com\/shorts\/)([a-zA-Z0-9_-]{11})/, /(?:youtube-nocookie\.com\/embed\/)([a-zA-Z0-9_-]{11})/, ]; for (const pattern of patterns) { const match = url.match(pattern); if (match) return match[1]; } return null; }; // ── Helper: Extract Instagram post/reel ID ── const extractInstagramId = (url: string): string | null => { const patterns = [ /instagram\.com\/p\/([a-zA-Z0-9_-]+)/, /instagram\.com\/reel\/([a-zA-Z0-9_-]+)/, /instagram\.com\/tv\/([a-zA-Z0-9_-]+)/ ]; for (const pattern of patterns) { const match = url.match(pattern); if (match) return match[1]; } return null; }; // ── YouTube Player Embed Component ── const YouTubeEmbed: React.FC<{ videoId: string }> = ({ videoId }) => { return (