Component Library

Every component the FinCheqIQ build will use, in every state it can reach. Later phases compose from this page — they do not restyle it, and they do not add a component here that isn't demonstrated below.

Foundations & tokens

Buttons

One primary action per screen region. Destructive actions never sit adjacent to the primary action without a confirmation step.

Variants · default state


States · hover, focus, active, disabled, loading

Loading buttons keep their width so the layout never jumps, and become pointer-events: none so a second submit is impossible.


Sizes

Inputs & controls

Every field carries a label, an optional hint, and a message slot reserved beneath it so validation never shifts the layout. Read-only and disabled are deliberately different: read-only keeps ink-coloured data behind a dashed border; disabled greys out entirely.

Text · states

Format: CHQ-YYYY-NNNNNNN. Helper text shows before the field is touched.

Cheque number must be six digits.

From Customer Master — not editable here.

Select · date · search

Post-dated and stale rules are bank-configured.

Recorded against the cheque's audit trail.0 / 280

File drop · toggles

Cheque image
Drop cheque images or click to browse TIFF, PNG or JPEG · front and back · up to 20 MB each

Image quality is assessed before extraction; low-quality images route to review, never to auto-approval.


Form validation primitives

The shared vocabulary every form in every later phase must use. The timing rules below are a contract, not a preference — inconsistent validation timing is the fastest way for an operations tool to feel untrustworthy.

Validation timing contract

TriggerWhat is validatedUsed for
On blurThe single field the user just left, if it was touched or is requiredEvery field, by default
On inputOnly a field already showing an error — so the error clears as soon as it is fixedError recovery only. Never used to raise a first error.
On submitThe whole form, plus the error-summary banner when two or more fields failEvery form
LiveFields marked data-live="true"Password strength and confirm-password match only

Conventions

  • Required fields take a brand-coloured asterisk after the label plus aria-required. Optional fields say “Optional” in muted text — never both conventions in one form.
  • Errors appear directly under the field with an icon, in danger ink, settling in over 220ms rather than popping.
  • Success affirmation is used sparingly — password match, verified code, resolved duplicate — never on every field.
  • Helper text is muted and sits in the same slot an error would take, so the layout never shifts.

Live demo · submit empty, then fix a field

Matched against the Customer Master.

Bank-specific — supplied by the bank, never defaulted by the platform.

Status badges

The states named in the FRD, each drawn from one of the seven families. Colour, glyph shape and the left state-cap always travel together.

Validation decision

Valid Invalid Review required Pending external system Processing error

Processing & workflow

Pending Processing Received Approved Rejected Archived

Signature verification

High confidence match Medium confidence — review Low confidence match No usable signature Signature region not detected

Duplicate detection & integration

No duplicate Exact duplicate Potential duplicate Duplicate confirmation required Retry pending Integration failed Core banking acknowledged

Solid variant · one per screen, for the headline decision

Valid Review required Invalid Pending external system

Status-change pulse · advance a cheque through its lifecycle

CHQ-2026-0041827 Received One 900ms pulse marks the change. No bounce, no repeat.

Confidence & risk indicators

The numeral is always present alongside the shape — a score is never communicated by colour alone. Bar meters carry a notch at the bank's configured threshold so a reviewer can see how far a field sits from the cut-off.

Field-level confidence

Amount (numeric)
97.4
Amount (words)
71.2
MICR line
99.1
Payee
34.0
Signature region

Threshold notch shown at 85 — illustrative. Actual thresholds are bank-configured and labelled Target — to be validated during POC.

Cheque-level scores

72 Confidence
60 Risk
91 Image quality

Signature comparison result

Similarity vs. SIG-REF-0091
68.3
Signature image quality
41.0
ClassificationMedium confidence — review
Static image-based comparison. This result is probabilistic and is not a guarantee of genuineness or proof of fraud. This notice appears wherever a signature result is displayed.

Data table

Dense by default, sticky header, row selection, and three states every queue screen must implement. At tablet it scrolls horizontally with the cheque ID pinned; at mobile it becomes one card per row.

0 selected
Cheque ID Customer Received Amount Signature Confidence Decision
CHQ-2026-0041827 Al Nahda Trading LLC
CUST-00214
14 Aug · 09:41 12,450.000 No usable signature 72.4 Review required
CHQ-2026-0041828 Muscat Marine Services SAOC
CUST-00871
14 Aug · 09:44 3,900.500 High confidence match 96.8 Valid
CHQ-2026-0041829 Sur Logistics Co.
CUST-01490
14 Aug · 09:52 147.250 Medium confidence 64.1 Processing
CHQ-2026-0041830 Bahla Foods LLC
CUST-00033
14 Aug · 10:03 88,000.000 High confidence match 93.7 Above approval threshold
CHQ-2026-0041831 Nizwa Contracting LLC
CUST-00762
14 Aug · 10:07 6,215.750 Low confidence match 28.9 Invalid
Showing 1–5 of 1,284 cheques
Rows per page

Cards & panels

Three shapes only: a content card, a KPI card, and a comparison card for putting master data beside extracted data — the pattern the review workbench, signature comparison and master screens all inherit. Every figure below is illustrative placeholder data, not a bank metric — actual volumes, STP rates and thresholds are supplied by the bank.

Straight-through processed
1,043/1,284
81.2% STPtoday
Awaiting manual review
147
14 past SLA
Pending integration queue
62
No live connection
Value in validated queue
OMR 4.82m
Illustrative placeholder data

Cheque summary

Review required
Cheque IDCHQ-2026-0041827
Amount (numeric)OMR 12,450.000
Amount (words)Twelve thousand four hundred and fifty
Cheque date14 Aug 2026
Duplicate checkNo duplicate
Engine v2.4.1 · 14 Aug 09:41:22

Master data comparison

2 mismatches
FieldCustomer MasterExtracted
Account number0142-556-889-0040142-556-889-004
Account holderAl Nahda Trading LLCAl Nahda Trdg LLC
BranchMCT-014MCT-014
CurrencyOMROMR
Account statusActiveDormant — per last sync

Modal, drawer & toast

Drawers carry context beside a table — the review workbench pattern. Modals carry a decision that must be made before anything else continues. Toasts confirm something that already happened and never carry a decision.

Navigation & feedback

Tabs, breadcrumbs, tooltips, the user menu and the notification bell — all live in the topbar above. Repeated here in isolation so later phases can copy the exact markup.

Tabs

Twelve fields extracted; two fell below the configured confidence threshold and are flagged for the reviewer.


Breadcrumbs

Tooltip · avatar · bell · pagination

Pending external system Validated, but held in the Pending Integration Queue because no live core banking connection is configured for this environment. NHRA+6 7

Empty state · used wherever a list can be empty

Nothing awaiting your approval

Every exception assigned to you has been actioned. New items appear here the moment a maker submits.