import { Head, Link } from '@inertiajs/react';

import HeadingSmall from '@/components/heading-small';
import AppLayout from '@/layouts/app-layout';
import { index as supplierProductsIndex, show as supplierProductsShow } from '@/routes/admin/supplier-products';

type SupplierProduct = {
    id: number;
    external_id: string;
    status: string;
    payload: Record<string, unknown> | null;
    updated_at: string;
    supplier: { id: number; name: string; slug: string } | null;
    utility: { id: number; name: string } | null;
    state: { id: number; code: string; name: string } | null;
};

type Props = {
    supplierProduct: SupplierProduct;
};

function StatusBadge({ status }: { status: string }) {
    const colors: Record<string, string> = {
        active: 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300',
        inactive: 'bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400',
        archived: 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-300',
    };

    return (
        <span
            className={`inline-block rounded-full px-2 py-0.5 text-xs font-medium ${colors[status] ?? 'bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400'}`}
        >
            {status}
        </span>
    );
}

export default function SupplierProductShow({ supplierProduct }: Props) {
    const supplierName = supplierProduct.supplier?.name ?? 'Unknown';
    const title = `${supplierName} / ${supplierProduct.external_id}`;

    const breadcrumbs = [
        {
            title: 'Supplier Products',
            href: supplierProductsIndex.url({
                query: { supplier_id: supplierProduct.supplier?.id ?? '' },
            }),
        },
        { title: supplierProduct.external_id, href: supplierProductsShow.url(supplierProduct.id) },
    ];

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={title} />

            <div className="space-y-6">
                <div className="flex items-center gap-3">
                    <HeadingSmall
                        title={title}
                        description={`${supplierProduct.utility?.name ?? '—'} · ${supplierProduct.state?.code ?? '—'}`}
                    />
                    <StatusBadge status={supplierProduct.status} />
                </div>

                <div className="space-y-2">
                    <h2 className="text-sm font-medium text-zinc-900 dark:text-zinc-100">Raw payload</h2>

                    <div className="overflow-hidden rounded-md border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-950">
                        {supplierProduct.payload !== null ? (
                            <pre className="overflow-auto p-4 font-mono text-xs text-zinc-700 dark:text-zinc-300">
                                {JSON.stringify(supplierProduct.payload, null, 2)}
                            </pre>
                        ) : (
                            <p className="p-4 text-sm text-zinc-500 dark:text-zinc-400">No payload stored for this product.</p>
                        )}
                    </div>
                </div>
            </div>
        </AppLayout>
    );
}
