Skip to main content
Skip to main content
GDP per capita: hover for details, click to select
FijiTanzaniaWestern SaharaCanada: $53,400 per personUnited States: $85,800 per personKazakhstanUzbekistanPapua New GuineaIndonesia: $4,900 per personArgentina: $13,900 per personChileDemocratic Republic of the CongoSomaliaKenyaSudanChadHaitiDominican RepublicRussia: $14,900 per personBahamasFalkland IslandsNorwayGreenlandTimor-LesteSouth Africa: $6,000 per personLesothoMexico: $14,000 per personUruguayBrazil: $10,300 per personBoliviaPeruColombiaPanamaCosta RicaNicaraguaHondurasEl SalvadorGuatemalaBelizeVenezuelaGuyanaSurinameFrance: $46,200 per personEcuadorPuerto RicoJamaicaCubaZimbabweBotswanaNamibiaSenegalMaliMauritaniaBeninNigerNigeria: $800 per personCameroonTogoGhanaCôted'IvoireGuineaGuinea-BissauLiberiaSierra LeoneBurkina FasoCentral African RepublicRepublic of the CongoGabonEquatorial GuineaZambiaMalawiMozambiqueEswatiniAngolaBurundiIsraelLebanonMadagascarPalestineThe GambiaTunisiaAlgeriaJordanUnited Arab EmiratesQatarKuwaitIraqOmanVanuatuCambodiaThailandLao PDRMyanmarVietnamDem. Rep. KoreaRepublic of Korea: $36,100 per personMongoliaIndia: $2,700 per personBangladeshBhutanNepalPakistanAfghanistanTajikistanKyrgyzstanTurkmenistanIranSyriaArmeniaSwedenBelarusUkrainePolandAustriaHungaryMoldovaRomaniaLithuaniaLatviaEstoniaGermany: $55,800 per personBulgariaGreeceTurkey: $15,500 per personAlbaniaCroatiaSwitzerlandLuxembourgBelgiumNetherlandsPortugalSpainIrelandNew CaledoniaSolomon IslandsNew ZealandAustralia: $64,700 per personSri LankaChina: $13,300 per personTaiwanItalyDenmarkUnited Kingdom: $52,600 per personIcelandAzerbaijanGeorgiaPhilippinesMalaysiaBrunei DarussalamSloveniaFinlandSlovakiaCzech RepublicEritreaJapan: $32,500 per personParaguayYemenSaudi Arabia: $33,000 per personNorthern CyprusCyprusMoroccoEgypt: $3,300 per personLibyaEthiopiaDjiboutiSomalilandUgandaRwandaBosnia and HerzegovinaMacedoniaSerbiaMontenegroKosovoTrinidad and TobagoSouth SudanCanada: $53,400 per personUnited States: $85,800 per personIndonesia: $4,900 per personArgentina: $13,900 per personRussia: $14,900 per personSouth Africa: $6,000 per personMexico: $14,000 per personBrazil: $10,300 per personFrance: $46,200 per personNigeria: $800 per personRepublic of Korea: $36,100 perpersonIndia: $2,700 per personGermany: $55,800 per personTurkey: $15,500 per personAustralia: $64,700 per personChina: $13,300 per personUnited Kingdom: $52,600 per personJapan: $32,500 per personSaudi Arabia: $33,000 per personEgypt: $3,300 per person
import * as React from "react";
import { useState } from "react";
import WorldMap from "react-svg-worldmap";
import { gdpData } from "../data/CountryData";
import { useMapTheme } from "./mapTheme";

const money = new Intl.NumberFormat("en", {
style: "currency",
currency: "USD",
maximumFractionDigits: 0,
});

export default function App(): JSX.Element {
const theme = useMapTheme();
const [selected, setSelected] = useState<string>();

// Hover shows a formatted tooltip; click outlines the country.
return (
<WorldMap
{...theme}
title="GDP per capita: hover for details, click to select"
color="#22c55e"
data={gdpData}
tooltipTextFunction={({ countryName, countryValue = 0 }) =>
`${countryName}: ${money.format(countryValue)} per person`
}
onClickFunction={({ countryCode }) => setSelected(countryCode)}
styleFunction={({ countryCode, countryValue, minValue, maxValue }) => ({
fill: "#22c55e",
fillOpacity:
countryValue === undefined
? 0
: 0.2 + (0.6 * (countryValue - minValue)) / (maxValue - minValue),
stroke: countryCode === selected ? theme.borderColor : "#9ca3af",
strokeWidth: countryCode === selected ? 2 : 0.5,
cursor: "pointer",
})}
/>
);
}