import React, { useState, useMemo } from 'react'; import { Helmet } from 'react-helmet'; import { useNavigate } from 'react-router-dom'; import { Eye, Ticket, CheckCircle, Clock, AlertTriangle } from 'lucide-react'; import DataTable from '@/components/DataTable'; import StatusBadge from '@/components/StatusBadget'; import KPIBar from '@/components/KPIBar'; import { mockTickets, calculateKPIs } from '@/data/mockData'; const TicketsPage = () => { const navigate = useNavigate(); const [period, setPeriod] = useState('month'); const kpis = useMemo(() => { const stats = calculateKPIs(mockTickets, period, { dateField: 'openDate', amountField: 'id' }); const resolved = stats.items.filter(t => t.status === 'resolved' || t.status === 'closed'); const open = stats.items.filter(t => t.status === 'open' || t.status === 'in-progress'); return [ { title: 'Tickets Ouverts', value: open.length, change: '+2', trend: 'up', icon: Ticket }, { title: 'Tickets Résolus', value: resolved.length, change: '+5', trend: 'up', icon: CheckCircle }, { title: 'SLA Moyen', value: '96%', change: '+1%', trend: 'up', icon: Clock }, { title: 'Tickets Critiques', value: stats.items.filter(t => t.priority === 'critical').length, change: '-1', trend: 'down', icon: AlertTriangle }, ]; }, [period]); const columns = [ { key: 'number', label: 'Numéro', sortable: true }, { key: 'client', label: 'Client', sortable: true }, { key: 'subject', label: 'Sujet', sortable: true }, { key: 'priority', label: 'Priorité', sortable: true, render: (value) => }, { key: 'status', label: 'Statut', sortable: true, render: (value) => }, { key: 'assignedTo', label: 'Assigné à', sortable: true }, { key: 'openDate', label: 'Date ouverture', sortable: true }, ]; const actions = (row) => ( ); return ( <> Tickets - Bijou ERP

Tickets Support

{mockTickets.length} tickets

navigate(`/tickets/${row.id}`)} actions={actions} />
); }; export default TicketsPage;