# SanctionsScreening

> A screening hit with list source, match strength and the reviewer's disposition.

Source: https://lopifi.com/components/sanctions-screening
Part of: Lopifi — US GAAP books on autopilot, checked by a CPA (https://lopifi.com)

---

- **Family:** Tax & compliance — The obligations around the books: what is due to whom, who has been verified, and which controls held.
- **Status:** Implemented
- **Spec:** https://lopifi.com/docs/catalog/14-tax-compliance

## Install

```bash
npx shadcn@latest add @lopifi/theme
npx shadcn@latest add @lopifi/sanctions-screening
```

## Specification

One screening hit, laid out so a reviewer can decide it: the screened name beside the listed name, a field-by-field comparison (exact, partial, no match), the list source with its entry id and refresh date, the provider's match strength and score, and the disposition (`true-match | false-positive | escalated`) with reviewer, timestamp and rationale.

**Dispositions are append-only.** There's no clear, no dismiss and no edit. A changed mind is a new record with its own reason, and the earlier one stays in the history. Paying a sanctioned party is a legal event, not an accounting one ([procure to pay](https://lopifi.com/md/docs/domain/06-procure-to-pay)), and a hit that vanished without a reviewer's name is exactly what an examiner asks about.

**Refuses to render:** an anonymous disposition. The form names the reviewer and requires a rationale, and without `reviewer` and `onRecord` the hit renders read-only. An escalated hit is still open.

**Data, not constants:** the list's name, version and refresh date, and the strength thresholds, are the provider's. Demos use an illustrative list and fictional parties.

**Accessibility:** native radio inputs, so the browser owns the arrow keys. A real `<form>` and `<fieldset>`. The current disposition is a `status` region.

## Rules this component obeys

Money is minor units, never floats. `null` is not `0` and neither is redacted. Negatives render in accounting parentheses with the parenthesis column reserved on both sides. Debit and credit are two columns. Per-currency decimal places. Polarity is explicit — up is not always good. Every figure states its period, entity, currency, basis and as-of.
