"use client";

import { AlertCircle } from "lucide-react";

import { ListPageCard } from "@/app/dashboard/_components";
import { useClearFiltersRefresh } from "@/app/dashboard/_components/data-table";
import { ErrorBanner } from "@/components/shared/error-banner";

import { LIST_HREF } from "./constants";
import { MissingStructureMasterHeaderActions } from "./list-header-actions";
import { MissingStructureMasterTable } from "./missing-structure-master-table";
import type { MissingStructureMasterRow } from "./schema";

type Props = {
  rows: MissingStructureMasterRow[];
  filters: {
    ticker: string;
    xmlId: string;
    bankName: string;
    tempId: string;
  };
  totalCount: number;
  page: number;
  pageSize: number;
  pageCount: number;
  errorMessage?: string | null;
};

export function MissingStructureMasterPageClient({
  rows,
  filters,
  totalCount,
  page,
  pageSize,
  pageCount,
  errorMessage = null,
}: Props) {
  const { resetKey, isRefreshing, onRefresh } = useClearFiltersRefresh({
    clearToHref: LIST_HREF,
  });

  return (
    <ListPageCard
      icon={AlertCircle}
      title="View missing parent ISIN structure master"
      description="Temp transactions (Sr class) whose ticker is not yet in structure master."
      breadcrumb={[{ label: "Master Table" }, { label: "Missing structure master" }]}
      actions={
        <MissingStructureMasterHeaderActions
          isRefreshing={isRefreshing}
          onRefresh={onRefresh}
        />
      }
    >
      <ErrorBanner message={errorMessage} className="mb-4" />
      <MissingStructureMasterTable
        key={resetKey}
        data={rows}
        filters={filters}
        totalCount={totalCount}
        page={page}
        pageSize={pageSize}
        pageCount={pageCount}
      />
    </ListPageCard>
  );
}
