import { Head, Link, router } from '@inertiajs/react';
import { ArrowLeft, Trash2 } from 'lucide-react';
import { useState } from 'react';
import { ConfirmDialog } from '@/components/admin/confirm-dialog';
import { Button } from '@/components/ui/button';

interface Message { id: number; name: string; email: string; subject: string | null; body: string; is_read: boolean; created_at: string }

export default function MessageShow({ message }: { message: Message }) {
    const [confirmOpen, setConfirmOpen] = useState(false);

    return (
        <>
            <Head title="Message" />
            <div className="space-y-6">
                <div className="flex items-center gap-2 text-sm">
                    <Link href="/admin/messages" className="text-muted-foreground hover:text-foreground">Messages</Link>
                    <span className="text-muted-foreground">/</span>
                    <span className="font-medium">View</span>
                </div>

                <div className="flex items-start justify-between gap-4">
                    <Button variant="outline" size="sm" asChild>
                        <Link href="/admin/messages"><ArrowLeft className="mr-2 h-4 w-4" />Back</Link>
                    </Button>
                    <Button variant="destructive" size="sm" onClick={() => setConfirmOpen(true)}>
                        <Trash2 className="mr-2 h-4 w-4" />Delete
                    </Button>
                </div>

                <div className="max-w-2xl rounded-xl border border-border bg-card p-6 space-y-4">
                    <div className="border-b border-border pb-4">
                        <h1 className="text-lg font-semibold">{message.subject ?? '(No subject)'}</h1>
                        <p className="text-sm text-muted-foreground mt-1">
                            From <strong>{message.name}</strong> &lt;{message.email}&gt;
                        </p>
                        <p className="text-xs text-muted-foreground mt-0.5">
                            {new Date(message.created_at).toLocaleString('en-GB')}
                        </p>
                    </div>
                    <div className="whitespace-pre-wrap text-sm leading-relaxed">{message.body}</div>
                    <div className="pt-2">
                        <a
                            href={`mailto:${message.email}?subject=Re: ${message.subject ?? ''}`}
                            className="inline-flex items-center gap-2 text-sm font-medium text-primary hover:underline"
                        >
                            Reply via email →
                        </a>
                    </div>
                </div>
            </div>

            <ConfirmDialog open={confirmOpen} onOpenChange={setConfirmOpen} title="Delete message?" description="This is permanent." confirmLabel="Delete" variant="danger"
                onConfirm={() => router.delete(`/admin/messages/${message.id}`, { onSuccess: () => router.visit('/admin/messages') })} />
        </>
    );
}
