Files
Socialflow/client/src/pages/analytics.tsx
T
michaelschal 5829873f8c Add all application pages and their functionalities
Add new routes and components for AI, Calendar, Media, Pages Management, Analytics, History, and Settings.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/vhNnBGJ
2025-10-01 13:36:26 +00:00

111 lines
4.2 KiB
TypeScript

import { useState } from "react";
import { useQuery } from "@tanstack/react-query";
import { TrendingUp, Users, Eye, Heart } from "lucide-react";
import Sidebar from "@/components/sidebar";
import TopBar from "@/components/topbar";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
export default function Analytics() {
const [sidebarOpen, setSidebarOpen] = useState(false);
const { data: stats } = useQuery({
queryKey: ['/api/stats'],
});
return (
<div className="flex h-screen overflow-hidden bg-background">
{sidebarOpen && (
<div
className="fixed inset-0 bg-black/50 z-40 lg:hidden"
onClick={() => setSidebarOpen(false)}
/>
)}
<div className={`
fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out
${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'}
`}>
<Sidebar />
</div>
<main className="flex-1 overflow-y-auto">
<TopBar onMenuClick={() => setSidebarOpen(!sidebarOpen)} />
<div className="p-6">
<div className="mb-6">
<h1 className="text-3xl font-bold text-foreground">Analyses</h1>
<p className="text-muted-foreground mt-2">
Statistiques et performances de vos publications
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
<Card>
<CardHeader className="flex flex-row items-center justify-between pb-2">
<CardTitle className="text-sm font-medium text-muted-foreground">
Publications totales
</CardTitle>
<TrendingUp className="w-4 h-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold" data-testid="text-total-posts">0</div>
<p className="text-xs text-muted-foreground">Toutes plateformes</p>
</CardContent>
</Card>
<Card>
<CardHeader className="flex flex-row items-center justify-between pb-2">
<CardTitle className="text-sm font-medium text-muted-foreground">
Portée totale
</CardTitle>
<Users className="w-4 h-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold" data-testid="text-total-reach">0</div>
<p className="text-xs text-muted-foreground">Personnes atteintes</p>
</CardContent>
</Card>
<Card>
<CardHeader className="flex flex-row items-center justify-between pb-2">
<CardTitle className="text-sm font-medium text-muted-foreground">
Impressions
</CardTitle>
<Eye className="w-4 h-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold" data-testid="text-total-impressions">0</div>
<p className="text-xs text-muted-foreground">Vues totales</p>
</CardContent>
</Card>
<Card>
<CardHeader className="flex flex-row items-center justify-between pb-2">
<CardTitle className="text-sm font-medium text-muted-foreground">
Engagement
</CardTitle>
<Heart className="w-4 h-4 text-muted-foreground" />
</CardHeader>
<CardContent>
<div className="text-2xl font-bold" data-testid="text-total-engagement">0</div>
<p className="text-xs text-muted-foreground">Interactions totales</p>
</CardContent>
</Card>
</div>
<Card>
<CardHeader>
<CardTitle>Fonctionnalité à venir</CardTitle>
</CardHeader>
<CardContent>
<p className="text-muted-foreground">
Les analyses détaillées et les graphiques de performance seront disponibles prochainement.
</p>
</CardContent>
</Card>
</div>
</main>
</div>
);
}