"use client"; import { useState, useEffect, useCallback } from "react"; import { Menu, X, RefreshCw } from "lucide-react"; import { Button } from "@/components/ui/button"; import { toast } from "sonner"; import { DashboardSidebar, PromptEngineerTab, ImagesTab, VideosTab, MonetizationTab, PostsTab, StorytellingTab, AutomationTab, InfluencersTab, PetsTab, TrendsTab, ContentTab, } from "@/components/dashboard"; import { apiFetch, type Content, type Platform, type Post, type Story, type Automation, type Pet } from "@/components/dashboard/types"; export default function Dashboard() { const [sidebarOpen, setSidebarOpen] = useState(true); const [activeTab, setActiveTab] = useState("prompt-engineer"); const [loading, setLoading] = useState(false); // Shared state loaded at dashboard level const [contents, setContents] = useState([]); const [platforms, setPlatforms] = useState([]); const [posts, setPosts] = useState([]); const [stories, setStories] = useState([]); const [automations, setAutomations] = useState([]); const [pets, setPets] = useState([]); const [includePetInContent, setIncludePetInContent] = useState(false); const [stats, setStats] = useState({ images: 0, videos: 0, stories: 0, automations: 0, pets: 0 }); const loadData = useCallback(async () => { setLoading(true); try { const [contentRes, platformsRes, postsRes, storiesRes, automationRes, petsRes] = await Promise.all([ apiFetch("/content"), apiFetch("/monetization"), apiFetch("/posts"), apiFetch("/storytelling"), apiFetch("/automation"), apiFetch("/pets"), ]); if (contentRes.success) { setContents(contentRes.contents); setStats({ images: contentRes.stats?.images || 0, videos: contentRes.stats?.videos || 0, stories: storiesRes?.total || 0, automations: automationRes?.stats?.total || 0, pets: petsRes?.total || 0, }); } if (platformsRes.success) setPlatforms(platformsRes.userPlatforms); if (postsRes.success) setPosts(postsRes.posts); if (storiesRes.success) setStories(storiesRes.stories); if (automationRes.success) setAutomations(automationRes.automations); if (petsRes.success) setPets(petsRes.pets); } catch { toast.error("Error al cargar datos"); } finally { setLoading(false); } }, []); useEffect(() => { loadData(); }, [loadData]); const renderActiveTab = () => { switch (activeTab) { case "prompt-engineer": return ; case "images": return ; case "videos": return ; case "monetization": return ; case "posts": return ; case "storytelling": return ; case "automation": return ; case "influencers": return ; case "pets": return ; case "trends": return ; case "content": return ; default: return null; } }; return (
{/* Header */}

{activeTab.replace(/-/g, " ")}

{/* Main Content */}
{renderActiveTab()}
); }