AFN AFN Widgets
Gallery
Production Available v1.0.0

Top 10 Loan Officers

Ranked by production

Live preview

Rendered from sample data fed via .data — exactly how your app feeds it.

Data contract

ColumnTypeReq
Name string
Value number
Sub string
Rank number
Format string

Emits ready, error and widget-select when a mark is clicked — wiring up drill-down.

Embed code

URL:
Colours:
<!-- 1. Load the widget (self-registers <afn-top10loanofficers>) -->
<script type="module" src="https://widgets-d.afnai.com/cdn/afn-top10loanofficers/v1/afn-top10loanofficers.js"></script>

<!-- 2. Drop the tag -->
<afn-top10loanofficers id="w"></afn-top10loanofficers>

<!-- 3. Feed your data -->
<script>
  const el = document.querySelector('#w');
  el.data = [
    {"Name":"Sarah Chen","Value":8420000,"Sub":"32 loans","Format":"money"},
    {"Name":"Marcus Reed","Value":7650000,"Sub":"28 loans","Format":"money"},
    {"Name":"Priya Nair","Value":6980000,"Sub":"26 loans","Format":"money"},
    {"Name":"David Kim","Value":6210000,"Sub":"24 loans","Format":"money"},
    {"Name":"Elena Ross","Value":5540000,"Sub":"21 loans","Format":"money"},
    {"Name":"James Okoro","Value":4870000,"Sub":"19 loans","Format":"money"},
    {"Name":"Lena Park","Value":4210000,"Sub":"17 loans","Format":"money"},
    {"Name":"Tom Alvarez","Value":3760000,"Sub":"15 loans","Format":"money"}
  ];
</script>

v1 gets non-breaking fixes automatically; a breaking change bumps to the next major and never touches your embed. Bring-your-own-data: your app feeds the rows via .data. Integration guide — framework setup, versioning and the origin allowlist.