'use client' import type { CreationStreamEvent } from '@/types/creation' interface Props { events: CreationStreamEvent[] done: boolean } export function CreationProgress({ events, done }: Props) { const lastProgress = [...events].reverse().find(e => e.type === 'progress') as Extract | undefined const doneEvent = events.find(e => e.type === 'done') as Extract | undefined const errors = events.filter(e => e.type === 'error') as Array> const skipped = events.filter(e => e.type === 'skipped') as Array> return (
{lastProgress && !done && (
{lastProgress.step} {lastProgress.current}/{lastProgress.total}

{lastProgress.tab} — {lastProgress.title}

)} {skipped.length > 0 && (
{skipped.map((e, i) => (
⚠️ {e.title} — SKU {e.sku} déjà présent dans Shopify, ignoré
))}
)} {errors.length > 0 && (
{errors.map((e, i) => (
{e.title} — {e.message}
))}
)} {doneEvent && (

{doneEvent.summary.status === 'success' ? '✓ Terminé' : doneEvent.summary.status === 'partial' ? '⚠ Partiel' : '✗ Erreur'}

{doneEvent.summary.created} créé{doneEvent.summary.created > 1 ? 's' : ''} {doneEvent.summary.skipped > 0 && ` — ${doneEvent.summary.skipped} déjà existant${doneEvent.summary.skipped > 1 ? 's' : ''} (ignorés)`} {doneEvent.summary.errors > 0 && ` — ${doneEvent.summary.errors} erreur${doneEvent.summary.errors > 1 ? 's' : ''}`}

)} {!done && !lastProgress &&

Démarrage…

}
) }