flotilla/src/lib/currency.ts

176 lines
9.2 KiB
TypeScript
Raw Normal View History

2026-07-28 16:16:26 +00:00
import {spec} from "@welshman/lib"
2026-02-03 21:21:21 +00:00
export type CurrencyOption = {
code: string
name: string
symbol: string
}
export const currencyOptions: CurrencyOption[] = [
{name: "Afghan Afghani", symbol: "؋‎", code: "AFN"},
{name: "Albanian Lek", symbol: "Lek", code: "ALL"},
{name: "Algerian Dinar", symbol: "DA", code: "DZD"},
{name: "Angolan Kwanza", symbol: "Kz", code: "AOA"},
{name: "Argentine Peso", symbol: "$", code: "ARS"},
{name: "Armenian Dram", symbol: "֏", code: "AMD"},
{name: "Aruban Florin", symbol: "ƒ", code: "AWG"},
{name: "Australian Dollar", symbol: "$", code: "AUD"},
{name: "Azerbaijani Manat", symbol: "₼", code: "AZN"},
{name: "Bahamian Dollar", symbol: "$", code: "BSD"},
{name: "Bahraini Dinar", symbol: "BD", code: "BHD"},
{name: "Bangladeshi Taka", symbol: "৳", code: "BDT"},
{name: "Barbadian Dollar", symbol: "$", code: "BBD"},
{name: "Belarusian Ruble", symbol: "Br", code: "BYN"},
{name: "Belize Dollar", symbol: "$", code: "BZD"},
{name: "Bermudian Dollar", symbol: "$", code: "BMD"},
{name: "Bhutanese Ngultrum", symbol: "Nu", code: "BTN"},
{name: "Satoshi", symbol: "!", code: "SAT"},
2026-02-03 19:00:13 +00:00
{name: "Bitcoin", symbol: "₿", code: "BTC"},
2026-02-03 21:21:21 +00:00
{name: "Bolivian Boliviano", symbol: "Bs", code: "BOB"},
{name: "Bosnia And Herzegovina Convertible Mark", symbol: "KM", code: "BAM"},
{name: "Botswana Pula", symbol: "P", code: "BWP"},
{name: "Brazilian Real", symbol: "R$", code: "BRL"},
{name: "Brunei Dollar", symbol: "$", code: "BND"},
{name: "Bulgarian Lev", symbol: "Lev", code: "BGN"},
{name: "Burmese Kyat", symbol: "K", code: "MMK"},
{name: "Burundian Franc", symbol: "Fr", code: "BIF"},
{name: "CFP Franc", symbol: "Fr", code: "XPF"},
{name: "Cambodian Riel", symbol: "៛", code: "KHR"},
2026-02-03 19:00:13 +00:00
{name: "Canadian Dollar", symbol: "$", code: "CAD"},
2026-02-03 21:21:21 +00:00
{name: "Cape Verdean Escudo", symbol: "$", code: "CVE"},
{name: "Cayman Islands Dollar", symbol: "$", code: "KYD"},
{name: "Central African CFA Franc", symbol: "Fr", code: "XAF"},
{name: "Chilean Peso", symbol: "$", code: "CLP"},
{name: "Colombian Peso", symbol: "$", code: "COP"},
{name: "Comorian Franc", symbol: "Fr", code: "KMF"},
{name: "Congolese Franc", symbol: "Fr", code: "CDF"},
{name: "Costa Rican Colón", symbol: "₡", code: "CRC"},
{name: "Cuban Peso", symbol: "$", code: "CUP"},
{name: "Czech Koruna", symbol: "Kč", code: "CZK"},
{name: "Danish Krone", symbol: "kr", code: "DKK"},
{name: "Djiboutian Franc", symbol: "Fr", code: "DJF"},
{name: "Dominican Peso", symbol: "$", code: "DOP"},
{name: "Eastern Caribbean Dollar", symbol: "$", code: "XCD"},
{name: "Egyptian Pound", symbol: "LE", code: "EGP"},
{name: "Eritrean Nakfa", symbol: "Nkf", code: "ERN"},
{name: "Ethiopian Birr", symbol: "Br", code: "ETB"},
2026-02-03 19:00:13 +00:00
{name: "Euro", symbol: "€", code: "EUR"},
2026-02-03 21:21:21 +00:00
{name: "Falkland Islands Pound", symbol: "£", code: "FKP"},
{name: "Fijian Dollar", symbol: "$", code: "FJD"},
{name: "Gambian Dalasi", symbol: "D", code: "GMD"},
{name: "Georgian Lari", symbol: "₾", code: "GEL"},
{name: "Ghanaian Cedi", symbol: "₵", code: "GHS"},
{name: "Gibraltar Pound", symbol: "£", code: "GIP"},
{name: "Guatemalan Quetzal", symbol: "Q", code: "GTQ"},
{name: "Guinean Franc", symbol: "Fr", code: "GNF"},
{name: "Guyanese Dollar", symbol: "$", code: "GYD"},
{name: "Haitian Gourde", symbol: "G", code: "HTG"},
{name: "Honduran Lempira", symbol: "L", code: "HNL"},
{name: "Hong Kong Dollar", symbol: "$", code: "HKD"},
{name: "Hungarian Forint", symbol: "Ft", code: "HUF"},
{name: "Icelandic Króna", symbol: "kr", code: "ISK"},
{name: "Indian Rupee", symbol: "₹", code: "INR"},
{name: "Indonesian Rupiah", symbol: "Rp", code: "IDR"},
{name: "Iranian Rial", symbol: "Rl", code: "IRR"},
{name: "Iraqi Dinar", symbol: "ID", code: "IQD"},
{name: "Israeli New Shekel", symbol: "₪", code: "ILS"},
{name: "Jamaican Dollar", symbol: "$", code: "JMD"},
{name: "Japanese Yen", symbol: "¥", code: "JPY"},
{name: "Jordanian Dinar", symbol: "JD", code: "JOD"},
{name: "Kazakhstani Tenge", symbol: "₸", code: "KZT"},
{name: "Kenyan Shilling", symbol: "Sh", code: "KES"},
{name: "Kuwaiti Dinar", symbol: "KD", code: "KWD"},
{name: "Kyrgyz Som", symbol: "som", code: "KGS"},
{name: "Lao Kip", symbol: "₭", code: "LAK"},
{name: "Lebanese Pound", symbol: "LL", code: "LBP"},
{name: "Lesotho Loti", symbol: "L", code: "LSL"},
{name: "Liberian Dollar", symbol: "$", code: "LRD"},
{name: "Libyan Dinar", symbol: "LD", code: "LYD"},
{name: "Macanese Pataca", symbol: "MOP$", code: "MOP"},
{name: "Macedonian Denar", symbol: "DEN", code: "MKD"},
{name: "Malagasy Ariary", symbol: "Ar", code: "MGA"},
{name: "Malawian Kwacha", symbol: "K", code: "MWK"},
{name: "Malaysian Ringgit", symbol: "RM", code: "MYR"},
{name: "Maldivian Rufiyaa", symbol: "Rf", code: "MVR"},
{name: "Mauritanian Ouguiya", symbol: "UM", code: "MRU"},
{name: "Mauritian Rupee", symbol: "Re", code: "MUR"},
{name: "Mexican Peso", symbol: "$", code: "MXN"},
{name: "Moldovan Leu", symbol: "Leu", code: "MDL"},
{name: "Mongolian Tögrög", symbol: "₮", code: "MNT"},
{name: "Moroccan Dirham", symbol: "DH", code: "MAD"},
{name: "Mozambican Metical", symbol: "Mt", code: "MZN"},
{name: "Namibian Dollar", symbol: "$", code: "NAD"},
{name: "Nepalese Rupee", symbol: "Re", code: "NPR"},
{name: "Netherlands Antillean Guilder", symbol: "ƒ", code: "ANG"},
{name: "New Taiwan Dollar", symbol: "$", code: "TWD"},
{name: "New Zealand Dollar", symbol: "$", code: "NZD"},
{name: "Nicaraguan Córdoba", symbol: "C$", code: "NIO"},
{name: "Nigerian Naira", symbol: "₦", code: "NGN"},
{name: "North Korean Won", symbol: "₩", code: "KPW"},
{name: "Norwegian Krone", symbol: "kr", code: "NOK"},
{name: "Omani Rial", symbol: "RO", code: "OMR"},
{name: "Pakistani Rupee", symbol: "Re", code: "PKR"},
{name: "Panamanian Balboa", symbol: "B/", code: "PAB"},
{name: "Papua New Guinean Kina", symbol: "K", code: "PGK"},
{name: "Paraguayan Guaraní", symbol: "₲", code: "PYG"},
{name: "Peruvian Sol", symbol: "S/", code: "PEN"},
{name: "Philippine Peso", symbol: "₱", code: "PHP"},
{name: "Polish Złoty", symbol: "zł", code: "PLN"},
{name: "Qatari Riyal", symbol: "QR", code: "QAR"},
2026-02-03 19:00:13 +00:00
{name: "Renminbi", symbol: "¥", code: "CNY"},
2026-02-03 21:21:21 +00:00
{name: "Romanian Leu", symbol: "Leu", code: "RON"},
{name: "Russian Ruble", symbol: "₽", code: "RUB"},
{name: "Rwandan Franc", symbol: "Fr", code: "RWF"},
{name: "Saint Helena Pound", symbol: "£", code: "SHP"},
{name: "Samoan Tālā", symbol: "$", code: "WST"},
{name: "São Tomé And Príncipe Dobra", symbol: "Db", code: "STN"},
{name: "Saudi Riyal", symbol: "Rl", code: "SAR"},
{name: "Serbian Dinar", symbol: "DIN", code: "RSD"},
{name: "Seychellois Rupee", symbol: "Re", code: "SCR"},
{name: "Sierra Leonean Leone", symbol: "Le", code: "SLE"},
{name: "Singapore Dollar", symbol: "$", code: "SGD"},
{name: "Solomon Islands Dollar", symbol: "$", code: "SBD"},
{name: "Somali Shilling", symbol: "Sh", code: "SOS"},
{name: "South African Rand", symbol: "R", code: "ZAR"},
{name: "South Korean Won", symbol: "₩", code: "KRW"},
{name: "South Sudanese Pound", symbol: "(none)", code: "SSP"},
{name: "Sri Lankan Rupee", symbol: "Re", code: "LKR"},
2026-02-03 19:00:13 +00:00
{name: "Sterling", symbol: "£", code: "GBP"},
2026-02-03 21:21:21 +00:00
{name: "Sudanese Pound", symbol: "LS", code: "SDG"},
{name: "Surinamese Dollar", symbol: "$", code: "SRD"},
{name: "Swazi Lilangeni", symbol: "L", code: "SZL"},
{name: "Swedish Krona", symbol: "kr", code: "SEK"},
{name: "Swiss Franc", symbol: "Fr", code: "CHF"},
{name: "Syrian Pound", symbol: "LS", code: "SYP"},
{name: "Tajikistani Somoni", symbol: "SM", code: "TJS"},
{name: "Tanzanian Shilling", symbol: "Sh", code: "TZS"},
{name: "Thai Baht", symbol: "฿", code: "THB"},
{name: "Tongan Paʻanga", symbol: "T$", code: "TOP"},
{name: "Trinidad And Tobago Dollar", symbol: "$", code: "TTD"},
{name: "Tunisian Dinar", symbol: "DT", code: "TND"},
{name: "Turkish Lira", symbol: "₺", code: "TRY"},
{name: "Turkmenistani Manat", symbol: "m", code: "TMT"},
{name: "Ugandan Shilling", symbol: "Sh", code: "UGX"},
{name: "Ukrainian Hryvnia", symbol: "₴", code: "UAH"},
{name: "United Arab Emirates Dirham", symbol: "Dh", code: "AED"},
{name: "United States Dollar", symbol: "$", code: "USD"},
{name: "Uruguayan Peso", symbol: "$", code: "UYU"},
{name: "Uzbekistani Sum", symbol: "soum", code: "UZS"},
{name: "Vanuatu Vatu", symbol: "VT", code: "VUV"},
{name: "Venezuelan Digital Bolívar", symbol: "Bs.D", code: "VED"},
{name: "Venezuelan Sovereign Bolívar", symbol: "Bs.S", code: "VES"},
{name: "Vietnamese Đồng", symbol: "₫", code: "VND"},
{name: "West African CFA Franc", symbol: "Fr", code: "XOF"},
{name: "Yemeni Rial", symbol: "Rl", code: "YER"},
{name: "Zambian Kwacha", symbol: "K", code: "ZMW"},
2026-02-03 19:00:13 +00:00
]
2026-07-28 16:16:26 +00:00
export const defaultCurrencyOption = currencyOptions.find(spec({code: "SAT"}))
2026-02-03 19:00:13 +00:00
2026-02-03 21:21:21 +00:00
export const getCurrencyOption = (code: string): CurrencyOption =>
2026-07-28 16:16:26 +00:00
currencyOptions.find(spec({code})) || {name: code, symbol: "$", code}
2026-02-03 21:21:21 +00:00
export const displayCurrency = ({code, name}: CurrencyOption) => `${code} (${name})`
export const displayCurrencyByCode = (code: string) => displayCurrency(getCurrencyOption(code))