/**
 * UnarmedEntities feature — admin view for system_health_findings.
 *
 * Renders a table of unresolved unarmed_entity findings.
 * Each row has a "Re-arm now" button that POSTs to /api/admin/system-health/rearm.
 *
 * Used on: /admin/system/health (health tab)
 */

'use client';

import { useState } from 'react';
import { useT } from '@/lib/i18n/react';
import { EmptyState } from '@/components/ui/feedback/EmptyState';
import { HealthFindingRow } from '@/components/ui/domain/admin/HealthFindingRow';
import type { HealthFindingRowData } from '@/components/ui/domain/admin/HealthFindingRow';
import { Table } from '@/components/ui/primitives/Table';

interface UnarmedEntitiesProps {
  initialFindings: HealthFindingRowData[];
}

export function UnarmedEntities({ initialFindings }: UnarmedEntitiesProps) {
  const t = useT('admin_system_health');
  const [findings, setFindings] = useState<HealthFindingRowData[]>(initialFindings);

  function handleRearmDone(id: string) {
    setFindings((prev) => prev.filter((f) => f.id !== id));
  }

  return (
    <div className="flex flex-col gap-6 p-6">
      {findings.length === 0 ? (
        <EmptyState
          title={t('empty_title')}
          description={t('empty_desc')}
          icon={
            <svg
              aria-hidden="true"
              width="40"
              height="40"
              viewBox="0 0 24 24"
              fill="none"
              stroke="currentColor"
              strokeWidth="1.5"
              strokeLinecap="round"
              strokeLinejoin="round"
            >
              <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14" />
              <polyline points="22 4 12 14.01 9 11.01" />
            </svg>
          }
        />
      ) : (
        <Table aria-label={t('page_title')}>
          <Table.Head className="bg-surface-app">
            <Table.Row>
              <Table.HeadCell>{t('col_entity_type')}</Table.HeadCell>
              <Table.HeadCell>{t('col_entity_id')}</Table.HeadCell>
              <Table.HeadCell>{t('col_detail')}</Table.HeadCell>
              <Table.HeadCell>{t('col_first_seen')}</Table.HeadCell>
              <Table.HeadCell>{t('col_last_seen')}</Table.HeadCell>
              <Table.HeadCell>{t('col_action')}</Table.HeadCell>
            </Table.Row>
          </Table.Head>
          <Table.Body>
            {findings.map((finding) => (
              <HealthFindingRow key={finding.id} finding={finding} onRearmDone={handleRearmDone} />
            ))}
          </Table.Body>
        </Table>
      )}
    </div>
  );
}
