"use client";

import type { ColumnDef } from "@tanstack/react-table";
import { Pencil } from "lucide-react";
import Link from "next/link";

import { Button } from "@/components/ui/button";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { FRONTEND_ROUTES } from "@/config/frontend-routes";

import type { MissingStructureMasterRow } from "./schema";

const STRUCTURE_CREATE_BASE = "/dashboard/master-table/structure-master/create";

export const missingStructureMasterColumns: ColumnDef<MissingStructureMasterRow>[] = [
  {
    accessorKey: "ticker",
    header: "Ticker",
    cell: ({ row }) => (
      <span className="font-mono text-sm font-medium">{row.original.ticker}</span>
    ),
  },
  {
    accessorKey: "xmlId",
    header: "Upload / Bank API",
    cell: ({ row }) => (
      <Link
        href={FRONTEND_ROUTES.xmlApis.tempData.filteredPage(
          String(row.original.xmlIdOriginalId),
        )}
        className="text-primary text-sm hover:underline"
      >
        {row.original.xmlId}
      </Link>
    ),
  },
  {
    accessorKey: "bankName",
    header: "Bank API",
    cell: ({ row }) => (
      <Link
        href={FRONTEND_ROUTES.xmlApis.tempData.filteredPage(
          String(row.original.xmlIdOriginalId),
        )}
        className="text-primary text-sm hover:underline"
      >
        {row.original.bankName}
      </Link>
    ),
  },
  {
    accessorKey: "id",
    header: "Temp ID",
    cell: ({ row }) => (
      <span className="text-muted-foreground text-sm tabular-nums">{row.original.id}</span>
    ),
  },
  {
    id: "options",
    header: () => <span className="block w-full text-right">Options</span>,
    enableColumnFilter: false,
    cell: ({ row }) => (
      <div className="flex justify-end">
        <Tooltip>
          <TooltipTrigger asChild>
            <Button variant="secondary" size="icon-sm" className="size-7" asChild>
              <Link
                href={`${STRUCTURE_CREATE_BASE}?ISIN=${encodeURIComponent(row.original.ticker)}`}
                aria-label="Create structure for ISIN"
              >
                <Pencil className="size-3.5" />
              </Link>
            </Button>
          </TooltipTrigger>
          <TooltipContent>Create structure</TooltipContent>
        </Tooltip>
      </div>
    ),
    enableSorting: false,
  },
];
