From 6ccda945e59ae50ccbd274cadbfdbf0e6d0b53cd Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 10 Dec 2025 22:12:30 +0200 Subject: [PATCH] Telephone country code select (#9473) * add telephone code select * add flags * run svgo on flags * get it somewhat working on web * get web closed state working * verify country code we get from geo * trim down names to shorter common versions * add labels to other selects * make international tel codes a static object * add component to storybook * Update src/lib/international-telephone-codes.ts Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com> * update to new geo hook * use Intl.DisplayNames, add polyfill * use in rather than keys().includes() --------- Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com> --- assets/icons/flags/AC.svg | 1 + assets/icons/flags/AD.svg | 1 + assets/icons/flags/AE.svg | 1 + assets/icons/flags/AF.svg | 1 + assets/icons/flags/AG.svg | 1 + assets/icons/flags/AI.svg | 1 + assets/icons/flags/AL.svg | 1 + assets/icons/flags/AM.svg | 1 + assets/icons/flags/AO.svg | 1 + assets/icons/flags/AQ.svg | 1 + assets/icons/flags/AR.svg | 1 + assets/icons/flags/AS.svg | 1 + assets/icons/flags/AT.svg | 1 + assets/icons/flags/AU.svg | 1 + assets/icons/flags/AW.svg | 1 + assets/icons/flags/AX.svg | 1 + assets/icons/flags/AZ.svg | 1 + assets/icons/flags/BA.svg | 1 + assets/icons/flags/BB.svg | 1 + assets/icons/flags/BD.svg | 1 + assets/icons/flags/BE.svg | 1 + assets/icons/flags/BF.svg | 1 + assets/icons/flags/BG.svg | 1 + assets/icons/flags/BH.svg | 1 + assets/icons/flags/BI.svg | 1 + assets/icons/flags/BJ.svg | 1 + assets/icons/flags/BL.svg | 1 + assets/icons/flags/BM.svg | 1 + assets/icons/flags/BN.svg | 1 + assets/icons/flags/BO.svg | 1 + assets/icons/flags/BQ-BO.svg | 1 + assets/icons/flags/BQ-SA.svg | 1 + assets/icons/flags/BQ-SE.svg | 1 + assets/icons/flags/BQ.svg | 1 + assets/icons/flags/BR.svg | 1 + assets/icons/flags/BS.svg | 1 + assets/icons/flags/BT.svg | 1 + assets/icons/flags/BV.svg | 1 + assets/icons/flags/BW.svg | 1 + assets/icons/flags/BY.svg | 1 + assets/icons/flags/BZ.svg | 1 + assets/icons/flags/CA.svg | 1 + assets/icons/flags/CC.svg | 1 + assets/icons/flags/CD.svg | 1 + assets/icons/flags/CF.svg | 1 + assets/icons/flags/CG.svg | 1 + assets/icons/flags/CH.svg | 1 + assets/icons/flags/CI.svg | 1 + assets/icons/flags/CK.svg | 1 + assets/icons/flags/CL.svg | 1 + assets/icons/flags/CM.svg | 1 + assets/icons/flags/CN.svg | 1 + assets/icons/flags/CO.svg | 1 + assets/icons/flags/CR.svg | 1 + assets/icons/flags/CU.svg | 1 + assets/icons/flags/CV.svg | 1 + assets/icons/flags/CW.svg | 1 + assets/icons/flags/CX.svg | 1 + assets/icons/flags/CY.svg | 1 + assets/icons/flags/CZ.svg | 1 + assets/icons/flags/DE.svg | 1 + assets/icons/flags/DJ.svg | 1 + assets/icons/flags/DK.svg | 1 + assets/icons/flags/DM.svg | 1 + assets/icons/flags/DO.svg | 1 + assets/icons/flags/DZ.svg | 1 + assets/icons/flags/EC.svg | 1 + assets/icons/flags/EE.svg | 1 + assets/icons/flags/EG.svg | 1 + assets/icons/flags/EH.svg | 1 + assets/icons/flags/ER.svg | 1 + assets/icons/flags/ES.svg | 1 + assets/icons/flags/ET.svg | 1 + assets/icons/flags/EU.svg | 1 + assets/icons/flags/FI.svg | 1 + assets/icons/flags/FJ.svg | 1 + assets/icons/flags/FK.svg | 1 + assets/icons/flags/FM.svg | 1 + assets/icons/flags/FO.svg | 1 + assets/icons/flags/FR.svg | 1 + assets/icons/flags/GA.svg | 1 + assets/icons/flags/GB-ENG.svg | 1 + assets/icons/flags/GB-NIR.svg | 1 + assets/icons/flags/GB-SCT.svg | 1 + assets/icons/flags/GB-WLS.svg | 1 + assets/icons/flags/GB.svg | 1 + assets/icons/flags/GD.svg | 1 + assets/icons/flags/GE-AB.svg | 1 + assets/icons/flags/GE-OS.svg | 1 + assets/icons/flags/GE.svg | 1 + assets/icons/flags/GF.svg | 1 + assets/icons/flags/GG.svg | 1 + assets/icons/flags/GH.svg | 1 + assets/icons/flags/GI.svg | 1 + assets/icons/flags/GL.svg | 1 + assets/icons/flags/GM.svg | 1 + assets/icons/flags/GN.svg | 1 + assets/icons/flags/GP.svg | 1 + assets/icons/flags/GQ.svg | 1 + assets/icons/flags/GR.svg | 1 + assets/icons/flags/GS.svg | 1 + assets/icons/flags/GT.svg | 1 + assets/icons/flags/GU.svg | 1 + assets/icons/flags/GW.svg | 1 + assets/icons/flags/GY.svg | 1 + assets/icons/flags/HK.svg | 1 + assets/icons/flags/HM.svg | 1 + assets/icons/flags/HN.svg | 1 + assets/icons/flags/HR.svg | 1 + assets/icons/flags/HT.svg | 1 + assets/icons/flags/HU.svg | 1 + assets/icons/flags/IC.svg | 1 + assets/icons/flags/ID.svg | 1 + assets/icons/flags/IE.svg | 1 + assets/icons/flags/IL.svg | 1 + assets/icons/flags/IM.svg | 1 + assets/icons/flags/IN.svg | 1 + assets/icons/flags/IO.svg | 1 + assets/icons/flags/IQ.svg | 1 + assets/icons/flags/IR.svg | 1 + assets/icons/flags/IS.svg | 1 + assets/icons/flags/IT.svg | 1 + assets/icons/flags/JE.svg | 1 + assets/icons/flags/JM.svg | 1 + assets/icons/flags/JO.svg | 1 + assets/icons/flags/JP.svg | 1 + assets/icons/flags/KE.svg | 1 + assets/icons/flags/KG.svg | 1 + assets/icons/flags/KH.svg | 1 + assets/icons/flags/KI.svg | 1 + assets/icons/flags/KM.svg | 1 + assets/icons/flags/KN.svg | 1 + assets/icons/flags/KP.svg | 1 + assets/icons/flags/KR.svg | 1 + assets/icons/flags/KW.svg | 1 + assets/icons/flags/KY.svg | 1 + assets/icons/flags/KZ.svg | 1 + assets/icons/flags/LA.svg | 1 + assets/icons/flags/LB.svg | 1 + assets/icons/flags/LC.svg | 1 + assets/icons/flags/LI.svg | 1 + assets/icons/flags/LK.svg | 1 + assets/icons/flags/LR.svg | 1 + assets/icons/flags/LS.svg | 1 + assets/icons/flags/LT.svg | 1 + assets/icons/flags/LU.svg | 1 + assets/icons/flags/LV.svg | 1 + assets/icons/flags/LY.svg | 1 + assets/icons/flags/MA.svg | 1 + assets/icons/flags/MC.svg | 1 + assets/icons/flags/MD.svg | 1 + assets/icons/flags/ME.svg | 1 + assets/icons/flags/MF.svg | 1 + assets/icons/flags/MG.svg | 1 + assets/icons/flags/MH.svg | 1 + assets/icons/flags/MK.svg | 1 + assets/icons/flags/ML.svg | 1 + assets/icons/flags/MM.svg | 1 + assets/icons/flags/MN.svg | 1 + assets/icons/flags/MO.svg | 1 + assets/icons/flags/MP.svg | 1 + assets/icons/flags/MQ.svg | 1 + assets/icons/flags/MR.svg | 1 + assets/icons/flags/MS.svg | 1 + assets/icons/flags/MT.svg | 1 + assets/icons/flags/MU.svg | 1 + assets/icons/flags/MV.svg | 1 + assets/icons/flags/MW.svg | 1 + assets/icons/flags/MX.svg | 1 + assets/icons/flags/MY.svg | 1 + assets/icons/flags/MZ.svg | 1 + assets/icons/flags/NA.svg | 1 + assets/icons/flags/NC.svg | 1 + assets/icons/flags/NE.svg | 1 + assets/icons/flags/NF.svg | 1 + assets/icons/flags/NG.svg | 1 + assets/icons/flags/NI.svg | 1 + assets/icons/flags/NL.svg | 1 + assets/icons/flags/NO.svg | 1 + assets/icons/flags/NP.svg | 1 + assets/icons/flags/NR.svg | 1 + assets/icons/flags/NU.svg | 1 + assets/icons/flags/NZ.svg | 1 + assets/icons/flags/OM.svg | 1 + assets/icons/flags/PA.svg | 1 + assets/icons/flags/PE.svg | 1 + assets/icons/flags/PF.svg | 1 + assets/icons/flags/PG.svg | 1 + assets/icons/flags/PH.svg | 1 + assets/icons/flags/PK.svg | 1 + assets/icons/flags/PL.svg | 1 + assets/icons/flags/PM.svg | 1 + assets/icons/flags/PN.svg | 1 + assets/icons/flags/PR.svg | 1 + assets/icons/flags/PS.svg | 1 + assets/icons/flags/PT.svg | 1 + assets/icons/flags/PW.svg | 1 + assets/icons/flags/PY.svg | 1 + assets/icons/flags/QA.svg | 1 + assets/icons/flags/RE.svg | 1 + assets/icons/flags/README.md | 4 + assets/icons/flags/RO.svg | 1 + assets/icons/flags/RS.svg | 1 + assets/icons/flags/RU.svg | 1 + assets/icons/flags/RW.svg | 1 + assets/icons/flags/SA.svg | 1 + assets/icons/flags/SB.svg | 1 + assets/icons/flags/SC.svg | 1 + assets/icons/flags/SD.svg | 1 + assets/icons/flags/SE.svg | 1 + assets/icons/flags/SG.svg | 1 + assets/icons/flags/SH.svg | 1 + assets/icons/flags/SI.svg | 1 + assets/icons/flags/SJ.svg | 1 + assets/icons/flags/SK.svg | 1 + assets/icons/flags/SL.svg | 1 + assets/icons/flags/SM.svg | 1 + assets/icons/flags/SN.svg | 1 + assets/icons/flags/SO.svg | 1 + assets/icons/flags/SR.svg | 1 + assets/icons/flags/SS.svg | 1 + assets/icons/flags/ST.svg | 1 + assets/icons/flags/SV.svg | 1 + assets/icons/flags/SX.svg | 1 + assets/icons/flags/SY.svg | 1 + assets/icons/flags/SZ.svg | 1 + assets/icons/flags/TA.svg | 1 + assets/icons/flags/TC.svg | 1 + assets/icons/flags/TD.svg | 1 + assets/icons/flags/TF.svg | 1 + assets/icons/flags/TG.svg | 1 + assets/icons/flags/TH.svg | 1 + assets/icons/flags/TJ.svg | 1 + assets/icons/flags/TK.svg | 1 + assets/icons/flags/TL.svg | 1 + assets/icons/flags/TM.svg | 1 + assets/icons/flags/TN.svg | 1 + assets/icons/flags/TO.svg | 1 + assets/icons/flags/TR.svg | 1 + assets/icons/flags/TT.svg | 1 + assets/icons/flags/TV.svg | 1 + assets/icons/flags/TW.svg | 1 + assets/icons/flags/TZ.svg | 1 + assets/icons/flags/UA.svg | 1 + assets/icons/flags/UG.svg | 1 + assets/icons/flags/UM.svg | 1 + assets/icons/flags/US.svg | 1 + assets/icons/flags/UY.svg | 1 + assets/icons/flags/UZ.svg | 1 + assets/icons/flags/VA.svg | 1 + assets/icons/flags/VC.svg | 1 + assets/icons/flags/VE.svg | 1 + assets/icons/flags/VG.svg | 1 + assets/icons/flags/VI.svg | 1 + assets/icons/flags/VN.svg | 1 + assets/icons/flags/VU.svg | 1 + assets/icons/flags/WF.svg | 1 + assets/icons/flags/WS.svg | 1 + assets/icons/flags/XK.svg | 1 + assets/icons/flags/YE.svg | 1 + assets/icons/flags/YT.svg | 1 + assets/icons/flags/ZA.svg | 1 + assets/icons/flags/ZM.svg | 1 + assets/icons/flags/ZW.svg | 1 + package.json | 7 +- src/components/AppLanguageDropdown.tsx | 1 + src/components/Button.tsx | 3 +- .../InternationalPhoneCodeSelect.tsx | 116 ++ src/components/LanguageSelect.tsx | 3 + src/components/Select/index.tsx | 99 +- src/components/Select/index.web.tsx | 56 +- src/components/Select/types.ts | 17 +- .../ageAssurance/AgeAssuranceInitDialog.tsx | 1 + src/components/forms/Toggle/index.tsx | 19 +- src/lib/international-telephone-codes.ts | 1273 +++++++++++++++++ src/locale/helpers.ts | 43 +- src/locale/i18n.ts | 46 + src/screens/Settings/LanguageSettings.tsx | 2 + src/view/screens/Storybook/Forms.tsx | 22 + yarn.lock | 132 +- 280 files changed, 1995 insertions(+), 112 deletions(-) create mode 100644 assets/icons/flags/AC.svg create mode 100644 assets/icons/flags/AD.svg create mode 100644 assets/icons/flags/AE.svg create mode 100644 assets/icons/flags/AF.svg create mode 100644 assets/icons/flags/AG.svg create mode 100644 assets/icons/flags/AI.svg create mode 100644 assets/icons/flags/AL.svg create mode 100644 assets/icons/flags/AM.svg create mode 100644 assets/icons/flags/AO.svg create mode 100644 assets/icons/flags/AQ.svg create mode 100644 assets/icons/flags/AR.svg create mode 100644 assets/icons/flags/AS.svg create mode 100644 assets/icons/flags/AT.svg create mode 100644 assets/icons/flags/AU.svg create mode 100644 assets/icons/flags/AW.svg create mode 100644 assets/icons/flags/AX.svg create mode 100644 assets/icons/flags/AZ.svg create mode 100644 assets/icons/flags/BA.svg create mode 100644 assets/icons/flags/BB.svg create mode 100644 assets/icons/flags/BD.svg create mode 100644 assets/icons/flags/BE.svg create mode 100644 assets/icons/flags/BF.svg create mode 100644 assets/icons/flags/BG.svg create mode 100644 assets/icons/flags/BH.svg create mode 100644 assets/icons/flags/BI.svg create mode 100644 assets/icons/flags/BJ.svg create mode 100644 assets/icons/flags/BL.svg create mode 100644 assets/icons/flags/BM.svg create mode 100644 assets/icons/flags/BN.svg create mode 100644 assets/icons/flags/BO.svg create mode 100644 assets/icons/flags/BQ-BO.svg create mode 100644 assets/icons/flags/BQ-SA.svg create mode 100644 assets/icons/flags/BQ-SE.svg create mode 100644 assets/icons/flags/BQ.svg create mode 100644 assets/icons/flags/BR.svg create mode 100644 assets/icons/flags/BS.svg create mode 100644 assets/icons/flags/BT.svg create mode 100644 assets/icons/flags/BV.svg create mode 100644 assets/icons/flags/BW.svg create mode 100644 assets/icons/flags/BY.svg create mode 100644 assets/icons/flags/BZ.svg create mode 100644 assets/icons/flags/CA.svg create mode 100644 assets/icons/flags/CC.svg create mode 100644 assets/icons/flags/CD.svg create mode 100644 assets/icons/flags/CF.svg create mode 100644 assets/icons/flags/CG.svg create mode 100644 assets/icons/flags/CH.svg create mode 100644 assets/icons/flags/CI.svg create mode 100644 assets/icons/flags/CK.svg create mode 100644 assets/icons/flags/CL.svg create mode 100644 assets/icons/flags/CM.svg create mode 100644 assets/icons/flags/CN.svg create mode 100644 assets/icons/flags/CO.svg create mode 100644 assets/icons/flags/CR.svg create mode 100644 assets/icons/flags/CU.svg create mode 100644 assets/icons/flags/CV.svg create mode 100644 assets/icons/flags/CW.svg create mode 100644 assets/icons/flags/CX.svg create mode 100644 assets/icons/flags/CY.svg create mode 100644 assets/icons/flags/CZ.svg create mode 100644 assets/icons/flags/DE.svg create mode 100644 assets/icons/flags/DJ.svg create mode 100644 assets/icons/flags/DK.svg create mode 100644 assets/icons/flags/DM.svg create mode 100644 assets/icons/flags/DO.svg create mode 100644 assets/icons/flags/DZ.svg create mode 100644 assets/icons/flags/EC.svg create mode 100644 assets/icons/flags/EE.svg create mode 100644 assets/icons/flags/EG.svg create mode 100644 assets/icons/flags/EH.svg create mode 100644 assets/icons/flags/ER.svg create mode 100644 assets/icons/flags/ES.svg create mode 100644 assets/icons/flags/ET.svg create mode 100644 assets/icons/flags/EU.svg create mode 100644 assets/icons/flags/FI.svg create mode 100644 assets/icons/flags/FJ.svg create mode 100644 assets/icons/flags/FK.svg create mode 100644 assets/icons/flags/FM.svg create mode 100644 assets/icons/flags/FO.svg create mode 100644 assets/icons/flags/FR.svg create mode 100644 assets/icons/flags/GA.svg create mode 100644 assets/icons/flags/GB-ENG.svg create mode 100644 assets/icons/flags/GB-NIR.svg create mode 100644 assets/icons/flags/GB-SCT.svg create mode 100644 assets/icons/flags/GB-WLS.svg create mode 100644 assets/icons/flags/GB.svg create mode 100644 assets/icons/flags/GD.svg create mode 100644 assets/icons/flags/GE-AB.svg create mode 100644 assets/icons/flags/GE-OS.svg create mode 100644 assets/icons/flags/GE.svg create mode 100644 assets/icons/flags/GF.svg create mode 100644 assets/icons/flags/GG.svg create mode 100644 assets/icons/flags/GH.svg create mode 100644 assets/icons/flags/GI.svg create mode 100644 assets/icons/flags/GL.svg create mode 100644 assets/icons/flags/GM.svg create mode 100644 assets/icons/flags/GN.svg create mode 100644 assets/icons/flags/GP.svg create mode 100644 assets/icons/flags/GQ.svg create mode 100644 assets/icons/flags/GR.svg create mode 100644 assets/icons/flags/GS.svg create mode 100644 assets/icons/flags/GT.svg create mode 100644 assets/icons/flags/GU.svg create mode 100644 assets/icons/flags/GW.svg create mode 100644 assets/icons/flags/GY.svg create mode 100644 assets/icons/flags/HK.svg create mode 100644 assets/icons/flags/HM.svg create mode 100644 assets/icons/flags/HN.svg create mode 100644 assets/icons/flags/HR.svg create mode 100644 assets/icons/flags/HT.svg create mode 100644 assets/icons/flags/HU.svg create mode 100644 assets/icons/flags/IC.svg create mode 100644 assets/icons/flags/ID.svg create mode 100644 assets/icons/flags/IE.svg create mode 100644 assets/icons/flags/IL.svg create mode 100644 assets/icons/flags/IM.svg create mode 100644 assets/icons/flags/IN.svg create mode 100644 assets/icons/flags/IO.svg create mode 100644 assets/icons/flags/IQ.svg create mode 100644 assets/icons/flags/IR.svg create mode 100644 assets/icons/flags/IS.svg create mode 100644 assets/icons/flags/IT.svg create mode 100644 assets/icons/flags/JE.svg create mode 100644 assets/icons/flags/JM.svg create mode 100644 assets/icons/flags/JO.svg create mode 100644 assets/icons/flags/JP.svg create mode 100644 assets/icons/flags/KE.svg create mode 100644 assets/icons/flags/KG.svg create mode 100644 assets/icons/flags/KH.svg create mode 100644 assets/icons/flags/KI.svg create mode 100644 assets/icons/flags/KM.svg create mode 100644 assets/icons/flags/KN.svg create mode 100644 assets/icons/flags/KP.svg create mode 100644 assets/icons/flags/KR.svg create mode 100644 assets/icons/flags/KW.svg create mode 100644 assets/icons/flags/KY.svg create mode 100644 assets/icons/flags/KZ.svg create mode 100644 assets/icons/flags/LA.svg create mode 100644 assets/icons/flags/LB.svg create mode 100644 assets/icons/flags/LC.svg create mode 100644 assets/icons/flags/LI.svg create mode 100644 assets/icons/flags/LK.svg create mode 100644 assets/icons/flags/LR.svg create mode 100644 assets/icons/flags/LS.svg create mode 100644 assets/icons/flags/LT.svg create mode 100644 assets/icons/flags/LU.svg create mode 100644 assets/icons/flags/LV.svg create mode 100644 assets/icons/flags/LY.svg create mode 100644 assets/icons/flags/MA.svg create mode 100644 assets/icons/flags/MC.svg create mode 100644 assets/icons/flags/MD.svg create mode 100644 assets/icons/flags/ME.svg create mode 100644 assets/icons/flags/MF.svg create mode 100644 assets/icons/flags/MG.svg create mode 100644 assets/icons/flags/MH.svg create mode 100644 assets/icons/flags/MK.svg create mode 100644 assets/icons/flags/ML.svg create mode 100644 assets/icons/flags/MM.svg create mode 100644 assets/icons/flags/MN.svg create mode 100644 assets/icons/flags/MO.svg create mode 100644 assets/icons/flags/MP.svg create mode 100644 assets/icons/flags/MQ.svg create mode 100644 assets/icons/flags/MR.svg create mode 100644 assets/icons/flags/MS.svg create mode 100644 assets/icons/flags/MT.svg create mode 100644 assets/icons/flags/MU.svg create mode 100644 assets/icons/flags/MV.svg create mode 100644 assets/icons/flags/MW.svg create mode 100644 assets/icons/flags/MX.svg create mode 100644 assets/icons/flags/MY.svg create mode 100644 assets/icons/flags/MZ.svg create mode 100644 assets/icons/flags/NA.svg create mode 100644 assets/icons/flags/NC.svg create mode 100644 assets/icons/flags/NE.svg create mode 100644 assets/icons/flags/NF.svg create mode 100644 assets/icons/flags/NG.svg create mode 100644 assets/icons/flags/NI.svg create mode 100644 assets/icons/flags/NL.svg create mode 100644 assets/icons/flags/NO.svg create mode 100644 assets/icons/flags/NP.svg create mode 100644 assets/icons/flags/NR.svg create mode 100644 assets/icons/flags/NU.svg create mode 100644 assets/icons/flags/NZ.svg create mode 100644 assets/icons/flags/OM.svg create mode 100644 assets/icons/flags/PA.svg create mode 100644 assets/icons/flags/PE.svg create mode 100644 assets/icons/flags/PF.svg create mode 100644 assets/icons/flags/PG.svg create mode 100644 assets/icons/flags/PH.svg create mode 100644 assets/icons/flags/PK.svg create mode 100644 assets/icons/flags/PL.svg create mode 100644 assets/icons/flags/PM.svg create mode 100644 assets/icons/flags/PN.svg create mode 100644 assets/icons/flags/PR.svg create mode 100644 assets/icons/flags/PS.svg create mode 100644 assets/icons/flags/PT.svg create mode 100644 assets/icons/flags/PW.svg create mode 100644 assets/icons/flags/PY.svg create mode 100644 assets/icons/flags/QA.svg create mode 100644 assets/icons/flags/RE.svg create mode 100644 assets/icons/flags/README.md create mode 100644 assets/icons/flags/RO.svg create mode 100644 assets/icons/flags/RS.svg create mode 100644 assets/icons/flags/RU.svg create mode 100644 assets/icons/flags/RW.svg create mode 100644 assets/icons/flags/SA.svg create mode 100644 assets/icons/flags/SB.svg create mode 100644 assets/icons/flags/SC.svg create mode 100644 assets/icons/flags/SD.svg create mode 100644 assets/icons/flags/SE.svg create mode 100644 assets/icons/flags/SG.svg create mode 100644 assets/icons/flags/SH.svg create mode 100644 assets/icons/flags/SI.svg create mode 100644 assets/icons/flags/SJ.svg create mode 100644 assets/icons/flags/SK.svg create mode 100644 assets/icons/flags/SL.svg create mode 100644 assets/icons/flags/SM.svg create mode 100644 assets/icons/flags/SN.svg create mode 100644 assets/icons/flags/SO.svg create mode 100644 assets/icons/flags/SR.svg create mode 100644 assets/icons/flags/SS.svg create mode 100644 assets/icons/flags/ST.svg create mode 100644 assets/icons/flags/SV.svg create mode 100644 assets/icons/flags/SX.svg create mode 100644 assets/icons/flags/SY.svg create mode 100644 assets/icons/flags/SZ.svg create mode 100644 assets/icons/flags/TA.svg create mode 100644 assets/icons/flags/TC.svg create mode 100644 assets/icons/flags/TD.svg create mode 100644 assets/icons/flags/TF.svg create mode 100644 assets/icons/flags/TG.svg create mode 100644 assets/icons/flags/TH.svg create mode 100644 assets/icons/flags/TJ.svg create mode 100644 assets/icons/flags/TK.svg create mode 100644 assets/icons/flags/TL.svg create mode 100644 assets/icons/flags/TM.svg create mode 100644 assets/icons/flags/TN.svg create mode 100644 assets/icons/flags/TO.svg create mode 100644 assets/icons/flags/TR.svg create mode 100644 assets/icons/flags/TT.svg create mode 100644 assets/icons/flags/TV.svg create mode 100644 assets/icons/flags/TW.svg create mode 100644 assets/icons/flags/TZ.svg create mode 100644 assets/icons/flags/UA.svg create mode 100644 assets/icons/flags/UG.svg create mode 100644 assets/icons/flags/UM.svg create mode 100644 assets/icons/flags/US.svg create mode 100644 assets/icons/flags/UY.svg create mode 100644 assets/icons/flags/UZ.svg create mode 100644 assets/icons/flags/VA.svg create mode 100644 assets/icons/flags/VC.svg create mode 100644 assets/icons/flags/VE.svg create mode 100644 assets/icons/flags/VG.svg create mode 100644 assets/icons/flags/VI.svg create mode 100644 assets/icons/flags/VN.svg create mode 100644 assets/icons/flags/VU.svg create mode 100644 assets/icons/flags/WF.svg create mode 100644 assets/icons/flags/WS.svg create mode 100644 assets/icons/flags/XK.svg create mode 100644 assets/icons/flags/YE.svg create mode 100644 assets/icons/flags/YT.svg create mode 100644 assets/icons/flags/ZA.svg create mode 100644 assets/icons/flags/ZM.svg create mode 100644 assets/icons/flags/ZW.svg create mode 100644 src/components/InternationalPhoneCodeSelect.tsx create mode 100644 src/lib/international-telephone-codes.ts diff --git a/assets/icons/flags/AC.svg b/assets/icons/flags/AC.svg new file mode 100644 index 0000000000..19546929be --- /dev/null +++ b/assets/icons/flags/AC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AD.svg b/assets/icons/flags/AD.svg new file mode 100644 index 0000000000..36151a9b27 --- /dev/null +++ b/assets/icons/flags/AD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AE.svg b/assets/icons/flags/AE.svg new file mode 100644 index 0000000000..79141e0305 --- /dev/null +++ b/assets/icons/flags/AE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AF.svg b/assets/icons/flags/AF.svg new file mode 100644 index 0000000000..801fca7bcf --- /dev/null +++ b/assets/icons/flags/AF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AG.svg b/assets/icons/flags/AG.svg new file mode 100644 index 0000000000..8b0f0b95da --- /dev/null +++ b/assets/icons/flags/AG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AI.svg b/assets/icons/flags/AI.svg new file mode 100644 index 0000000000..af8d14bf36 --- /dev/null +++ b/assets/icons/flags/AI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AL.svg b/assets/icons/flags/AL.svg new file mode 100644 index 0000000000..95e24a01a1 --- /dev/null +++ b/assets/icons/flags/AL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AM.svg b/assets/icons/flags/AM.svg new file mode 100644 index 0000000000..9bca705153 --- /dev/null +++ b/assets/icons/flags/AM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AO.svg b/assets/icons/flags/AO.svg new file mode 100644 index 0000000000..f8004f04bb --- /dev/null +++ b/assets/icons/flags/AO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AQ.svg b/assets/icons/flags/AQ.svg new file mode 100644 index 0000000000..91b492dbe5 --- /dev/null +++ b/assets/icons/flags/AQ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AR.svg b/assets/icons/flags/AR.svg new file mode 100644 index 0000000000..27759f3d3a --- /dev/null +++ b/assets/icons/flags/AR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AS.svg b/assets/icons/flags/AS.svg new file mode 100644 index 0000000000..8ef1ce8f73 --- /dev/null +++ b/assets/icons/flags/AS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AT.svg b/assets/icons/flags/AT.svg new file mode 100644 index 0000000000..27b8648339 --- /dev/null +++ b/assets/icons/flags/AT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AU.svg b/assets/icons/flags/AU.svg new file mode 100644 index 0000000000..1355a9222f --- /dev/null +++ b/assets/icons/flags/AU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AW.svg b/assets/icons/flags/AW.svg new file mode 100644 index 0000000000..7dcdeb5987 --- /dev/null +++ b/assets/icons/flags/AW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AX.svg b/assets/icons/flags/AX.svg new file mode 100644 index 0000000000..021e6c7640 --- /dev/null +++ b/assets/icons/flags/AX.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/AZ.svg b/assets/icons/flags/AZ.svg new file mode 100644 index 0000000000..934e6d2058 --- /dev/null +++ b/assets/icons/flags/AZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BA.svg b/assets/icons/flags/BA.svg new file mode 100644 index 0000000000..a8efea626a --- /dev/null +++ b/assets/icons/flags/BA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BB.svg b/assets/icons/flags/BB.svg new file mode 100644 index 0000000000..1513a070ab --- /dev/null +++ b/assets/icons/flags/BB.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BD.svg b/assets/icons/flags/BD.svg new file mode 100644 index 0000000000..2dc182e779 --- /dev/null +++ b/assets/icons/flags/BD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BE.svg b/assets/icons/flags/BE.svg new file mode 100644 index 0000000000..1351f50eba --- /dev/null +++ b/assets/icons/flags/BE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BF.svg b/assets/icons/flags/BF.svg new file mode 100644 index 0000000000..fcbf06f933 --- /dev/null +++ b/assets/icons/flags/BF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BG.svg b/assets/icons/flags/BG.svg new file mode 100644 index 0000000000..aaa99ccd9f --- /dev/null +++ b/assets/icons/flags/BG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BH.svg b/assets/icons/flags/BH.svg new file mode 100644 index 0000000000..00cce67ac4 --- /dev/null +++ b/assets/icons/flags/BH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BI.svg b/assets/icons/flags/BI.svg new file mode 100644 index 0000000000..d97e6da547 --- /dev/null +++ b/assets/icons/flags/BI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BJ.svg b/assets/icons/flags/BJ.svg new file mode 100644 index 0000000000..8af1e89fcd --- /dev/null +++ b/assets/icons/flags/BJ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BL.svg b/assets/icons/flags/BL.svg new file mode 100644 index 0000000000..2edc17aff0 --- /dev/null +++ b/assets/icons/flags/BL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BM.svg b/assets/icons/flags/BM.svg new file mode 100644 index 0000000000..0a6580e7f2 --- /dev/null +++ b/assets/icons/flags/BM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BN.svg b/assets/icons/flags/BN.svg new file mode 100644 index 0000000000..ff3d7806b4 --- /dev/null +++ b/assets/icons/flags/BN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BO.svg b/assets/icons/flags/BO.svg new file mode 100644 index 0000000000..75169435b6 --- /dev/null +++ b/assets/icons/flags/BO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BQ-BO.svg b/assets/icons/flags/BQ-BO.svg new file mode 100644 index 0000000000..a099b97a13 --- /dev/null +++ b/assets/icons/flags/BQ-BO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BQ-SA.svg b/assets/icons/flags/BQ-SA.svg new file mode 100644 index 0000000000..0bbd03cf6f --- /dev/null +++ b/assets/icons/flags/BQ-SA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BQ-SE.svg b/assets/icons/flags/BQ-SE.svg new file mode 100644 index 0000000000..03c7dbcfd6 --- /dev/null +++ b/assets/icons/flags/BQ-SE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BQ.svg b/assets/icons/flags/BQ.svg new file mode 100644 index 0000000000..a099b97a13 --- /dev/null +++ b/assets/icons/flags/BQ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BR.svg b/assets/icons/flags/BR.svg new file mode 100644 index 0000000000..1f383a13c2 --- /dev/null +++ b/assets/icons/flags/BR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BS.svg b/assets/icons/flags/BS.svg new file mode 100644 index 0000000000..4e72f16d63 --- /dev/null +++ b/assets/icons/flags/BS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BT.svg b/assets/icons/flags/BT.svg new file mode 100644 index 0000000000..aa6f20a229 --- /dev/null +++ b/assets/icons/flags/BT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BV.svg b/assets/icons/flags/BV.svg new file mode 100644 index 0000000000..756480c1ab --- /dev/null +++ b/assets/icons/flags/BV.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BW.svg b/assets/icons/flags/BW.svg new file mode 100644 index 0000000000..149c6555de --- /dev/null +++ b/assets/icons/flags/BW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BY.svg b/assets/icons/flags/BY.svg new file mode 100644 index 0000000000..074379538d --- /dev/null +++ b/assets/icons/flags/BY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/BZ.svg b/assets/icons/flags/BZ.svg new file mode 100644 index 0000000000..34cb5ad55d --- /dev/null +++ b/assets/icons/flags/BZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CA.svg b/assets/icons/flags/CA.svg new file mode 100644 index 0000000000..ecd62d9bfc --- /dev/null +++ b/assets/icons/flags/CA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CC.svg b/assets/icons/flags/CC.svg new file mode 100644 index 0000000000..5f4e39cf31 --- /dev/null +++ b/assets/icons/flags/CC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CD.svg b/assets/icons/flags/CD.svg new file mode 100644 index 0000000000..43b4dd7bf6 --- /dev/null +++ b/assets/icons/flags/CD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CF.svg b/assets/icons/flags/CF.svg new file mode 100644 index 0000000000..fc0814ee85 --- /dev/null +++ b/assets/icons/flags/CF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CG.svg b/assets/icons/flags/CG.svg new file mode 100644 index 0000000000..e1c3267533 --- /dev/null +++ b/assets/icons/flags/CG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CH.svg b/assets/icons/flags/CH.svg new file mode 100644 index 0000000000..230fdcebd7 --- /dev/null +++ b/assets/icons/flags/CH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CI.svg b/assets/icons/flags/CI.svg new file mode 100644 index 0000000000..83187cc0f0 --- /dev/null +++ b/assets/icons/flags/CI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CK.svg b/assets/icons/flags/CK.svg new file mode 100644 index 0000000000..b7ca9cbd6d --- /dev/null +++ b/assets/icons/flags/CK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CL.svg b/assets/icons/flags/CL.svg new file mode 100644 index 0000000000..e74764adf8 --- /dev/null +++ b/assets/icons/flags/CL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CM.svg b/assets/icons/flags/CM.svg new file mode 100644 index 0000000000..cb00606c71 --- /dev/null +++ b/assets/icons/flags/CM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CN.svg b/assets/icons/flags/CN.svg new file mode 100644 index 0000000000..f306585ca4 --- /dev/null +++ b/assets/icons/flags/CN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CO.svg b/assets/icons/flags/CO.svg new file mode 100644 index 0000000000..c54c22a48a --- /dev/null +++ b/assets/icons/flags/CO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CR.svg b/assets/icons/flags/CR.svg new file mode 100644 index 0000000000..50001d5299 --- /dev/null +++ b/assets/icons/flags/CR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CU.svg b/assets/icons/flags/CU.svg new file mode 100644 index 0000000000..8306ad2a2e --- /dev/null +++ b/assets/icons/flags/CU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CV.svg b/assets/icons/flags/CV.svg new file mode 100644 index 0000000000..0576d1e248 --- /dev/null +++ b/assets/icons/flags/CV.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CW.svg b/assets/icons/flags/CW.svg new file mode 100644 index 0000000000..c39ff6a97f --- /dev/null +++ b/assets/icons/flags/CW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CX.svg b/assets/icons/flags/CX.svg new file mode 100644 index 0000000000..1980977cec --- /dev/null +++ b/assets/icons/flags/CX.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CY.svg b/assets/icons/flags/CY.svg new file mode 100644 index 0000000000..5d0692a2cf --- /dev/null +++ b/assets/icons/flags/CY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/CZ.svg b/assets/icons/flags/CZ.svg new file mode 100644 index 0000000000..077b9bfc8f --- /dev/null +++ b/assets/icons/flags/CZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/DE.svg b/assets/icons/flags/DE.svg new file mode 100644 index 0000000000..16240101c3 --- /dev/null +++ b/assets/icons/flags/DE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/DJ.svg b/assets/icons/flags/DJ.svg new file mode 100644 index 0000000000..15f9b1b579 --- /dev/null +++ b/assets/icons/flags/DJ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/DK.svg b/assets/icons/flags/DK.svg new file mode 100644 index 0000000000..9d8860c32c --- /dev/null +++ b/assets/icons/flags/DK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/DM.svg b/assets/icons/flags/DM.svg new file mode 100644 index 0000000000..7bbf97cdb3 --- /dev/null +++ b/assets/icons/flags/DM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/DO.svg b/assets/icons/flags/DO.svg new file mode 100644 index 0000000000..14da9aad1a --- /dev/null +++ b/assets/icons/flags/DO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/DZ.svg b/assets/icons/flags/DZ.svg new file mode 100644 index 0000000000..6ebc4e4b81 --- /dev/null +++ b/assets/icons/flags/DZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/EC.svg b/assets/icons/flags/EC.svg new file mode 100644 index 0000000000..d49f58caf8 --- /dev/null +++ b/assets/icons/flags/EC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/EE.svg b/assets/icons/flags/EE.svg new file mode 100644 index 0000000000..9490e3d74e --- /dev/null +++ b/assets/icons/flags/EE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/EG.svg b/assets/icons/flags/EG.svg new file mode 100644 index 0000000000..74a3879cb6 --- /dev/null +++ b/assets/icons/flags/EG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/EH.svg b/assets/icons/flags/EH.svg new file mode 100644 index 0000000000..8caa920828 --- /dev/null +++ b/assets/icons/flags/EH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ER.svg b/assets/icons/flags/ER.svg new file mode 100644 index 0000000000..841e1f2d6b --- /dev/null +++ b/assets/icons/flags/ER.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ES.svg b/assets/icons/flags/ES.svg new file mode 100644 index 0000000000..57b19fbfcf --- /dev/null +++ b/assets/icons/flags/ES.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ET.svg b/assets/icons/flags/ET.svg new file mode 100644 index 0000000000..656ae9e85d --- /dev/null +++ b/assets/icons/flags/ET.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/EU.svg b/assets/icons/flags/EU.svg new file mode 100644 index 0000000000..474c815251 --- /dev/null +++ b/assets/icons/flags/EU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/FI.svg b/assets/icons/flags/FI.svg new file mode 100644 index 0000000000..62badfe2fe --- /dev/null +++ b/assets/icons/flags/FI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/FJ.svg b/assets/icons/flags/FJ.svg new file mode 100644 index 0000000000..a3f1daf728 --- /dev/null +++ b/assets/icons/flags/FJ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/FK.svg b/assets/icons/flags/FK.svg new file mode 100644 index 0000000000..f83058a403 --- /dev/null +++ b/assets/icons/flags/FK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/FM.svg b/assets/icons/flags/FM.svg new file mode 100644 index 0000000000..87dfbd92cc --- /dev/null +++ b/assets/icons/flags/FM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/FO.svg b/assets/icons/flags/FO.svg new file mode 100644 index 0000000000..d0212aaab5 --- /dev/null +++ b/assets/icons/flags/FO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/FR.svg b/assets/icons/flags/FR.svg new file mode 100644 index 0000000000..b5badd1cac --- /dev/null +++ b/assets/icons/flags/FR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GA.svg b/assets/icons/flags/GA.svg new file mode 100644 index 0000000000..72aa571de2 --- /dev/null +++ b/assets/icons/flags/GA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GB-ENG.svg b/assets/icons/flags/GB-ENG.svg new file mode 100644 index 0000000000..0aa64158b6 --- /dev/null +++ b/assets/icons/flags/GB-ENG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GB-NIR.svg b/assets/icons/flags/GB-NIR.svg new file mode 100644 index 0000000000..b26e75f0f7 --- /dev/null +++ b/assets/icons/flags/GB-NIR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GB-SCT.svg b/assets/icons/flags/GB-SCT.svg new file mode 100644 index 0000000000..564b78ce28 --- /dev/null +++ b/assets/icons/flags/GB-SCT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GB-WLS.svg b/assets/icons/flags/GB-WLS.svg new file mode 100644 index 0000000000..0689531485 --- /dev/null +++ b/assets/icons/flags/GB-WLS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GB.svg b/assets/icons/flags/GB.svg new file mode 100644 index 0000000000..3b1d9e3964 --- /dev/null +++ b/assets/icons/flags/GB.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GD.svg b/assets/icons/flags/GD.svg new file mode 100644 index 0000000000..5645235243 --- /dev/null +++ b/assets/icons/flags/GD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GE-AB.svg b/assets/icons/flags/GE-AB.svg new file mode 100644 index 0000000000..f9a49bd2d8 --- /dev/null +++ b/assets/icons/flags/GE-AB.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GE-OS.svg b/assets/icons/flags/GE-OS.svg new file mode 100644 index 0000000000..129c31d9fe --- /dev/null +++ b/assets/icons/flags/GE-OS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GE.svg b/assets/icons/flags/GE.svg new file mode 100644 index 0000000000..5983d83b4f --- /dev/null +++ b/assets/icons/flags/GE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GF.svg b/assets/icons/flags/GF.svg new file mode 100644 index 0000000000..f5342f6c28 --- /dev/null +++ b/assets/icons/flags/GF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GG.svg b/assets/icons/flags/GG.svg new file mode 100644 index 0000000000..c16d330658 --- /dev/null +++ b/assets/icons/flags/GG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GH.svg b/assets/icons/flags/GH.svg new file mode 100644 index 0000000000..faed278025 --- /dev/null +++ b/assets/icons/flags/GH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GI.svg b/assets/icons/flags/GI.svg new file mode 100644 index 0000000000..748fe7c880 --- /dev/null +++ b/assets/icons/flags/GI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GL.svg b/assets/icons/flags/GL.svg new file mode 100644 index 0000000000..19be13633e --- /dev/null +++ b/assets/icons/flags/GL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GM.svg b/assets/icons/flags/GM.svg new file mode 100644 index 0000000000..acde58a19a --- /dev/null +++ b/assets/icons/flags/GM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GN.svg b/assets/icons/flags/GN.svg new file mode 100644 index 0000000000..ac1d0e54ee --- /dev/null +++ b/assets/icons/flags/GN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GP.svg b/assets/icons/flags/GP.svg new file mode 100644 index 0000000000..b5badd1cac --- /dev/null +++ b/assets/icons/flags/GP.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GQ.svg b/assets/icons/flags/GQ.svg new file mode 100644 index 0000000000..d8887dbd10 --- /dev/null +++ b/assets/icons/flags/GQ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GR.svg b/assets/icons/flags/GR.svg new file mode 100644 index 0000000000..9e8da77a81 --- /dev/null +++ b/assets/icons/flags/GR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GS.svg b/assets/icons/flags/GS.svg new file mode 100644 index 0000000000..7b98b6c9ad --- /dev/null +++ b/assets/icons/flags/GS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GT.svg b/assets/icons/flags/GT.svg new file mode 100644 index 0000000000..adb292e8d7 --- /dev/null +++ b/assets/icons/flags/GT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GU.svg b/assets/icons/flags/GU.svg new file mode 100644 index 0000000000..e9800dfb1f --- /dev/null +++ b/assets/icons/flags/GU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GW.svg b/assets/icons/flags/GW.svg new file mode 100644 index 0000000000..55273b99c3 --- /dev/null +++ b/assets/icons/flags/GW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/GY.svg b/assets/icons/flags/GY.svg new file mode 100644 index 0000000000..fa6701a4b5 --- /dev/null +++ b/assets/icons/flags/GY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/HK.svg b/assets/icons/flags/HK.svg new file mode 100644 index 0000000000..424e0268f5 --- /dev/null +++ b/assets/icons/flags/HK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/HM.svg b/assets/icons/flags/HM.svg new file mode 100644 index 0000000000..fd92835f03 --- /dev/null +++ b/assets/icons/flags/HM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/HN.svg b/assets/icons/flags/HN.svg new file mode 100644 index 0000000000..1ddf9a6b22 --- /dev/null +++ b/assets/icons/flags/HN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/HR.svg b/assets/icons/flags/HR.svg new file mode 100644 index 0000000000..f925d4dfab --- /dev/null +++ b/assets/icons/flags/HR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/HT.svg b/assets/icons/flags/HT.svg new file mode 100644 index 0000000000..b0a13cb34c --- /dev/null +++ b/assets/icons/flags/HT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/HU.svg b/assets/icons/flags/HU.svg new file mode 100644 index 0000000000..b0bb33ea4b --- /dev/null +++ b/assets/icons/flags/HU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IC.svg b/assets/icons/flags/IC.svg new file mode 100644 index 0000000000..afe0b50fbe --- /dev/null +++ b/assets/icons/flags/IC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ID.svg b/assets/icons/flags/ID.svg new file mode 100644 index 0000000000..e0b7116f7c --- /dev/null +++ b/assets/icons/flags/ID.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IE.svg b/assets/icons/flags/IE.svg new file mode 100644 index 0000000000..4c375d1c37 --- /dev/null +++ b/assets/icons/flags/IE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IL.svg b/assets/icons/flags/IL.svg new file mode 100644 index 0000000000..5cdba0b14a --- /dev/null +++ b/assets/icons/flags/IL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IM.svg b/assets/icons/flags/IM.svg new file mode 100644 index 0000000000..209e082422 --- /dev/null +++ b/assets/icons/flags/IM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IN.svg b/assets/icons/flags/IN.svg new file mode 100644 index 0000000000..7247466440 --- /dev/null +++ b/assets/icons/flags/IN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IO.svg b/assets/icons/flags/IO.svg new file mode 100644 index 0000000000..c3cf26da8f --- /dev/null +++ b/assets/icons/flags/IO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IQ.svg b/assets/icons/flags/IQ.svg new file mode 100644 index 0000000000..2331570036 --- /dev/null +++ b/assets/icons/flags/IQ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IR.svg b/assets/icons/flags/IR.svg new file mode 100644 index 0000000000..8180a7dcd3 --- /dev/null +++ b/assets/icons/flags/IR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IS.svg b/assets/icons/flags/IS.svg new file mode 100644 index 0000000000..0eeb61c4e1 --- /dev/null +++ b/assets/icons/flags/IS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/IT.svg b/assets/icons/flags/IT.svg new file mode 100644 index 0000000000..57f6a3ac51 --- /dev/null +++ b/assets/icons/flags/IT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/JE.svg b/assets/icons/flags/JE.svg new file mode 100644 index 0000000000..a1e99d962a --- /dev/null +++ b/assets/icons/flags/JE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/JM.svg b/assets/icons/flags/JM.svg new file mode 100644 index 0000000000..f1f5116d36 --- /dev/null +++ b/assets/icons/flags/JM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/JO.svg b/assets/icons/flags/JO.svg new file mode 100644 index 0000000000..4c6c532b45 --- /dev/null +++ b/assets/icons/flags/JO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/JP.svg b/assets/icons/flags/JP.svg new file mode 100644 index 0000000000..90b8cd1324 --- /dev/null +++ b/assets/icons/flags/JP.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KE.svg b/assets/icons/flags/KE.svg new file mode 100644 index 0000000000..24d4fc4f0d --- /dev/null +++ b/assets/icons/flags/KE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KG.svg b/assets/icons/flags/KG.svg new file mode 100644 index 0000000000..3df8dbf305 --- /dev/null +++ b/assets/icons/flags/KG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KH.svg b/assets/icons/flags/KH.svg new file mode 100644 index 0000000000..fa1d0d6427 --- /dev/null +++ b/assets/icons/flags/KH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KI.svg b/assets/icons/flags/KI.svg new file mode 100644 index 0000000000..88c1cad9f0 --- /dev/null +++ b/assets/icons/flags/KI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KM.svg b/assets/icons/flags/KM.svg new file mode 100644 index 0000000000..798007879f --- /dev/null +++ b/assets/icons/flags/KM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KN.svg b/assets/icons/flags/KN.svg new file mode 100644 index 0000000000..d17ff30105 --- /dev/null +++ b/assets/icons/flags/KN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KP.svg b/assets/icons/flags/KP.svg new file mode 100644 index 0000000000..8708465ca9 --- /dev/null +++ b/assets/icons/flags/KP.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KR.svg b/assets/icons/flags/KR.svg new file mode 100644 index 0000000000..4848a4cbf6 --- /dev/null +++ b/assets/icons/flags/KR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KW.svg b/assets/icons/flags/KW.svg new file mode 100644 index 0000000000..12ce61edb3 --- /dev/null +++ b/assets/icons/flags/KW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KY.svg b/assets/icons/flags/KY.svg new file mode 100644 index 0000000000..740f678545 --- /dev/null +++ b/assets/icons/flags/KY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/KZ.svg b/assets/icons/flags/KZ.svg new file mode 100644 index 0000000000..ff07cbe752 --- /dev/null +++ b/assets/icons/flags/KZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LA.svg b/assets/icons/flags/LA.svg new file mode 100644 index 0000000000..a5898c81f4 --- /dev/null +++ b/assets/icons/flags/LA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LB.svg b/assets/icons/flags/LB.svg new file mode 100644 index 0000000000..90385e1a1d --- /dev/null +++ b/assets/icons/flags/LB.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LC.svg b/assets/icons/flags/LC.svg new file mode 100644 index 0000000000..955aba2669 --- /dev/null +++ b/assets/icons/flags/LC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LI.svg b/assets/icons/flags/LI.svg new file mode 100644 index 0000000000..53abf35386 --- /dev/null +++ b/assets/icons/flags/LI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LK.svg b/assets/icons/flags/LK.svg new file mode 100644 index 0000000000..025ec7a5b0 --- /dev/null +++ b/assets/icons/flags/LK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LR.svg b/assets/icons/flags/LR.svg new file mode 100644 index 0000000000..a5214afd42 --- /dev/null +++ b/assets/icons/flags/LR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LS.svg b/assets/icons/flags/LS.svg new file mode 100644 index 0000000000..5ec52c0d16 --- /dev/null +++ b/assets/icons/flags/LS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LT.svg b/assets/icons/flags/LT.svg new file mode 100644 index 0000000000..bb38ff68a0 --- /dev/null +++ b/assets/icons/flags/LT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LU.svg b/assets/icons/flags/LU.svg new file mode 100644 index 0000000000..e1027c1ec5 --- /dev/null +++ b/assets/icons/flags/LU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LV.svg b/assets/icons/flags/LV.svg new file mode 100644 index 0000000000..91c70db231 --- /dev/null +++ b/assets/icons/flags/LV.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/LY.svg b/assets/icons/flags/LY.svg new file mode 100644 index 0000000000..469399e70a --- /dev/null +++ b/assets/icons/flags/LY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MA.svg b/assets/icons/flags/MA.svg new file mode 100644 index 0000000000..011d0936cd --- /dev/null +++ b/assets/icons/flags/MA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MC.svg b/assets/icons/flags/MC.svg new file mode 100644 index 0000000000..86bdf0fc21 --- /dev/null +++ b/assets/icons/flags/MC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MD.svg b/assets/icons/flags/MD.svg new file mode 100644 index 0000000000..193115948f --- /dev/null +++ b/assets/icons/flags/MD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ME.svg b/assets/icons/flags/ME.svg new file mode 100644 index 0000000000..14da4b6bd8 --- /dev/null +++ b/assets/icons/flags/ME.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MF.svg b/assets/icons/flags/MF.svg new file mode 100644 index 0000000000..c273767c92 --- /dev/null +++ b/assets/icons/flags/MF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MG.svg b/assets/icons/flags/MG.svg new file mode 100644 index 0000000000..e028cd6f81 --- /dev/null +++ b/assets/icons/flags/MG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MH.svg b/assets/icons/flags/MH.svg new file mode 100644 index 0000000000..14bbdb6c47 --- /dev/null +++ b/assets/icons/flags/MH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MK.svg b/assets/icons/flags/MK.svg new file mode 100644 index 0000000000..96f493547c --- /dev/null +++ b/assets/icons/flags/MK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ML.svg b/assets/icons/flags/ML.svg new file mode 100644 index 0000000000..6124e3ab41 --- /dev/null +++ b/assets/icons/flags/ML.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MM.svg b/assets/icons/flags/MM.svg new file mode 100644 index 0000000000..10b91e6e81 --- /dev/null +++ b/assets/icons/flags/MM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MN.svg b/assets/icons/flags/MN.svg new file mode 100644 index 0000000000..fcc533dc8d --- /dev/null +++ b/assets/icons/flags/MN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MO.svg b/assets/icons/flags/MO.svg new file mode 100644 index 0000000000..2e3aec70d0 --- /dev/null +++ b/assets/icons/flags/MO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MP.svg b/assets/icons/flags/MP.svg new file mode 100644 index 0000000000..b48744316f --- /dev/null +++ b/assets/icons/flags/MP.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MQ.svg b/assets/icons/flags/MQ.svg new file mode 100644 index 0000000000..b2ad901891 --- /dev/null +++ b/assets/icons/flags/MQ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MR.svg b/assets/icons/flags/MR.svg new file mode 100644 index 0000000000..6194ad73fa --- /dev/null +++ b/assets/icons/flags/MR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MS.svg b/assets/icons/flags/MS.svg new file mode 100644 index 0000000000..253f44705d --- /dev/null +++ b/assets/icons/flags/MS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MT.svg b/assets/icons/flags/MT.svg new file mode 100644 index 0000000000..bc617d44bb --- /dev/null +++ b/assets/icons/flags/MT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MU.svg b/assets/icons/flags/MU.svg new file mode 100644 index 0000000000..0f967a6dee --- /dev/null +++ b/assets/icons/flags/MU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MV.svg b/assets/icons/flags/MV.svg new file mode 100644 index 0000000000..b2bb113211 --- /dev/null +++ b/assets/icons/flags/MV.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MW.svg b/assets/icons/flags/MW.svg new file mode 100644 index 0000000000..1766294d0a --- /dev/null +++ b/assets/icons/flags/MW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MX.svg b/assets/icons/flags/MX.svg new file mode 100644 index 0000000000..99736f6093 --- /dev/null +++ b/assets/icons/flags/MX.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MY.svg b/assets/icons/flags/MY.svg new file mode 100644 index 0000000000..a3bff4d51f --- /dev/null +++ b/assets/icons/flags/MY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/MZ.svg b/assets/icons/flags/MZ.svg new file mode 100644 index 0000000000..1c079286ce --- /dev/null +++ b/assets/icons/flags/MZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NA.svg b/assets/icons/flags/NA.svg new file mode 100644 index 0000000000..f38e9b4075 --- /dev/null +++ b/assets/icons/flags/NA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NC.svg b/assets/icons/flags/NC.svg new file mode 100644 index 0000000000..000085726f --- /dev/null +++ b/assets/icons/flags/NC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NE.svg b/assets/icons/flags/NE.svg new file mode 100644 index 0000000000..b41710a5df --- /dev/null +++ b/assets/icons/flags/NE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NF.svg b/assets/icons/flags/NF.svg new file mode 100644 index 0000000000..b8ee1853eb --- /dev/null +++ b/assets/icons/flags/NF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NG.svg b/assets/icons/flags/NG.svg new file mode 100644 index 0000000000..2a2e1b5b6b --- /dev/null +++ b/assets/icons/flags/NG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NI.svg b/assets/icons/flags/NI.svg new file mode 100644 index 0000000000..af63fbf4ae --- /dev/null +++ b/assets/icons/flags/NI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NL.svg b/assets/icons/flags/NL.svg new file mode 100644 index 0000000000..444e6164d0 --- /dev/null +++ b/assets/icons/flags/NL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NO.svg b/assets/icons/flags/NO.svg new file mode 100644 index 0000000000..5ed30a5a46 --- /dev/null +++ b/assets/icons/flags/NO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NP.svg b/assets/icons/flags/NP.svg new file mode 100644 index 0000000000..d6a4ae2165 --- /dev/null +++ b/assets/icons/flags/NP.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NR.svg b/assets/icons/flags/NR.svg new file mode 100644 index 0000000000..369fe2528a --- /dev/null +++ b/assets/icons/flags/NR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NU.svg b/assets/icons/flags/NU.svg new file mode 100644 index 0000000000..b0de11e264 --- /dev/null +++ b/assets/icons/flags/NU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/NZ.svg b/assets/icons/flags/NZ.svg new file mode 100644 index 0000000000..0358324d4f --- /dev/null +++ b/assets/icons/flags/NZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/OM.svg b/assets/icons/flags/OM.svg new file mode 100644 index 0000000000..fe378218ee --- /dev/null +++ b/assets/icons/flags/OM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PA.svg b/assets/icons/flags/PA.svg new file mode 100644 index 0000000000..4ae42c69c6 --- /dev/null +++ b/assets/icons/flags/PA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PE.svg b/assets/icons/flags/PE.svg new file mode 100644 index 0000000000..1abe3b2878 --- /dev/null +++ b/assets/icons/flags/PE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PF.svg b/assets/icons/flags/PF.svg new file mode 100644 index 0000000000..64d6dbb477 --- /dev/null +++ b/assets/icons/flags/PF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PG.svg b/assets/icons/flags/PG.svg new file mode 100644 index 0000000000..d8e60b58c8 --- /dev/null +++ b/assets/icons/flags/PG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PH.svg b/assets/icons/flags/PH.svg new file mode 100644 index 0000000000..adbb119660 --- /dev/null +++ b/assets/icons/flags/PH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PK.svg b/assets/icons/flags/PK.svg new file mode 100644 index 0000000000..07049f36da --- /dev/null +++ b/assets/icons/flags/PK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PL.svg b/assets/icons/flags/PL.svg new file mode 100644 index 0000000000..3a7b14b75d --- /dev/null +++ b/assets/icons/flags/PL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PM.svg b/assets/icons/flags/PM.svg new file mode 100644 index 0000000000..b5badd1cac --- /dev/null +++ b/assets/icons/flags/PM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PN.svg b/assets/icons/flags/PN.svg new file mode 100644 index 0000000000..a03859e335 --- /dev/null +++ b/assets/icons/flags/PN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PR.svg b/assets/icons/flags/PR.svg new file mode 100644 index 0000000000..f5c2446689 --- /dev/null +++ b/assets/icons/flags/PR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PS.svg b/assets/icons/flags/PS.svg new file mode 100644 index 0000000000..0c8ed3a255 --- /dev/null +++ b/assets/icons/flags/PS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PT.svg b/assets/icons/flags/PT.svg new file mode 100644 index 0000000000..c51521b273 --- /dev/null +++ b/assets/icons/flags/PT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PW.svg b/assets/icons/flags/PW.svg new file mode 100644 index 0000000000..e9835b9cff --- /dev/null +++ b/assets/icons/flags/PW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/PY.svg b/assets/icons/flags/PY.svg new file mode 100644 index 0000000000..6a69eb7fcb --- /dev/null +++ b/assets/icons/flags/PY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/QA.svg b/assets/icons/flags/QA.svg new file mode 100644 index 0000000000..f4c1fe4140 --- /dev/null +++ b/assets/icons/flags/QA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/RE.svg b/assets/icons/flags/RE.svg new file mode 100644 index 0000000000..b5badd1cac --- /dev/null +++ b/assets/icons/flags/RE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/README.md b/assets/icons/flags/README.md new file mode 100644 index 0000000000..3a9d7499c6 --- /dev/null +++ b/assets/icons/flags/README.md @@ -0,0 +1,4 @@ +The flags in this directory are from the excellent [country-flag-icons](https://gitlab.com/catamphetamine/country-flag-icons). + +MIT License +Copyright (c) 2020 @catamphetamine diff --git a/assets/icons/flags/RO.svg b/assets/icons/flags/RO.svg new file mode 100644 index 0000000000..43dbefc3c1 --- /dev/null +++ b/assets/icons/flags/RO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/RS.svg b/assets/icons/flags/RS.svg new file mode 100644 index 0000000000..09c7d1b290 --- /dev/null +++ b/assets/icons/flags/RS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/RU.svg b/assets/icons/flags/RU.svg new file mode 100644 index 0000000000..2a53b90c1a --- /dev/null +++ b/assets/icons/flags/RU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/RW.svg b/assets/icons/flags/RW.svg new file mode 100644 index 0000000000..cd0b5406b9 --- /dev/null +++ b/assets/icons/flags/RW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SA.svg b/assets/icons/flags/SA.svg new file mode 100644 index 0000000000..75230d685a --- /dev/null +++ b/assets/icons/flags/SA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SB.svg b/assets/icons/flags/SB.svg new file mode 100644 index 0000000000..505d976bfe --- /dev/null +++ b/assets/icons/flags/SB.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SC.svg b/assets/icons/flags/SC.svg new file mode 100644 index 0000000000..04eb788548 --- /dev/null +++ b/assets/icons/flags/SC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SD.svg b/assets/icons/flags/SD.svg new file mode 100644 index 0000000000..334e00697b --- /dev/null +++ b/assets/icons/flags/SD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SE.svg b/assets/icons/flags/SE.svg new file mode 100644 index 0000000000..97f1917641 --- /dev/null +++ b/assets/icons/flags/SE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SG.svg b/assets/icons/flags/SG.svg new file mode 100644 index 0000000000..5487a91588 --- /dev/null +++ b/assets/icons/flags/SG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SH.svg b/assets/icons/flags/SH.svg new file mode 100644 index 0000000000..00605856e2 --- /dev/null +++ b/assets/icons/flags/SH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SI.svg b/assets/icons/flags/SI.svg new file mode 100644 index 0000000000..70fa43b0f6 --- /dev/null +++ b/assets/icons/flags/SI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SJ.svg b/assets/icons/flags/SJ.svg new file mode 100644 index 0000000000..5ed30a5a46 --- /dev/null +++ b/assets/icons/flags/SJ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SK.svg b/assets/icons/flags/SK.svg new file mode 100644 index 0000000000..531a958391 --- /dev/null +++ b/assets/icons/flags/SK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SL.svg b/assets/icons/flags/SL.svg new file mode 100644 index 0000000000..055a0e69a0 --- /dev/null +++ b/assets/icons/flags/SL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SM.svg b/assets/icons/flags/SM.svg new file mode 100644 index 0000000000..edeee75916 --- /dev/null +++ b/assets/icons/flags/SM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SN.svg b/assets/icons/flags/SN.svg new file mode 100644 index 0000000000..4fc64ab9da --- /dev/null +++ b/assets/icons/flags/SN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SO.svg b/assets/icons/flags/SO.svg new file mode 100644 index 0000000000..369d0b7b68 --- /dev/null +++ b/assets/icons/flags/SO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SR.svg b/assets/icons/flags/SR.svg new file mode 100644 index 0000000000..1f093d2723 --- /dev/null +++ b/assets/icons/flags/SR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SS.svg b/assets/icons/flags/SS.svg new file mode 100644 index 0000000000..8f8e6944f4 --- /dev/null +++ b/assets/icons/flags/SS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ST.svg b/assets/icons/flags/ST.svg new file mode 100644 index 0000000000..c92c394c1f --- /dev/null +++ b/assets/icons/flags/ST.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SV.svg b/assets/icons/flags/SV.svg new file mode 100644 index 0000000000..ba6209620b --- /dev/null +++ b/assets/icons/flags/SV.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SX.svg b/assets/icons/flags/SX.svg new file mode 100644 index 0000000000..2baa040e03 --- /dev/null +++ b/assets/icons/flags/SX.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SY.svg b/assets/icons/flags/SY.svg new file mode 100644 index 0000000000..91f3d59015 --- /dev/null +++ b/assets/icons/flags/SY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/SZ.svg b/assets/icons/flags/SZ.svg new file mode 100644 index 0000000000..14626636a9 --- /dev/null +++ b/assets/icons/flags/SZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TA.svg b/assets/icons/flags/TA.svg new file mode 100644 index 0000000000..21c7b3596c --- /dev/null +++ b/assets/icons/flags/TA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TC.svg b/assets/icons/flags/TC.svg new file mode 100644 index 0000000000..156efe3128 --- /dev/null +++ b/assets/icons/flags/TC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TD.svg b/assets/icons/flags/TD.svg new file mode 100644 index 0000000000..e4cd67eed6 --- /dev/null +++ b/assets/icons/flags/TD.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TF.svg b/assets/icons/flags/TF.svg new file mode 100644 index 0000000000..f198ab156f --- /dev/null +++ b/assets/icons/flags/TF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TG.svg b/assets/icons/flags/TG.svg new file mode 100644 index 0000000000..38432170d0 --- /dev/null +++ b/assets/icons/flags/TG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TH.svg b/assets/icons/flags/TH.svg new file mode 100644 index 0000000000..9d991cca56 --- /dev/null +++ b/assets/icons/flags/TH.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TJ.svg b/assets/icons/flags/TJ.svg new file mode 100644 index 0000000000..63bcc0aaee --- /dev/null +++ b/assets/icons/flags/TJ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TK.svg b/assets/icons/flags/TK.svg new file mode 100644 index 0000000000..e8dea76b4f --- /dev/null +++ b/assets/icons/flags/TK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TL.svg b/assets/icons/flags/TL.svg new file mode 100644 index 0000000000..f19173481c --- /dev/null +++ b/assets/icons/flags/TL.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TM.svg b/assets/icons/flags/TM.svg new file mode 100644 index 0000000000..a0d0249a61 --- /dev/null +++ b/assets/icons/flags/TM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TN.svg b/assets/icons/flags/TN.svg new file mode 100644 index 0000000000..72c6854fcf --- /dev/null +++ b/assets/icons/flags/TN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TO.svg b/assets/icons/flags/TO.svg new file mode 100644 index 0000000000..af1ea76a20 --- /dev/null +++ b/assets/icons/flags/TO.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TR.svg b/assets/icons/flags/TR.svg new file mode 100644 index 0000000000..2ae4cfad49 --- /dev/null +++ b/assets/icons/flags/TR.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TT.svg b/assets/icons/flags/TT.svg new file mode 100644 index 0000000000..5d2d956e92 --- /dev/null +++ b/assets/icons/flags/TT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TV.svg b/assets/icons/flags/TV.svg new file mode 100644 index 0000000000..ee26557a64 --- /dev/null +++ b/assets/icons/flags/TV.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TW.svg b/assets/icons/flags/TW.svg new file mode 100644 index 0000000000..7f99d2ba75 --- /dev/null +++ b/assets/icons/flags/TW.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/TZ.svg b/assets/icons/flags/TZ.svg new file mode 100644 index 0000000000..3c2f42d9d3 --- /dev/null +++ b/assets/icons/flags/TZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/UA.svg b/assets/icons/flags/UA.svg new file mode 100644 index 0000000000..8c8986fe46 --- /dev/null +++ b/assets/icons/flags/UA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/UG.svg b/assets/icons/flags/UG.svg new file mode 100644 index 0000000000..8ec2ec68f8 --- /dev/null +++ b/assets/icons/flags/UG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/UM.svg b/assets/icons/flags/UM.svg new file mode 100644 index 0000000000..c8dc4669e8 --- /dev/null +++ b/assets/icons/flags/UM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/US.svg b/assets/icons/flags/US.svg new file mode 100644 index 0000000000..c8dc4669e8 --- /dev/null +++ b/assets/icons/flags/US.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/UY.svg b/assets/icons/flags/UY.svg new file mode 100644 index 0000000000..42e38de43e --- /dev/null +++ b/assets/icons/flags/UY.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/UZ.svg b/assets/icons/flags/UZ.svg new file mode 100644 index 0000000000..1b18a9335b --- /dev/null +++ b/assets/icons/flags/UZ.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VA.svg b/assets/icons/flags/VA.svg new file mode 100644 index 0000000000..8682f982c8 --- /dev/null +++ b/assets/icons/flags/VA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VC.svg b/assets/icons/flags/VC.svg new file mode 100644 index 0000000000..23d26b7f2e --- /dev/null +++ b/assets/icons/flags/VC.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VE.svg b/assets/icons/flags/VE.svg new file mode 100644 index 0000000000..3a505c656e --- /dev/null +++ b/assets/icons/flags/VE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VG.svg b/assets/icons/flags/VG.svg new file mode 100644 index 0000000000..160681b53d --- /dev/null +++ b/assets/icons/flags/VG.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VI.svg b/assets/icons/flags/VI.svg new file mode 100644 index 0000000000..177603428d --- /dev/null +++ b/assets/icons/flags/VI.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VN.svg b/assets/icons/flags/VN.svg new file mode 100644 index 0000000000..7d2c0cdf53 --- /dev/null +++ b/assets/icons/flags/VN.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/VU.svg b/assets/icons/flags/VU.svg new file mode 100644 index 0000000000..4936535a09 --- /dev/null +++ b/assets/icons/flags/VU.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/WF.svg b/assets/icons/flags/WF.svg new file mode 100644 index 0000000000..f537338379 --- /dev/null +++ b/assets/icons/flags/WF.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/WS.svg b/assets/icons/flags/WS.svg new file mode 100644 index 0000000000..516afd881a --- /dev/null +++ b/assets/icons/flags/WS.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/XK.svg b/assets/icons/flags/XK.svg new file mode 100644 index 0000000000..913166f1a2 --- /dev/null +++ b/assets/icons/flags/XK.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/YE.svg b/assets/icons/flags/YE.svg new file mode 100644 index 0000000000..782127b1cd --- /dev/null +++ b/assets/icons/flags/YE.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/YT.svg b/assets/icons/flags/YT.svg new file mode 100644 index 0000000000..2baa22a60f --- /dev/null +++ b/assets/icons/flags/YT.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ZA.svg b/assets/icons/flags/ZA.svg new file mode 100644 index 0000000000..3756770441 --- /dev/null +++ b/assets/icons/flags/ZA.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ZM.svg b/assets/icons/flags/ZM.svg new file mode 100644 index 0000000000..fd3077c16c --- /dev/null +++ b/assets/icons/flags/ZM.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/flags/ZW.svg b/assets/icons/flags/ZW.svg new file mode 100644 index 0000000000..4a8509b4ab --- /dev/null +++ b/assets/icons/flags/ZW.svg @@ -0,0 +1 @@ + diff --git a/package.json b/package.json index 4d7e1d8cf8..e26f1645b2 100644 --- a/package.json +++ b/package.json @@ -83,9 +83,10 @@ "@expo/webpack-config": "^19.0.1", "@floating-ui/dom": "^1.6.3", "@floating-ui/react-dom": "^2.0.8", - "@formatjs/intl-locale": "^4.2.8", - "@formatjs/intl-numberformat": "^8.15.1", - "@formatjs/intl-pluralrules": "^5.4.1", + "@formatjs/intl-displaynames": "^6.8.13", + "@formatjs/intl-locale": "^4.2.13", + "@formatjs/intl-numberformat": "^8.15.6", + "@formatjs/intl-pluralrules": "^5.4.6", "@fortawesome/fontawesome-svg-core": "^6.1.1", "@fortawesome/free-regular-svg-icons": "^6.1.1", "@fortawesome/free-solid-svg-icons": "^6.1.1", diff --git a/src/components/AppLanguageDropdown.tsx b/src/components/AppLanguageDropdown.tsx index 7ad0928778..a57794a2ef 100644 --- a/src/components/AppLanguageDropdown.tsx +++ b/src/components/AppLanguageDropdown.tsx @@ -66,6 +66,7 @@ export function AppLanguageDropdown() { )} ( diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 810442fea0..717985d475 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -105,7 +105,8 @@ export type ButtonProps = Pick< PressableComponent?: React.ComponentType } -export type ButtonTextProps = TextProps & VariantProps & {disabled?: boolean} +export type ButtonTextProps = TextProps & + VariantProps & {disabled?: boolean; emoji?: boolean} const Context = React.createContext({ hovered: false, diff --git a/src/components/InternationalPhoneCodeSelect.tsx b/src/components/InternationalPhoneCodeSelect.tsx new file mode 100644 index 0000000000..f42f4a21a3 --- /dev/null +++ b/src/components/InternationalPhoneCodeSelect.tsx @@ -0,0 +1,116 @@ +import {Fragment, useMemo} from 'react' +import {Image} from 'expo-image' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import { + getDefaultCountry, + INTERNATIONAL_TELEPHONE_CODES, +} from '#/lib/international-telephone-codes' +import {regionName} from '#/locale/helpers' +import {isWeb} from '#/platform/detection' +import {atoms as a, web} from '#/alf' +import * as Select from '#/components/Select' +import {useGeolocation} from '#/geolocation' + +/** + * Country picker for a phone number input + * + * Pro tip: you can use `location?.countryCode` from `useGeolocationStatus()` + * to set a default value. + */ +export function InternationalPhoneCodeSelect({ + value, + onChange, +}: { + value?: string + onChange: (value: string) => void +}) { + const {_, i18n} = useLingui() + const location = useGeolocation() + + const defaultCountry = useMemo(() => { + return getDefaultCountry(location) + }, [location]) + + const items = useMemo(() => { + return ( + Object.entries(INTERNATIONAL_TELEPHONE_CODES) + .map(([value, {code, unicodeFlag, svgFlag}]) => { + const name = regionName(value, i18n.locale) + + return { + value, + name, + code, + label: `${name} ${code}`, + unicodeFlag, + svgFlag, + } + }) + // boost the default value to the top, then sort by name + .sort((a, b) => { + if (a.value === defaultCountry) return -1 + if (b.value === defaultCountry) return 1 + return a.name.localeCompare(b.name) + }) + ) + }, [i18n.locale, defaultCountry]) + + const selected = useMemo(() => { + return items.find(item => item.value === value) + }, [value, items]) + + return ( + + + + {selected => ( + <> + + {selected.code} + + )} + + + + ( + + + + + {isWeb ? : item.unicodeFlag + ' '} + {item.name} + + + {' '} + {item.code} + + + {item.value === defaultCountry && } + + )} + /> + + ) +} + +function Flag({unicodeFlag, svgFlag}: {unicodeFlag: string; svgFlag: any}) { + if (isWeb) { + return ( + + ) + } + return unicodeFlag + ' ' +} diff --git a/src/components/LanguageSelect.tsx b/src/components/LanguageSelect.tsx index 2ad3949aee..6b466609f4 100644 --- a/src/components/LanguageSelect.tsx +++ b/src/components/LanguageSelect.tsx @@ -13,10 +13,12 @@ export function LanguageSelect({ label: l.name, value: l.code2, })), + label, }: { value?: string onChange: (value: string) => void items?: {label: string; value: string}[] + label?: string }) { const {_} = useLingui() @@ -37,6 +39,7 @@ export function LanguageSelect({ ( diff --git a/src/components/Select/index.tsx b/src/components/Select/index.tsx index a723e52370..8d4412be2a 100644 --- a/src/components/Select/index.tsx +++ b/src/components/Select/index.tsx @@ -7,7 +7,7 @@ import { useState, } from 'react' import {View} from 'react-native' -import {msg, Trans} from '@lingui/macro' +import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useTheme} from '#/alf' @@ -15,9 +15,9 @@ import {atoms as a} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {useInteractionState} from '#/components/hooks/useInteractionState' -import {Check_Stroke2_Corner0_Rounded as CheckIcon} from '#/components/icons/Check' import {ChevronTopBottom_Stroke2_Corner0_Rounded as ChevronUpDownIcon} from '#/components/icons/Chevron' import {Text} from '#/components/Typography' +import {BaseRadio} from '../forms/Toggle' import { type ContentProps, type IconProps, @@ -122,10 +122,12 @@ export function ValueText({ const t = useTheme() let text = value && children(value) - if (typeof text !== 'string') text = placeholder + if (!text) text = placeholder return ( - {text} + + {text} + ) } @@ -162,15 +164,14 @@ export function Content({ } function ContentInner({ + label, items, renderItem, valueExtractor, ...context }: ContentProps & ContextType) { - const control = Dialog.useDialogContext() - const {_} = useLingui() - const [headerHeight, setHeaderHeight] = useState(50) + const [headerHeight, setHeaderHeight] = useState(61) const render = useCallback( ({item, index}: {item: T; index: number}) => { @@ -179,33 +180,26 @@ function ContentInner({ [renderItem, context.value], ) - const doneButton = useCallback( - () => ( - - ), - [control, _], - ) - return ( setHeaderHeight(evt.nativeEvent.layout.height)} - style={[a.absolute, a.top_0, a.left_0, a.right_0, a.z_10]}> - - Select an option + style={[ + a.absolute, + a.top_0, + a.left_0, + a.right_0, + a.z_10, + a.pt_3xl, + a.pb_sm, + a.border_b_0, + ]}> + + {label ?? _(msg`Select an option`)} + {children} @@ -273,20 +268,48 @@ export function Item({children, value, label, style}: ItemProps) { ) } -export function ItemText({children}: ItemTextProps) { +export function ItemText({children, style, emoji}: ItemTextProps) { const {selected} = useItemContext() - const t = useTheme() - // eslint-disable-next-line bsky-internal/avoid-unwrapped-text return ( - - {children} - + + {children} + ) } -export function ItemIndicator({icon: Icon = CheckIcon}: ItemIndicatorProps) { - const {selected} = useItemContext() +export function ItemIndicator({icon: Icon}: ItemIndicatorProps) { + const {selected, focused, hovered} = useItemContext() - return {selected && } + if (Icon) { + return {selected && } + } + + return ( + + ) +} + +export function Separator() { + const t = useTheme() + + return ( + + ) } diff --git a/src/components/Select/index.web.tsx b/src/components/Select/index.web.tsx index 995f9d412e..23a0279914 100644 --- a/src/components/Select/index.web.tsx +++ b/src/components/Select/index.web.tsx @@ -2,7 +2,8 @@ import {createContext, forwardRef, Fragment, useContext, useMemo} from 'react' import {View} from 'react-native' import {Select as RadixSelect} from 'radix-ui' -import {flatten, useTheme} from '#/alf' +import {useA11y} from '#/state/a11y' +import {flatten, useTheme, web} from '#/alf' import {atoms as a} from '#/alf' import {useInteractionState} from '#/components/hooks/useInteractionState' import {Check_Stroke2_Corner0_Rounded as CheckIcon} from '#/components/icons/Check' @@ -16,6 +17,7 @@ import { type IconProps, type ItemIndicatorProps, type ItemProps, + type ItemTextProps, type RadixPassThroughTriggerProps, type RootProps, type TriggerProps, @@ -97,7 +99,6 @@ export function Trigger({children, label}: TriggerProps) { a.flex, a.relative, t.atoms.bg_contrast_50, - a.w_full, a.align_center, a.gap_sm, a.justify_between, @@ -121,10 +122,21 @@ export function Trigger({children, label}: TriggerProps) { } } -export function ValueText({children: _, style, ...props}: ValueProps) { +export function ValueText({ + children, + webOverrideValue, + style, + ...props +}: ValueProps) { + let content + + if (webOverrideValue && children) { + content = children(webOverrideValue) + } + return ( - + {content} ) } @@ -145,6 +157,7 @@ export function Content({ }: ContentProps) { const t = useTheme() const selectedValue = useContext(SelectedValueContext) + const {reduceMotionEnabled} = useA11y() const scrollBtnStyles: React.CSSProperties[] = [ a.absolute, @@ -186,8 +199,11 @@ export function Content({ + className="radix-select-content" + // prevent the keyboard shortcut for opening the composer + onKeyDown={evt => evt.stopPropagation()}> ({ t.atoms.border_contrast_low, a.rounded_sm, a.overflow_hidden, + !reduceMotionEnabled && a.zoom_fade_in, ]}> @@ -261,7 +278,7 @@ export function Item({ref, value, style, children}: ItemProps) { t.atoms.text, a.relative, a.flex, - {minHeight: 25, paddingLeft: 30, paddingRight: 35}, + {minHeight: 25, paddingLeft: 30, paddingRight: 8}, a.user_select_none, a.align_center, a.rounded_xs, @@ -278,7 +295,15 @@ export function Item({ref, value, style, children}: ItemProps) { ) } -export const ItemText = RadixSelect.ItemText +export const ItemText = function ItemText({children, style}: ItemTextProps) { + return ( + + + {children} + + + ) +} export function ItemIndicator({icon: Icon = CheckIcon}: ItemIndicatorProps) { return ( @@ -294,3 +319,20 @@ export function ItemIndicator({icon: Icon = CheckIcon}: ItemIndicatorProps) { ) } + +export function Separator() { + const t = useTheme() + + return ( + + ) +} diff --git a/src/components/Select/types.ts b/src/components/Select/types.ts index 0e58c197be..b1288caceb 100644 --- a/src/components/Select/types.ts +++ b/src/components/Select/types.ts @@ -123,9 +123,16 @@ export type ValueProps = { /** * Only needed for native. Extracts the label from an item. Defaults to `item => item.label` */ - children?: (value: any) => string + children?: (value: any) => React.ReactNode placeholder?: string style?: StyleProp + /** + * By default, web just extracts the component from inside the dropdown and portals it in here. + * If you want to override this, pass a value that will then be rendered via `children(value)` + * + * @platform web + */ + webOverrideValue?: any } /* @@ -137,6 +144,12 @@ export type ValueProps = { export type IconProps = TextStyleProp export type ContentProps = { + /** + * Label at the top of the sheet on native. + * + * @default "Select an option" + */ + label?: string /** * Items to render. Recommended to be in the form {value: string, label: string} - if not, * you need to provide a `valueExtractor` function to extract the value from an item and @@ -180,6 +193,8 @@ export type ItemProps = { export type ItemTextProps = { children: React.ReactNode + style?: StyleProp + emoji?: boolean } export type ItemIndicatorProps = { diff --git a/src/components/ageAssurance/AgeAssuranceInitDialog.tsx b/src/components/ageAssurance/AgeAssuranceInitDialog.tsx index bce3bdc0f8..14f34f8163 100644 --- a/src/components/ageAssurance/AgeAssuranceInitDialog.tsx +++ b/src/components/ageAssurance/AgeAssuranceInitDialog.tsx @@ -289,6 +289,7 @@ function Inner() { Your preferred language { setLanguage(value) diff --git a/src/components/forms/Toggle/index.tsx b/src/components/forms/Toggle/index.tsx index 60fa50478a..819008f34f 100644 --- a/src/components/forms/Toggle/index.tsx +++ b/src/components/forms/Toggle/index.tsx @@ -503,9 +503,23 @@ export function Switch() { } export function Radio() { + const props = useContext(ItemContext) + + return +} + +export function BaseRadio({ + hovered, + focused, + selected, + disabled, + isInvalid, +}: Pick< + ItemState, + 'hovered' | 'focused' | 'selected' | 'disabled' | 'isInvalid' +>) { const t = useTheme() - const {selected, hovered, focused, disabled, isInvalid} = - useContext(ItemContext) + const {baseStyles, baseHoverStyles, indicatorStyles} = createSharedToggleStyles({ theme: t, @@ -515,6 +529,7 @@ export function Radio() { disabled, isInvalid, }) + return ( ( @@ -133,6 +134,7 @@ export function LanguageSettingsScreen({}: Props) { ( diff --git a/src/view/screens/Storybook/Forms.tsx b/src/view/screens/Storybook/Forms.tsx index a29aa70ab7..3c8de8db95 100644 --- a/src/view/screens/Storybook/Forms.tsx +++ b/src/view/screens/Storybook/Forms.tsx @@ -1,6 +1,7 @@ import React from 'react' import {type TextInput, View} from 'react-native' +import {getDefaultCountry} from '#/lib/international-telephone-codes' import {atoms as a} from '#/alf' import {Button, ButtonText} from '#/components/Button' import {DateField, LabelText} from '#/components/forms/DateField' @@ -9,7 +10,9 @@ import * as TextField from '#/components/forms/TextField' import * as Toggle from '#/components/forms/Toggle' import * as ToggleButton from '#/components/forms/ToggleButton' import {Globe_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe' +import {InternationalPhoneCodeSelect} from '#/components/InternationalPhoneCodeSelect' import {H1, H3} from '#/components/Typography' +import {useGeolocation} from '#/geolocation' export function Forms() { const [toggleGroupAValues, setToggleGroupAValues] = React.useState(['a']) @@ -23,6 +26,11 @@ export function Forms() { const [value, setValue] = React.useState('') const [date, setDate] = React.useState('2001-01-01') + const location = useGeolocation() + const [telCode, setTelCode] = React.useState(() => + getDefaultCountry(location), + ) + const inputRef = React.useRef(null) return ( @@ -119,6 +127,20 @@ export function Forms() { label="Input" /> + +

InternationalPhoneCodeSelect

+ + + + + + + + +
diff --git a/yarn.lock b/yarn.lock index e1d8d9871f..8082783b7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4664,74 +4664,83 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== -"@formatjs/ecma402-abstract@2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz#cdeb3ffe1aeea9c4284b85b7e37e8e8615314c39" - integrity sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw== +"@formatjs/ecma402-abstract@2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz#d6ca9d3579054fe1e1a0a0b5e872e0d64922e4e1" + integrity sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw== dependencies: - "@formatjs/fast-memoize" "2.2.5" - "@formatjs/intl-localematcher" "0.5.9" - decimal.js "10" - tslib "2" + "@formatjs/fast-memoize" "2.2.7" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" -"@formatjs/fast-memoize@2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz#54a4a1793d773b72c372d3dcab3595149aee7880" - integrity sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g== +"@formatjs/fast-memoize@2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz#707f9ddaeb522a32f6715bb7950b0831f4cc7b15" + integrity sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ== dependencies: - tslib "2" + tslib "^2.8.0" -"@formatjs/intl-enumerator@1.8.7": - version "1.8.7" - resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz#3f004753333f80cc468ae34046bd8416772a0412" - integrity sha512-qd7UlWUivKRJ073btssUqMSqzWW9yN3Ki6EqfCZ6uvIv19mONelE5q3GMmdPWBEjgqZikBzBE2qPTqfrgJ4TCA== +"@formatjs/intl-displaynames@^6.8.13": + version "6.8.13" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.8.13.tgz#5e85980b40fbaa0b81e504608e33db6e16a3891e" + integrity sha512-VbY7BdYJX5eURVKLk2grndUQtnbCLNbcJId/Sb/PsX7fWXiqWvg7qt/mecVHRzqoSEoGCQToKDxzpJj8RC0s3g== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-localematcher" "0.6.2" + tslib "^2.8.0" -"@formatjs/intl-getcanonicallocales@2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.4.tgz#9b843e1891dea83405c51eb3d00c42ef9cb6cab9" - integrity sha512-vSDOsAcc3U+Kl/0b3de8wCQkb3W30H8LUuslyz67wTAHOPSQhPimZyquhwxXpJR+K5yy9CkzTgk5YE5kFT+PFg== +"@formatjs/intl-enumerator@1.8.12": + version "1.8.12" + resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.8.12.tgz#8c94a9bff855fb942a95a4c93b5bdeb1a8f54007" + integrity sha512-rT2hnyQ0q6RDG1jISMH+MP6wlHQLUC81C0BeYEzabJb48S4tU2HGCPUxsOqMa3vDAUmpnz9Kw5vYTD5hTkOVgg== dependencies: - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + tslib "^2.8.0" -"@formatjs/intl-locale@^4.2.8": - version "4.2.8" - resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-4.2.8.tgz#571d44e92b6eb43b7410b37f25e280ec384a32cf" - integrity sha512-6RY/npeA0kyoZ8QW0JRAT+VBAFBT6+4ZVeGkKCNIDjbLX2LPuU73emGR35Mbwcc6pquVFrxyo6mXxKNzib0kEA== +"@formatjs/intl-getcanonicallocales@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.6.tgz#d4a8e13dad31f83c142746b423462dcbdf839503" + integrity sha512-CnBbc4St61RL06gDXlCZG08Gt41uiySgsdZNBExh8/c0FBONJCrAlQ9FsyalUdq9ze0nCeknJtMmO8JnB9xHgQ== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - "@formatjs/intl-enumerator" "1.8.7" - "@formatjs/intl-getcanonicallocales" "2.5.4" - tslib "2" + tslib "^2.8.0" -"@formatjs/intl-localematcher@0.5.9": - version "0.5.9" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz#43c6ee22be85b83340bcb09bdfed53657a2720db" - integrity sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA== +"@formatjs/intl-locale@^4.2.13": + version "4.2.13" + resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-4.2.13.tgz#21d4b54ee03b75a7b7384a122510be7ee080a9c5" + integrity sha512-Qcs0mP9JhEPCinPfpZ5JKzOa+VYDg94TQSFZozYuqG8R+hEGUTKyoyMqB5xi5QZT/hlB0CSgeNc/0fWMGtTFXA== dependencies: - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-enumerator" "1.8.12" + "@formatjs/intl-getcanonicallocales" "2.5.6" + tslib "^2.8.0" -"@formatjs/intl-numberformat@^8.15.1": - version "8.15.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-numberformat/-/intl-numberformat-8.15.1.tgz#b2a5b00889ed31dbef9d4e5aeee1dea3d040b068" - integrity sha512-NIouSY50xpH/SMJrRbX1Q3hMsGyQmT5MQrta/bOYhpZda1bztOlEYZAKLytk8VGs10wkGz875602mCMhtg4/LA== +"@formatjs/intl-localematcher@0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz#e9ebe0b4082d7d48e5b2d753579fb7ece4eaefea" + integrity sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - "@formatjs/intl-localematcher" "0.5.9" - decimal.js "10" - tslib "2" + tslib "^2.8.0" -"@formatjs/intl-pluralrules@^5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.1.tgz#1c03cd2da449e1871bb7c54ea36fec1de68b7e7e" - integrity sha512-kKK4ixTsfKAzyJIVRiJGuw4zd18nEHXiKloYBO9VmLpxrwJTgLQHv2+1hcbxQcwbbo2uc8moUFQuyvxeGEFOfw== +"@formatjs/intl-numberformat@^8.15.6": + version "8.15.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-numberformat/-/intl-numberformat-8.15.6.tgz#baf3a00e97887366eddfb4b9782830e06b96883f" + integrity sha512-htynTNKm5WOnbR521tNSMkWzX3yO6Z77qjOxvRujh5/A/UBKeoNElyuKCJltizdx3X33QNWQZC4aWjLKcccyeQ== dependencies: - "@formatjs/ecma402-abstract" "2.3.1" - "@formatjs/intl-localematcher" "0.5.9" - decimal.js "10" - tslib "2" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" + +"@formatjs/intl-pluralrules@^5.4.6": + version "5.4.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.6.tgz#4bd73c4e87974265a7962b6caf0d146e3310f3ad" + integrity sha512-2HlOq+c7KsSps829SJ3B5987coX5mzKx9NbPcNwQ07eq8FBHgB3HfMoxt5HvLsdk4oQwCjAEnocbtd+wVwZ2Kg== + dependencies: + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/intl-localematcher" "0.6.2" + decimal.js "^10.4.3" + tslib "^2.8.0" "@fortawesome/fontawesome-common-types@6.4.2": version "6.4.2" @@ -10209,11 +10218,16 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decimal.js@10, decimal.js@^10.4.2: +decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +decimal.js@^10.4.3: + version "10.6.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== + decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -19227,11 +19241,6 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2, tslib@^2.6.2, tslib@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -19242,6 +19251,11 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.6.2, tslib@^2.8.0, tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"