import type { Meta, StoryObj } from '@storybook/react-vite'; import { http, HttpResponse } from 'msw'; import { AdminModerationView } from './AdminModerationView'; import { ToastProvider } from '../../components/feedback/ToastProvider'; /** * AdminModerationView - Queue de modération * * Interface de traitement des signalements avec onglets * pour pending/reviewed/resolved et actions de modération. */ const meta: Meta = { title: 'Components/Features/Admin/AdminModerationView', component: AdminModerationView, parameters: { layout: 'fullscreen', docs: { description: { component: 'Queue de modération avec actions ban, resolve, dismiss et warning.', }, }, }, tags: ['autodocs'], decorators: [ (Story) => (
), ], }; export default meta; type Story = StoryObj; /** * État par défaut avec rapports en attente. */ export const Default: Story = { name: 'Par défaut', }; /** * Vue de la queue avec rapports en attente. */ export const Queue: Story = { name: 'Queue de modération', parameters: { docs: { description: { story: 'Liste des signalements en attente de traitement.', }, }, }, }; /** * État de chargement. */ export const Loading: Story = { name: 'Chargement', parameters: { msw: { handlers: [ http.get('*/api/v1/admin/reports', async () => { await new Promise(() => {}); return HttpResponse.json({ reports: [], pagination: { total: 0, limit: 20, offset: 0 } }); }), ], }, docs: { description: { story: 'Skeleton pendant le chargement des rapports.', }, }, }, }; /** * État vide - tous les rapports traités. */ export const Empty: Story = { name: 'Queue vide', parameters: { msw: { handlers: [ http.get('*/api/v1/admin/reports', () => HttpResponse.json({ reports: [], pagination: { total: 0, limit: 20, offset: 0 } })), ], }, docs: { description: { story: 'Message affiché quand tous les signalements ont été traités.', }, }, }, }; /** * État d'erreur. */ export const Error: Story = { name: 'Erreur', parameters: { msw: { handlers: [ http.get('*/api/v1/admin/reports', () => HttpResponse.json({ error: 'Failed to list reports' }, { status: 500 })), ], }, docs: { description: { story: 'Affichage en cas d\'échec du chargement.', }, }, }, };