'use client'; import { useState, useTransition } from 'react'; import { Modal } from '@/components/ui/Modal'; import { Input } from '@/components/ui/Input'; import { Button } from '@/components/ui/Button'; import { Badge } from '@/components/ui/Badge'; import { Avatar } from '@/components/ui/Avatar'; import { shareMotivatorSession, removeMotivatorShare } from '@/actions/moving-motivators'; import type { ShareRole } from '@prisma/client'; interface ShareUser { id: string; name: string | null; email: string; } interface Share { id: string; role: ShareRole; user: ShareUser; createdAt: Date; } interface MotivatorShareModalProps { isOpen: boolean; onClose: () => void; sessionId: string; sessionTitle: string; shares: Share[]; isOwner: boolean; } export function MotivatorShareModal({ isOpen, onClose, sessionId, sessionTitle, shares, isOwner, }: MotivatorShareModalProps) { const [email, setEmail] = useState(''); const [role, setRole] = useState('EDITOR'); const [error, setError] = useState(null); const [isPending, startTransition] = useTransition(); async function handleShare(e: React.FormEvent) { e.preventDefault(); setError(null); startTransition(async () => { const result = await shareMotivatorSession(sessionId, email, role); if (result.success) { setEmail(''); } else { setError(result.error || 'Erreur lors du partage'); } }); } async function handleRemove(userId: string) { startTransition(async () => { await removeMotivatorShare(sessionId, userId); }); } return (
{/* Session info */}

Session Moving Motivators

{sessionTitle}

{/* Share form (only for owner) */} {isOwner && (
setEmail(e.target.value)} className="flex-1" required />
{error &&

{error}

}
)} {/* Current shares */}

Collaborateurs ({shares.length})

{shares.length === 0 ? (

Aucun collaborateur pour le moment

) : (
    {shares.map((share) => (
  • {share.user.name || share.user.email}

    {share.user.name &&

    {share.user.email}

    }
    {share.role === 'EDITOR' ? 'Éditeur' : 'Lecteur'} {isOwner && ( )}
  • ))}
)}
{/* Help text */}

Éditeur : peut modifier les cartes et leurs positions
Lecteur : peut uniquement consulter

); }