// src/components/backlink/domain-profile-columns.tsx
"use client";

import type { ColumnDef } from "@tanstack/react-table";
import { Badge } from "@/components/ui/badge";
import type { DomainBacklink } from "@/lib/backlink/domain-profile-types";

const dash = <span className="text-muted-foreground">—</span>;

export const domainProfileColumns: ColumnDef<DomainBacklink>[] = [
  {
    id: "sourceDomain",
    header: "Domaine source",
    cell: ({ row }) => (
      <a
        href={row.original.sourceUrl}
        target="_blank"
        rel="noopener noreferrer"
        className="text-primary hover:underline"
      >
        {row.original.sourceDomain}
      </a>
    ),
  },
  {
    accessorKey: "anchor",
    header: "Ancre",
    cell: ({ row }) =>
      row.original.anchor ? (
        <span className="block max-w-[220px] truncate">
          {row.original.anchor}
        </span>
      ) : (
        dash
      ),
  },
  {
    accessorKey: "authority",
    header: "Autorité",
    cell: ({ row }) =>
      row.original.authority == null ? dash : row.original.authority,
  },
  {
    id: "dofollow",
    header: "Dofollow",
    cell: ({ row }) =>
      row.original.nofollow ? (
        <span className="text-muted-foreground" title="Nofollow">
          <span aria-hidden>✗</span>
          <span className="sr-only">Nofollow</span>
        </span>
      ) : (
        <span className="text-green-600" title="Dofollow">
          <span aria-hidden>✓</span>
          <span className="sr-only">Dofollow</span>
        </span>
      ),
  },
  {
    accessorKey: "placement",
    header: "Placement",
    cell: ({ row }) => row.original.placement,
  },
  {
    accessorKey: "firstSeen",
    header: "1ère vue",
    cell: ({ row }) =>
      row.original.firstSeen
        ? new Date(row.original.firstSeen).toLocaleDateString("fr-FR")
        : dash,
  },
  {
    id: "status",
    header: "État",
    cell: ({ row }) =>
      row.original.isLost ? (
        <Badge variant="destructive">Perdu</Badge>
      ) : row.original.isNew ? (
        <Badge variant="secondary">Nouveau</Badge>
      ) : (
        dash
      ),
  },
];
