"use client";

import type { ColumnDef } from "@tanstack/react-table";

import { LiveBadge, MarketPriceAgeBadge, ParentIsinBadge } from "./badges";
import type { UniqueIsinRow } from "./schema";

export const uniqueIsinColumns: ColumnDef<UniqueIsinRow>[] = [
  {
    accessorKey: "isin",
    header: "ISIN",
    cell: ({ row }) => (
      <div className="flex flex-wrap items-center gap-2 min-w-[200px]">
        <span className="font-mono text-sm font-medium">{row.original.isin}</span>
        {row.original.isLive || row.original.isAccumulatorLive ? <LiveBadge /> : null}
        {row.original.isParentIsin ? <ParentIsinBadge /> : null}
      </div>
    ),
  },
  {
    accessorKey: "marketPrice",
    header: () => <span className="block w-full text-right">Market price</span>,
    enableColumnFilter: false,
    enableSorting: true,
    cell: ({ row }) => {
      const price = row.original.marketPrice?.trim();
      return (
        <span className="block text-right font-medium tabular-nums text-sm">
          {price ? price : "—"}
        </span>
      );
    },
  },
  {
    accessorKey: "marketPriceDate",
    header: "Market price date",
    enableColumnFilter: false,
    enableSorting: true,
    sortingFn: (a, b) => {
      const aIso = a.original.marketPriceDateIso ?? "";
      const bIso = b.original.marketPriceDateIso ?? "";
      return aIso.localeCompare(bIso);
    },
    cell: ({ row }) => (
      <div className="flex flex-wrap items-center gap-2 text-sm">
        <span>{row.original.marketPriceDate ?? "—"}</span>
        {row.original.marketPriceDaysAgo !== null ? (
          <MarketPriceAgeBadge days={row.original.marketPriceDaysAgo} />
        ) : null}
      </div>
    ),
  },
  {
    accessorKey: "dataUpdateDate",
    header: "Data update date",
    enableColumnFilter: false,
    enableSorting: true,
    sortingFn: (a, b) => {
      const aIso = a.original.dataUpdateDateIso ?? "";
      const bIso = b.original.dataUpdateDateIso ?? "";
      return aIso.localeCompare(bIso);
    },
    cell: ({ row }) => (
      <span className="text-muted-foreground text-sm whitespace-nowrap">
        {row.original.dataUpdateDate ?? "—"}
      </span>
    ),
  },
];
