next-helios-fe 1.8.12 → 1.8.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1489 +1,1484 @@
1
1
  "use client";
2
2
  import React, { useState, useEffect, useRef } from "react";
3
- import { createPortal } from "react-dom";
3
+ import { Dropdown } from "../../../components";
4
4
  import { Icon } from "@iconify/react";
5
5
 
6
- export interface PhoneNumberProps
7
- extends React.InputHTMLAttributes<HTMLInputElement> {
8
- label?: string;
9
- description?: string;
10
- options?: {
11
- width?: "full" | "fit";
12
- height?: "short" | "medium" | "high";
13
- };
14
- getPhoneNumber?: (value: string) => void;
15
- }
16
-
17
- const countryCodes = [
6
+ const countryPhoneCode = [
18
7
  {
19
8
  name: "Afghanistan",
20
- dial_code: "+93",
9
+ dial_code: "93",
21
10
  emoji: "🇦🇫",
22
11
  code: "AF",
23
12
  },
24
13
  {
25
14
  name: "Aland Islands",
26
- dial_code: "+358",
15
+ dial_code: "358",
27
16
  emoji: "🇦🇽",
28
17
  code: "AX",
29
18
  },
30
19
  {
31
20
  name: "Albania",
32
- dial_code: "+355",
21
+ dial_code: "355",
33
22
  emoji: "🇦🇱",
34
23
  code: "AL",
35
24
  },
36
25
  {
37
26
  name: "Algeria",
38
- dial_code: "+213",
27
+ dial_code: "213",
39
28
  emoji: "🇩🇿",
40
29
  code: "DZ",
41
30
  },
42
31
  {
43
32
  name: "AmericanSamoa",
44
- dial_code: "+1684",
33
+ dial_code: "1684",
45
34
  emoji: "🇦🇸",
46
35
  code: "AS",
47
36
  },
48
37
  {
49
38
  name: "Andorra",
50
- dial_code: "+376",
39
+ dial_code: "376",
51
40
  emoji: "🇦🇩",
52
41
  code: "AD",
53
42
  },
54
43
  {
55
44
  name: "Angola",
56
- dial_code: "+244",
45
+ dial_code: "244",
57
46
  emoji: "🇦🇴",
58
47
  code: "AO",
59
48
  },
60
49
  {
61
50
  name: "Anguilla",
62
- dial_code: "+1264",
51
+ dial_code: "1264",
63
52
  emoji: "🇦🇮",
64
53
  code: "AI",
65
54
  },
66
55
  {
67
56
  name: "Antarctica",
68
- dial_code: "+672",
57
+ dial_code: "672",
69
58
  emoji: "🇦🇶",
70
59
  code: "AQ",
71
60
  },
72
61
  {
73
62
  name: "Antigua and Barbuda",
74
- dial_code: "+1268",
63
+ dial_code: "1268",
75
64
  emoji: "🇦🇬",
76
65
  code: "AG",
77
66
  },
78
67
  {
79
68
  name: "Argentina",
80
- dial_code: "+54",
69
+ dial_code: "54",
81
70
  emoji: "🇦🇷",
82
71
  code: "AR",
83
72
  },
84
73
  {
85
74
  name: "Armenia",
86
- dial_code: "+374",
75
+ dial_code: "374",
87
76
  emoji: "🇦🇲",
88
77
  code: "AM",
89
78
  },
90
79
  {
91
80
  name: "Aruba",
92
- dial_code: "+297",
81
+ dial_code: "297",
93
82
  emoji: "🇦🇼",
94
83
  code: "AW",
95
84
  },
96
85
  {
97
86
  name: "Australia",
98
- dial_code: "+61",
87
+ dial_code: "61",
99
88
  emoji: "🇦🇺",
100
89
  code: "AU",
101
90
  },
102
91
  {
103
92
  name: "Austria",
104
- dial_code: "+43",
93
+ dial_code: "43",
105
94
  emoji: "🇦🇹",
106
95
  code: "AT",
107
96
  },
108
97
  {
109
98
  name: "Azerbaijan",
110
- dial_code: "+994",
99
+ dial_code: "994",
111
100
  emoji: "🇦🇿",
112
101
  code: "AZ",
113
102
  },
114
103
  {
115
104
  name: "Bahamas",
116
- dial_code: "+1242",
105
+ dial_code: "1242",
117
106
  emoji: "🇧🇸",
118
107
  code: "BS",
119
108
  },
120
109
  {
121
110
  name: "Bahrain",
122
- dial_code: "+973",
111
+ dial_code: "973",
123
112
  emoji: "🇧🇭",
124
113
  code: "BH",
125
114
  },
126
115
  {
127
116
  name: "Bangladesh",
128
- dial_code: "+880",
117
+ dial_code: "880",
129
118
  emoji: "🇧🇩",
130
119
  code: "BD",
131
120
  },
132
121
  {
133
122
  name: "Barbados",
134
- dial_code: "+1246",
123
+ dial_code: "1246",
135
124
  emoji: "🇧🇧",
136
125
  code: "BB",
137
126
  },
138
127
  {
139
128
  name: "Belarus",
140
- dial_code: "+375",
129
+ dial_code: "375",
141
130
  emoji: "🇧🇾",
142
131
  code: "BY",
143
132
  },
144
133
  {
145
134
  name: "Belgium",
146
- dial_code: "+32",
135
+ dial_code: "32",
147
136
  emoji: "🇧🇪",
148
137
  code: "BE",
149
138
  },
150
139
  {
151
140
  name: "Belize",
152
- dial_code: "+501",
141
+ dial_code: "501",
153
142
  emoji: "🇧🇿",
154
143
  code: "BZ",
155
144
  },
156
145
  {
157
146
  name: "Benin",
158
- dial_code: "+229",
147
+ dial_code: "229",
159
148
  emoji: "🇧🇯",
160
149
  code: "BJ",
161
150
  },
162
151
  {
163
152
  name: "Bermuda",
164
- dial_code: "+1441",
153
+ dial_code: "1441",
165
154
  emoji: "🇧🇲",
166
155
  code: "BM",
167
156
  },
168
157
  {
169
158
  name: "Bhutan",
170
- dial_code: "+975",
159
+ dial_code: "975",
171
160
  emoji: "🇧🇹",
172
161
  code: "BT",
173
162
  },
174
163
  {
175
164
  name: "Bolivia, Plurinational State of",
176
- dial_code: "+591",
165
+ dial_code: "591",
177
166
  emoji: "🇧🇴",
178
167
  code: "BO",
179
168
  },
180
169
  {
181
170
  name: "Bosnia and Herzegovina",
182
- dial_code: "+387",
171
+ dial_code: "387",
183
172
  emoji: "🇧🇦",
184
173
  code: "BA",
185
174
  },
186
175
  {
187
176
  name: "Botswana",
188
- dial_code: "+267",
177
+ dial_code: "267",
189
178
  emoji: "🇧🇼",
190
179
  code: "BW",
191
180
  },
192
181
  {
193
182
  name: "Brazil",
194
- dial_code: "+55",
183
+ dial_code: "55",
195
184
  emoji: "🇧🇷",
196
185
  code: "BR",
197
186
  },
198
187
  {
199
188
  name: "British Indian Ocean Territory",
200
- dial_code: "+246",
189
+ dial_code: "246",
201
190
  emoji: "🇮🇴",
202
191
  code: "IO",
203
192
  },
204
193
  {
205
194
  name: "Brunei Darussalam",
206
- dial_code: "+673",
195
+ dial_code: "673",
207
196
  emoji: "🇧🇳",
208
197
  code: "BN",
209
198
  },
210
199
  {
211
200
  name: "Bulgaria",
212
- dial_code: "+359",
201
+ dial_code: "359",
213
202
  emoji: "🇧🇬",
214
203
  code: "BG",
215
204
  },
216
205
  {
217
206
  name: "Burkina Faso",
218
- dial_code: "+226",
207
+ dial_code: "226",
219
208
  emoji: "🇧🇫",
220
209
  code: "BF",
221
210
  },
222
211
  {
223
212
  name: "Burundi",
224
- dial_code: "+257",
213
+ dial_code: "257",
225
214
  emoji: "🇧🇮",
226
215
  code: "BI",
227
216
  },
228
217
  {
229
218
  name: "Cambodia",
230
- dial_code: "+855",
219
+ dial_code: "855",
231
220
  emoji: "🇰🇭",
232
221
  code: "KH",
233
222
  },
234
223
  {
235
224
  name: "Cameroon",
236
- dial_code: "+237",
225
+ dial_code: "237",
237
226
  emoji: "🇨🇲",
238
227
  code: "CM",
239
228
  },
240
229
  {
241
230
  name: "Canada",
242
- dial_code: "+1",
231
+ dial_code: "1",
243
232
  emoji: "🇨🇦",
244
233
  code: "CA",
245
234
  },
246
235
  {
247
236
  name: "Cape Verde",
248
- dial_code: "+238",
237
+ dial_code: "238",
249
238
  emoji: "🇨🇻",
250
239
  code: "CV",
251
240
  },
252
241
  {
253
242
  name: "Cayman Islands",
254
- dial_code: "+345",
243
+ dial_code: "345",
255
244
  emoji: "🇰🇾",
256
245
  code: "KY",
257
246
  },
258
247
  {
259
248
  name: "Central African Republic",
260
- dial_code: "+236",
249
+ dial_code: "236",
261
250
  emoji: "🇨🇫",
262
251
  code: "CF",
263
252
  },
264
253
  {
265
254
  name: "Chad",
266
- dial_code: "+235",
255
+ dial_code: "235",
267
256
  emoji: "🇹🇩",
268
257
  code: "TD",
269
258
  },
270
259
  {
271
260
  name: "Chile",
272
- dial_code: "+56",
261
+ dial_code: "56",
273
262
  emoji: "🇨🇱",
274
263
  code: "CL",
275
264
  },
276
265
  {
277
266
  name: "China",
278
- dial_code: "+86",
267
+ dial_code: "86",
279
268
  emoji: "🇨🇳",
280
269
  code: "CN",
281
270
  },
282
271
  {
283
272
  name: "Christmas Island",
284
- dial_code: "+61",
273
+ dial_code: "61",
285
274
  emoji: "🇨🇽",
286
275
  code: "CX",
287
276
  },
288
277
  {
289
278
  name: "Cocos (Keeling) Islands",
290
- dial_code: "+61",
279
+ dial_code: "61",
291
280
  emoji: "🇨🇨",
292
281
  code: "CC",
293
282
  },
294
283
  {
295
284
  name: "Colombia",
296
- dial_code: "+57",
285
+ dial_code: "57",
297
286
  emoji: "🇨🇴",
298
287
  code: "CO",
299
288
  },
300
289
  {
301
290
  name: "Comoros",
302
- dial_code: "+269",
291
+ dial_code: "269",
303
292
  emoji: "🇰🇲",
304
293
  code: "KM",
305
294
  },
306
295
  {
307
296
  name: "Congo",
308
- dial_code: "+242",
297
+ dial_code: "242",
309
298
  emoji: "🇨🇬",
310
299
  code: "CG",
311
300
  },
312
301
  {
313
302
  name: "Congo, The Democratic Republic of the Congo",
314
- dial_code: "+243",
303
+ dial_code: "243",
315
304
  emoji: "🇨🇩",
316
305
  code: "CD",
317
306
  },
318
307
  {
319
308
  name: "Cook Islands",
320
- dial_code: "+682",
309
+ dial_code: "682",
321
310
  emoji: "🇨🇰",
322
311
  code: "CK",
323
312
  },
324
313
  {
325
314
  name: "Costa Rica",
326
- dial_code: "+506",
315
+ dial_code: "506",
327
316
  emoji: "🇨🇷",
328
317
  code: "CR",
329
318
  },
330
319
  {
331
320
  name: "Cote d'Ivoire",
332
- dial_code: "+225",
321
+ dial_code: "225",
333
322
  emoji: "🇨🇮",
334
323
  code: "CI",
335
324
  },
336
325
  {
337
326
  name: "Croatia",
338
- dial_code: "+385",
327
+ dial_code: "385",
339
328
  emoji: "🇭🇷",
340
329
  code: "HR",
341
330
  },
342
331
  {
343
332
  name: "Cuba",
344
- dial_code: "+53",
333
+ dial_code: "53",
345
334
  emoji: "🇨🇺",
346
335
  code: "CU",
347
336
  },
348
337
  {
349
338
  name: "Cyprus",
350
- dial_code: "+357",
339
+ dial_code: "357",
351
340
  emoji: "🇨🇾",
352
341
  code: "CY",
353
342
  },
354
343
  {
355
344
  name: "Czech Republic",
356
- dial_code: "+420",
345
+ dial_code: "420",
357
346
  emoji: "🇨🇿",
358
347
  code: "CZ",
359
348
  },
360
349
  {
361
350
  name: "Denmark",
362
- dial_code: "+45",
351
+ dial_code: "45",
363
352
  emoji: "🇩🇰",
364
353
  code: "DK",
365
354
  },
366
355
  {
367
356
  name: "Djibouti",
368
- dial_code: "+253",
357
+ dial_code: "253",
369
358
  emoji: "🇩🇯",
370
359
  code: "DJ",
371
360
  },
372
361
  {
373
362
  name: "Dominica",
374
- dial_code: "+1767",
363
+ dial_code: "1767",
375
364
  emoji: "🇩🇲",
376
365
  code: "DM",
377
366
  },
378
367
  {
379
368
  name: "Dominican Republic",
380
- dial_code: "+1849",
369
+ dial_code: "1849",
381
370
  emoji: "🇩🇴",
382
371
  code: "DO",
383
372
  },
384
373
  {
385
374
  name: "Ecuador",
386
- dial_code: "+593",
375
+ dial_code: "593",
387
376
  emoji: "🇪🇨",
388
377
  code: "EC",
389
378
  },
390
379
  {
391
380
  name: "Egypt",
392
- dial_code: "+20",
381
+ dial_code: "20",
393
382
  emoji: "🇪🇬",
394
383
  code: "EG",
395
384
  },
396
385
  {
397
386
  name: "El Salvador",
398
- dial_code: "+503",
387
+ dial_code: "503",
399
388
  emoji: "🇸🇻",
400
389
  code: "SV",
401
390
  },
402
391
  {
403
392
  name: "Equatorial Guinea",
404
- dial_code: "+240",
393
+ dial_code: "240",
405
394
  emoji: "🇬🇶",
406
395
  code: "GQ",
407
396
  },
408
397
  {
409
398
  name: "Eritrea",
410
- dial_code: "+291",
399
+ dial_code: "291",
411
400
  emoji: "🇪🇷",
412
401
  code: "ER",
413
402
  },
414
403
  {
415
404
  name: "Estonia",
416
- dial_code: "+372",
405
+ dial_code: "372",
417
406
  emoji: "🇪🇪",
418
407
  code: "EE",
419
408
  },
420
409
  {
421
410
  name: "Ethiopia",
422
- dial_code: "+251",
411
+ dial_code: "251",
423
412
  emoji: "🇪🇹",
424
413
  code: "ET",
425
414
  },
426
415
  {
427
416
  name: "Falkland Islands (Malvinas)",
428
- dial_code: "+500",
417
+ dial_code: "500",
429
418
  emoji: "🇫🇰",
430
419
  code: "FK",
431
420
  },
432
421
  {
433
422
  name: "Faroe Islands",
434
- dial_code: "+298",
423
+ dial_code: "298",
435
424
  emoji: "🇫🇴",
436
425
  code: "FO",
437
426
  },
438
427
  {
439
428
  name: "Fiji",
440
- dial_code: "+679",
429
+ dial_code: "679",
441
430
  emoji: "🇫🇯",
442
431
  code: "FJ",
443
432
  },
444
433
  {
445
434
  name: "Finland",
446
- dial_code: "+358",
435
+ dial_code: "358",
447
436
  emoji: "🇫🇮",
448
437
  code: "FI",
449
438
  },
450
439
  {
451
440
  name: "France",
452
- dial_code: "+33",
441
+ dial_code: "33",
453
442
  emoji: "🇫🇷",
454
443
  code: "FR",
455
444
  },
456
445
  {
457
446
  name: "French Guiana",
458
- dial_code: "+594",
447
+ dial_code: "594",
459
448
  emoji: "🇬🇫",
460
449
  code: "GF",
461
450
  },
462
451
  {
463
452
  name: "French Polynesia",
464
- dial_code: "+689",
453
+ dial_code: "689",
465
454
  emoji: "🇵🇫",
466
455
  code: "PF",
467
456
  },
468
457
  {
469
458
  name: "Gabon",
470
- dial_code: "+241",
459
+ dial_code: "241",
471
460
  emoji: "🇬🇦",
472
461
  code: "GA",
473
462
  },
474
463
  {
475
464
  name: "Gambia",
476
- dial_code: "+220",
465
+ dial_code: "220",
477
466
  emoji: "🇬🇲",
478
467
  code: "GM",
479
468
  },
480
469
  {
481
470
  name: "Georgia",
482
- dial_code: "+995",
471
+ dial_code: "995",
483
472
  emoji: "🇬🇪",
484
473
  code: "GE",
485
474
  },
486
475
  {
487
476
  name: "Germany",
488
- dial_code: "+49",
477
+ dial_code: "49",
489
478
  emoji: "🇩🇪",
490
479
  code: "DE",
491
480
  },
492
481
  {
493
482
  name: "Ghana",
494
- dial_code: "+233",
483
+ dial_code: "233",
495
484
  emoji: "🇬🇭",
496
485
  code: "GH",
497
486
  },
498
487
  {
499
488
  name: "Gibraltar",
500
- dial_code: "+350",
489
+ dial_code: "350",
501
490
  emoji: "🇬🇮",
502
491
  code: "GI",
503
492
  },
504
493
  {
505
494
  name: "Greece",
506
- dial_code: "+30",
495
+ dial_code: "30",
507
496
  emoji: "🇬🇷",
508
497
  code: "GR",
509
498
  },
510
499
  {
511
500
  name: "Greenland",
512
- dial_code: "+299",
501
+ dial_code: "299",
513
502
  emoji: "🇬🇱",
514
503
  code: "GL",
515
504
  },
516
505
  {
517
506
  name: "Grenada",
518
- dial_code: "+1473",
507
+ dial_code: "1473",
519
508
  emoji: "🇬🇩",
520
509
  code: "GD",
521
510
  },
522
511
  {
523
512
  name: "Guadeloupe",
524
- dial_code: "+590",
513
+ dial_code: "590",
525
514
  emoji: "🇬🇵",
526
515
  code: "GP",
527
516
  },
528
517
  {
529
518
  name: "Guam",
530
- dial_code: "+1671",
519
+ dial_code: "1671",
531
520
  emoji: "🇬🇺",
532
521
  code: "GU",
533
522
  },
534
523
  {
535
524
  name: "Guatemala",
536
- dial_code: "+502",
525
+ dial_code: "502",
537
526
  emoji: "🇬🇹",
538
527
  code: "GT",
539
528
  },
540
529
  {
541
530
  name: "Guernsey",
542
- dial_code: "+44",
531
+ dial_code: "44",
543
532
  emoji: "🇬🇬",
544
533
  code: "GG",
545
534
  },
546
535
  {
547
536
  name: "Guinea",
548
- dial_code: "+224",
537
+ dial_code: "224",
549
538
  emoji: "🇬🇳",
550
539
  code: "GN",
551
540
  },
552
541
  {
553
542
  name: "Guinea-Bissau",
554
- dial_code: "+245",
543
+ dial_code: "245",
555
544
  emoji: "🇬🇼",
556
545
  code: "GW",
557
546
  },
558
547
  {
559
548
  name: "Guyana",
560
- dial_code: "+595",
549
+ dial_code: "595",
561
550
  emoji: "🇬🇾",
562
551
  code: "GY",
563
552
  },
564
553
  {
565
554
  name: "Haiti",
566
- dial_code: "+509",
555
+ dial_code: "509",
567
556
  emoji: "🇭🇹",
568
557
  code: "HT",
569
558
  },
570
559
  {
571
560
  name: "Holy See (Vatican City State)",
572
- dial_code: "+379",
561
+ dial_code: "379",
573
562
  emoji: "🇻🇦",
574
563
  code: "VA",
575
564
  },
576
565
  {
577
566
  name: "Honduras",
578
- dial_code: "+504",
567
+ dial_code: "504",
579
568
  emoji: "🇭🇳",
580
569
  code: "HN",
581
570
  },
582
571
  {
583
572
  name: "Hong Kong",
584
- dial_code: "+852",
573
+ dial_code: "852",
585
574
  emoji: "🇭🇰",
586
575
  code: "HK",
587
576
  },
588
577
  {
589
578
  name: "Hungary",
590
- dial_code: "+36",
579
+ dial_code: "36",
591
580
  emoji: "🇭🇺",
592
581
  code: "HU",
593
582
  },
594
583
  {
595
584
  name: "Iceland",
596
- dial_code: "+354",
585
+ dial_code: "354",
597
586
  emoji: "🇮🇸",
598
587
  code: "IS",
599
588
  },
600
589
  {
601
590
  name: "India",
602
- dial_code: "+91",
591
+ dial_code: "91",
603
592
  emoji: "🇮🇳",
604
593
  code: "IN",
605
594
  },
606
595
  {
607
596
  name: "Indonesia",
608
- dial_code: "+62",
597
+ dial_code: "62",
609
598
  emoji: "🇮🇩",
610
599
  code: "ID",
611
600
  },
612
601
  {
613
602
  name: "Iran, Islamic Republic of Persian Gulf",
614
- dial_code: "+98",
603
+ dial_code: "98",
615
604
  emoji: "🇮🇷",
616
605
  code: "IR",
617
606
  },
618
607
  {
619
608
  name: "Iraq",
620
- dial_code: "+964",
609
+ dial_code: "964",
621
610
  emoji: "🇮🇷",
622
611
  code: "IQ",
623
612
  },
624
613
  {
625
614
  name: "Ireland",
626
- dial_code: "+353",
615
+ dial_code: "353",
627
616
  emoji: "🇮🇪",
628
617
  code: "IE",
629
618
  },
630
619
  {
631
620
  name: "Isle of Man",
632
- dial_code: "+44",
621
+ dial_code: "44",
633
622
  emoji: "🇮🇲",
634
623
  code: "IM",
635
624
  },
636
625
  {
637
626
  name: "Israel",
638
- dial_code: "+972",
627
+ dial_code: "972",
639
628
  emoji: "🇮🇱",
640
629
  code: "IL",
641
630
  },
642
631
  {
643
632
  name: "Italy",
644
- dial_code: "+39",
633
+ dial_code: "39",
645
634
  emoji: "🇮🇹",
646
635
  code: "IT",
647
636
  },
648
637
  {
649
638
  name: "Jamaica",
650
- dial_code: "+1876",
639
+ dial_code: "1876",
651
640
  emoji: "🇯🇲",
652
641
  code: "JM",
653
642
  },
654
643
  {
655
644
  name: "Japan",
656
- dial_code: "+81",
645
+ dial_code: "81",
657
646
  emoji: "🇯🇵",
658
647
  code: "JP",
659
648
  },
660
649
  {
661
650
  name: "Jersey",
662
- dial_code: "+44",
651
+ dial_code: "44",
663
652
  emoji: "🇯🇪",
664
653
  code: "JE",
665
654
  },
666
655
  {
667
656
  name: "Jordan",
668
- dial_code: "+962",
657
+ dial_code: "962",
669
658
  emoji: "🇯🇴",
670
659
  code: "JO",
671
660
  },
672
661
  {
673
662
  name: "Kazakhstan",
674
- dial_code: "+77",
663
+ dial_code: "77",
675
664
  emoji: "🇰🇿",
676
665
  code: "KZ",
677
666
  },
678
667
  {
679
668
  name: "Kenya",
680
- dial_code: "+254",
669
+ dial_code: "254",
681
670
  emoji: "🇰🇪",
682
671
  code: "KE",
683
672
  },
684
673
  {
685
674
  name: "Kiribati",
686
- dial_code: "+686",
675
+ dial_code: "686",
687
676
  emoji: "🇰🇮",
688
677
  code: "KI",
689
678
  },
690
679
  {
691
680
  name: "Korea, Democratic People's Republic of Korea",
692
- dial_code: "+850",
681
+ dial_code: "850",
693
682
  emoji: "🇰🇵",
694
683
  code: "KP",
695
684
  },
696
685
  {
697
686
  name: "Korea, Republic of South Korea",
698
- dial_code: "+82",
687
+ dial_code: "82",
699
688
  emoji: "🇰🇷",
700
689
  code: "KR",
701
690
  },
702
691
  {
703
692
  name: "Kuwait",
704
- dial_code: "+965",
693
+ dial_code: "965",
705
694
  emoji: "🇰🇼",
706
695
  code: "KW",
707
696
  },
708
697
  {
709
698
  name: "Kyrgyzstan",
710
- dial_code: "+996",
699
+ dial_code: "996",
711
700
  emoji: "🇰🇬",
712
701
  code: "KG",
713
702
  },
714
703
  {
715
704
  name: "Laos",
716
- dial_code: "+856",
705
+ dial_code: "856",
717
706
  emoji: "🇱🇦",
718
707
  code: "LA",
719
708
  },
720
709
  {
721
710
  name: "Latvia",
722
- dial_code: "+371",
711
+ dial_code: "371",
723
712
  emoji: "🇱🇻",
724
713
  code: "LV",
725
714
  },
726
715
  {
727
716
  name: "Lebanon",
728
- dial_code: "+961",
717
+ dial_code: "961",
729
718
  emoji: "🇱🇧",
730
719
  code: "LB",
731
720
  },
732
721
  {
733
722
  name: "Lesotho",
734
- dial_code: "+266",
723
+ dial_code: "266",
735
724
  emoji: "🇱🇸",
736
725
  code: "LS",
737
726
  },
738
727
  {
739
728
  name: "Liberia",
740
- dial_code: "+231",
729
+ dial_code: "231",
741
730
  emoji: "🇱🇷",
742
731
  code: "LR",
743
732
  },
744
733
  {
745
734
  name: "Libyan Arab Jamahiriya",
746
- dial_code: "+218",
735
+ dial_code: "218",
747
736
  emoji: "🇱🇾",
748
737
  code: "LY",
749
738
  },
750
739
  {
751
740
  name: "Liechtenstein",
752
- dial_code: "+423",
741
+ dial_code: "423",
753
742
  emoji: "🇱🇮",
754
743
  code: "LI",
755
744
  },
756
745
  {
757
746
  name: "Lithuania",
758
- dial_code: "+370",
747
+ dial_code: "370",
759
748
  emoji: "🇱🇹",
760
749
  code: "LT",
761
750
  },
762
751
  {
763
752
  name: "Luxembourg",
764
- dial_code: "+352",
753
+ dial_code: "352",
765
754
  emoji: "🇱🇺",
766
755
  code: "LU",
767
756
  },
768
757
  {
769
758
  name: "Macao",
770
- dial_code: "+853",
759
+ dial_code: "853",
771
760
  emoji: "🇲🇴",
772
761
  code: "MO",
773
762
  },
774
763
  {
775
764
  name: "Macedonia",
776
- dial_code: "+389",
765
+ dial_code: "389",
777
766
  emoji: "🇲🇰",
778
767
  code: "MK",
779
768
  },
780
769
  {
781
770
  name: "Madagascar",
782
- dial_code: "+261",
771
+ dial_code: "261",
783
772
  emoji: "🇲🇬",
784
773
  code: "MG",
785
774
  },
786
775
  {
787
776
  name: "Malawi",
788
- dial_code: "+265",
777
+ dial_code: "265",
789
778
  emoji: "🇲🇼",
790
779
  code: "MW",
791
780
  },
792
781
  {
793
782
  name: "Malaysia",
794
- dial_code: "+60",
783
+ dial_code: "60",
795
784
  emoji: "🇲🇾",
796
785
  code: "MY",
797
786
  },
798
787
  {
799
788
  name: "Maldives",
800
- dial_code: "+960",
789
+ dial_code: "960",
801
790
  emoji: "🇲🇻",
802
791
  code: "MV",
803
792
  },
804
793
  {
805
794
  name: "Mali",
806
- dial_code: "+223",
795
+ dial_code: "223",
807
796
  emoji: "🇲🇱",
808
797
  code: "ML",
809
798
  },
810
799
  {
811
800
  name: "Malta",
812
- dial_code: "+356",
801
+ dial_code: "356",
813
802
  emoji: "🇲🇹",
814
803
  code: "MT",
815
804
  },
816
805
  {
817
806
  name: "Marshall Islands",
818
- dial_code: "+692",
807
+ dial_code: "692",
819
808
  emoji: "🇲🇭",
820
809
  code: "MH",
821
810
  },
822
811
  {
823
812
  name: "Martinique",
824
- dial_code: "+596",
813
+ dial_code: "596",
825
814
  emoji: "🇲🇶",
826
815
  code: "MQ",
827
816
  },
828
817
  {
829
818
  name: "Mauritania",
830
- dial_code: "+222",
819
+ dial_code: "222",
831
820
  emoji: "🇲🇷",
832
821
  code: "MR",
833
822
  },
834
823
  {
835
824
  name: "Mauritius",
836
- dial_code: "+230",
825
+ dial_code: "230",
837
826
  emoji: "🇲🇺",
838
827
  code: "MU",
839
828
  },
840
829
  {
841
830
  name: "Mayotte",
842
- dial_code: "+262",
831
+ dial_code: "262",
843
832
  emoji: "🇾🇹",
844
833
  code: "YT",
845
834
  },
846
835
  {
847
836
  name: "Mexico",
848
- dial_code: "+52",
837
+ dial_code: "52",
849
838
  emoji: "🇲🇽",
850
839
  code: "MX",
851
840
  },
852
841
  {
853
842
  name: "Micronesia, Federated States of Micronesia",
854
- dial_code: "+691",
843
+ dial_code: "691",
855
844
  emoji: "🇫🇲",
856
845
  code: "FM",
857
846
  },
858
847
  {
859
848
  name: "Moldova",
860
- dial_code: "+373",
849
+ dial_code: "373",
861
850
  emoji: "🇲🇩",
862
851
  code: "MD",
863
852
  },
864
853
  {
865
854
  name: "Monaco",
866
- dial_code: "+377",
855
+ dial_code: "377",
867
856
  emoji: "🇲🇨",
868
857
  code: "MC",
869
858
  },
870
859
  {
871
860
  name: "Mongolia",
872
- dial_code: "+976",
861
+ dial_code: "976",
873
862
  emoji: "🇲🇳",
874
863
  code: "MN",
875
864
  },
876
865
  {
877
866
  name: "Montenegro",
878
- dial_code: "+382",
867
+ dial_code: "382",
879
868
  emoji: "🇲🇪",
880
869
  code: "ME",
881
870
  },
882
871
  {
883
872
  name: "Montserrat",
884
- dial_code: "+1664",
873
+ dial_code: "1664",
885
874
  emoji: "🇲🇸",
886
875
  code: "MS",
887
876
  },
888
877
  {
889
878
  name: "Morocco",
890
- dial_code: "+212",
879
+ dial_code: "212",
891
880
  emoji: "🇲🇦",
892
881
  code: "MA",
893
882
  },
894
883
  {
895
884
  name: "Mozambique",
896
- dial_code: "+258",
885
+ dial_code: "258",
897
886
  emoji: "🇲🇿",
898
887
  code: "MZ",
899
888
  },
900
889
  {
901
890
  name: "Myanmar",
902
- dial_code: "+95",
891
+ dial_code: "95",
903
892
  emoji: "🇲🇲",
904
893
  code: "MM",
905
894
  },
906
895
  {
907
896
  name: "Namibia",
908
897
  emoji: "🇳🇦",
909
- dial_code: "+264",
898
+ dial_code: "264",
910
899
  code: "NA",
911
900
  },
912
901
  {
913
902
  name: "Nauru",
914
- dial_code: "+674",
903
+ dial_code: "674",
915
904
  emoji: "🇳🇷",
916
905
  code: "NR",
917
906
  },
918
907
  {
919
908
  name: "Nepal",
920
- dial_code: "+977",
909
+ dial_code: "977",
921
910
  emoji: "🇳🇵",
922
911
  code: "NP",
923
912
  },
924
913
  {
925
914
  name: "Netherlands",
926
- dial_code: "+31",
915
+ dial_code: "31",
927
916
  emoji: "🇳🇱",
928
917
  code: "NL",
929
918
  },
930
919
  {
931
920
  name: "Netherlands Antilles",
932
- dial_code: "+599",
921
+ dial_code: "599",
933
922
  emoji: "🇧🇶",
934
923
  code: "AN",
935
924
  },
936
925
  {
937
926
  name: "New Caledonia",
938
- dial_code: "+687",
927
+ dial_code: "687",
939
928
  emoji: "🇳🇨",
940
929
  code: "NC",
941
930
  },
942
931
  {
943
932
  name: "New Zealand",
944
- dial_code: "+64",
933
+ dial_code: "64",
945
934
  emoji: "🇳🇿",
946
935
  code: "NZ",
947
936
  },
948
937
  {
949
938
  name: "Nicaragua",
950
- dial_code: "+505",
939
+ dial_code: "505",
951
940
  emoji: "🇳🇮",
952
941
  code: "NI",
953
942
  },
954
943
  {
955
944
  name: "Niger",
956
- dial_code: "+227",
945
+ dial_code: "227",
957
946
  emoji: "🇳🇪",
958
947
  code: "NE",
959
948
  },
960
949
  {
961
950
  name: "Nigeria",
962
- dial_code: "+234",
951
+ dial_code: "234",
963
952
  emoji: "🇳🇬",
964
953
  code: "NG",
965
954
  },
966
955
  {
967
956
  name: "Niue",
968
- dial_code: "+683",
957
+ dial_code: "683",
969
958
  emoji: "🇳🇺",
970
959
  code: "NU",
971
960
  },
972
961
  {
973
962
  name: "Norfolk Island",
974
- dial_code: "+672",
963
+ dial_code: "672",
975
964
  emoji: "🇳🇫",
976
965
  code: "NF",
977
966
  },
978
967
  {
979
968
  name: "Northern Mariana Islands",
980
- dial_code: "+1670",
969
+ dial_code: "1670",
981
970
  emoji: "🇲🇵",
982
971
  code: "MP",
983
972
  },
984
973
  {
985
974
  name: "Norway",
986
- dial_code: "+47",
975
+ dial_code: "47",
987
976
  emoji: "🇳🇴",
988
977
  code: "NO",
989
978
  },
990
979
  {
991
980
  name: "Oman",
992
- dial_code: "+968",
981
+ dial_code: "968",
993
982
  emoji: "🇴🇲",
994
983
  code: "OM",
995
984
  },
996
985
  {
997
986
  name: "Pakistan",
998
- dial_code: "+92",
987
+ dial_code: "92",
999
988
  emoji: "🇵🇰",
1000
989
  code: "PK",
1001
990
  },
1002
991
  {
1003
992
  name: "Palau",
1004
- dial_code: "+680",
993
+ dial_code: "680",
1005
994
  emoji: "🇵🇼",
1006
995
  code: "PW",
1007
996
  },
1008
997
  {
1009
998
  name: "Palestinian Territory, Occupied",
1010
- dial_code: "+970",
999
+ dial_code: "970",
1011
1000
  emoji: "🇵🇸",
1012
1001
  code: "PS",
1013
1002
  },
1014
1003
  {
1015
1004
  name: "Panama",
1016
- dial_code: "+507",
1005
+ dial_code: "507",
1017
1006
  emoji: "🇵🇦",
1018
1007
  code: "PA",
1019
1008
  },
1020
1009
  {
1021
1010
  name: "Papua New Guinea",
1022
- dial_code: "+675",
1011
+ dial_code: "675",
1023
1012
  emoji: "🇵🇬",
1024
1013
  code: "PG",
1025
1014
  },
1026
1015
  {
1027
1016
  name: "Paraguay",
1028
- dial_code: "+595",
1017
+ dial_code: "595",
1029
1018
  emoji: "🇵🇾",
1030
1019
  code: "PY",
1031
1020
  },
1032
1021
  {
1033
1022
  name: "Peru",
1034
- dial_code: "+51",
1023
+ dial_code: "51",
1035
1024
  emoji: "🇵🇪",
1036
1025
  code: "PE",
1037
1026
  },
1038
1027
  {
1039
1028
  name: "Philippines",
1040
- dial_code: "+63",
1029
+ dial_code: "63",
1041
1030
  emoji: "🇵🇭",
1042
1031
  code: "PH",
1043
1032
  },
1044
1033
  {
1045
1034
  name: "Pitcairn",
1046
- dial_code: "+872",
1035
+ dial_code: "872",
1047
1036
  emoji: "🇵🇳",
1048
1037
  code: "PN",
1049
1038
  },
1050
1039
  {
1051
1040
  name: "Poland",
1052
- dial_code: "+48",
1041
+ dial_code: "48",
1053
1042
  emoji: "🇵🇱",
1054
1043
  code: "PL",
1055
1044
  },
1056
1045
  {
1057
1046
  name: "Portugal",
1058
- dial_code: "+351",
1047
+ dial_code: "351",
1059
1048
  emoji: "🇵🇹",
1060
1049
  code: "PT",
1061
1050
  },
1062
1051
  {
1063
1052
  name: "Puerto Rico",
1064
- dial_code: "+1939",
1053
+ dial_code: "1939",
1065
1054
  emoji: "🇵🇷",
1066
1055
  code: "PR",
1067
1056
  },
1068
1057
  {
1069
1058
  name: "Qatar",
1070
- dial_code: "+974",
1059
+ dial_code: "974",
1071
1060
  emoji: "🇶🇦",
1072
1061
  code: "QA",
1073
1062
  },
1074
1063
  {
1075
1064
  name: "Romania",
1076
- dial_code: "+40",
1065
+ dial_code: "40",
1077
1066
  emoji: "🇷🇴",
1078
1067
  code: "RO",
1079
1068
  },
1080
1069
  {
1081
1070
  name: "Russia",
1082
- dial_code: "+7",
1071
+ dial_code: "7",
1083
1072
  emoji: "🇷🇺",
1084
1073
  code: "RU",
1085
1074
  },
1086
1075
  {
1087
1076
  name: "Rwanda",
1088
- dial_code: "+250",
1077
+ dial_code: "250",
1089
1078
  emoji: "🇷🇼",
1090
1079
  code: "RW",
1091
1080
  },
1092
1081
  {
1093
1082
  name: "Reunion",
1094
- dial_code: "+262",
1083
+ dial_code: "262",
1095
1084
  emoji: "🇷🇪",
1096
1085
  code: "RE",
1097
1086
  },
1098
1087
  {
1099
1088
  name: "Saint Barthelemy",
1100
- dial_code: "+590",
1089
+ dial_code: "590",
1101
1090
  emoji: "🇧🇱",
1102
1091
  code: "BL",
1103
1092
  },
1104
1093
  {
1105
1094
  name: "Saint Helena, Ascension and Tristan Da Cunha",
1106
- dial_code: "+290",
1095
+ dial_code: "290",
1107
1096
  emoji: "🇸🇭",
1108
1097
  code: "SH",
1109
1098
  },
1110
1099
  {
1111
1100
  name: "Saint Kitts and Nevis",
1112
- dial_code: "+1869",
1101
+ dial_code: "1869",
1113
1102
  emoji: "🇰🇳",
1114
1103
  code: "KN",
1115
1104
  },
1116
1105
  {
1117
1106
  name: "Saint Lucia",
1118
- dial_code: "+1758",
1107
+ dial_code: "1758",
1119
1108
  emoji: "🇱🇨",
1120
1109
  code: "LC",
1121
1110
  },
1122
1111
  {
1123
1112
  name: "Saint Martin",
1124
- dial_code: "+590",
1113
+ dial_code: "590",
1125
1114
  emoji: "🇲🇫",
1126
1115
  code: "MF",
1127
1116
  },
1128
1117
  {
1129
1118
  name: "Saint Pierre and Miquelon",
1130
- dial_code: "+508",
1119
+ dial_code: "508",
1131
1120
  emoji: "🇵🇲",
1132
1121
  code: "PM",
1133
1122
  },
1134
1123
  {
1135
1124
  name: "Saint Vincent and the Grenadines",
1136
- dial_code: "+1784",
1125
+ dial_code: "1784",
1137
1126
  emoji: "🇻🇨",
1138
1127
  code: "VC",
1139
1128
  },
1140
1129
  {
1141
1130
  name: "Samoa",
1142
- dial_code: "+685",
1131
+ dial_code: "685",
1143
1132
  emoji: "🇼🇸",
1144
1133
  code: "WS",
1145
1134
  },
1146
1135
  {
1147
1136
  name: "San Marino",
1148
- dial_code: "+378",
1137
+ dial_code: "378",
1149
1138
  emoji: "🇸🇲",
1150
1139
  code: "SM",
1151
1140
  },
1152
1141
  {
1153
1142
  name: "Sao Tome and Principe",
1154
- dial_code: "+239",
1143
+ dial_code: "239",
1155
1144
  emoji: "🇸🇹",
1156
1145
  code: "ST",
1157
1146
  },
1158
1147
  {
1159
1148
  name: "Saudi Arabia",
1160
- dial_code: "+966",
1149
+ dial_code: "966",
1161
1150
  emoji: "🇸🇦",
1162
1151
  code: "SA",
1163
1152
  },
1164
1153
  {
1165
1154
  name: "Senegal",
1166
- dial_code: "+221",
1155
+ dial_code: "221",
1167
1156
  emoji: "🇸🇳",
1168
1157
  code: "SN",
1169
1158
  },
1170
1159
  {
1171
1160
  name: "Serbia",
1172
- dial_code: "+381",
1161
+ dial_code: "381",
1173
1162
  emoji: "🇷🇸",
1174
1163
  code: "RS",
1175
1164
  },
1176
1165
  {
1177
1166
  name: "Seychelles",
1178
- dial_code: "+248",
1167
+ dial_code: "248",
1179
1168
  emoji: "🇸🇨",
1180
1169
  code: "SC",
1181
1170
  },
1182
1171
  {
1183
1172
  name: "Sierra Leone",
1184
- dial_code: "+232",
1173
+ dial_code: "232",
1185
1174
  emoji: "🇸🇱",
1186
1175
  code: "SL",
1187
1176
  },
1188
1177
  {
1189
1178
  name: "Singapore",
1190
- dial_code: "+65",
1179
+ dial_code: "65",
1191
1180
  emoji: "🇸🇬",
1192
1181
  code: "SG",
1193
1182
  },
1194
1183
  {
1195
1184
  name: "Slovakia",
1196
- dial_code: "+421",
1185
+ dial_code: "421",
1197
1186
  emoji: "🇸🇰",
1198
1187
  code: "SK",
1199
1188
  },
1200
1189
  {
1201
1190
  name: "Slovenia",
1202
- dial_code: "+386",
1191
+ dial_code: "386",
1203
1192
  emoji: "🇸🇮",
1204
1193
  code: "SI",
1205
1194
  },
1206
1195
  {
1207
1196
  name: "Solomon Islands",
1208
- dial_code: "+677",
1197
+ dial_code: "677",
1209
1198
  emoji: "🇸🇧",
1210
1199
  code: "SB",
1211
1200
  },
1212
1201
  {
1213
1202
  name: "Somalia",
1214
- dial_code: "+252",
1203
+ dial_code: "252",
1215
1204
  emoji: "🇸🇴",
1216
1205
  code: "SO",
1217
1206
  },
1218
1207
  {
1219
1208
  name: "South Africa",
1220
- dial_code: "+27",
1209
+ dial_code: "27",
1221
1210
  emoji: "🇿🇦",
1222
1211
  code: "ZA",
1223
1212
  },
1224
1213
  {
1225
1214
  name: "South Sudan",
1226
- dial_code: "+211",
1215
+ dial_code: "211",
1227
1216
  emoji: "🇸🇸",
1228
1217
  code: "SS",
1229
1218
  },
1230
1219
  {
1231
1220
  name: "South Georgia and the South Sandwich Islands",
1232
- dial_code: "+500",
1221
+ dial_code: "500",
1233
1222
  emoji: "🇬🇸",
1234
1223
  code: "GS",
1235
1224
  },
1236
1225
  {
1237
1226
  name: "Spain",
1238
- dial_code: "+34",
1227
+ dial_code: "34",
1239
1228
  emoji: "🇪🇸",
1240
1229
  code: "ES",
1241
1230
  },
1242
1231
  {
1243
1232
  name: "Sri Lanka",
1244
- dial_code: "+94",
1233
+ dial_code: "94",
1245
1234
  emoji: "🇱🇰",
1246
1235
  code: "LK",
1247
1236
  },
1248
1237
  {
1249
1238
  name: "Sudan",
1250
- dial_code: "+249",
1239
+ dial_code: "249",
1251
1240
  emoji: "🇸🇩",
1252
1241
  code: "SD",
1253
1242
  },
1254
1243
  {
1255
1244
  name: "Suriname",
1256
- dial_code: "+597",
1245
+ dial_code: "597",
1257
1246
  emoji: "🇸🇷",
1258
1247
  code: "SR",
1259
1248
  },
1260
1249
  {
1261
1250
  name: "Svalbard and Jan Mayen",
1262
- dial_code: "+47",
1251
+ dial_code: "47",
1263
1252
  emoji: "🇸🇯",
1264
1253
  code: "SJ",
1265
1254
  },
1266
1255
  {
1267
1256
  name: "Swaziland",
1268
- dial_code: "+268",
1257
+ dial_code: "268",
1269
1258
  emoji: "🇸🇿",
1270
1259
  code: "SZ",
1271
1260
  },
1272
1261
  {
1273
1262
  name: "Sweden",
1274
- dial_code: "+46",
1263
+ dial_code: "46",
1275
1264
  emoji: "🇸🇪",
1276
1265
  code: "SE",
1277
1266
  },
1278
1267
  {
1279
1268
  name: "Switzerland",
1280
- dial_code: "+41",
1269
+ dial_code: "41",
1281
1270
  emoji: "🇨🇭",
1282
1271
  code: "CH",
1283
1272
  },
1284
1273
  {
1285
1274
  name: "Syrian Arab Republic",
1286
- dial_code: "+963",
1275
+ dial_code: "963",
1287
1276
  emoji: "🇸🇾",
1288
1277
  code: "SY",
1289
1278
  },
1290
1279
  {
1291
1280
  name: "Taiwan",
1292
- dial_code: "+886",
1281
+ dial_code: "886",
1293
1282
  emoji: "🇹🇼",
1294
1283
  code: "TW",
1295
1284
  },
1296
1285
  {
1297
1286
  name: "Tajikistan",
1298
- dial_code: "+992",
1287
+ dial_code: "992",
1299
1288
  emoji: "🇹🇯",
1300
1289
  code: "TJ",
1301
1290
  },
1302
1291
  {
1303
1292
  name: "Tanzania, United Republic of Tanzania",
1304
- dial_code: "+255",
1293
+ dial_code: "255",
1305
1294
  emoji: "🇹🇿",
1306
1295
  code: "TZ",
1307
1296
  },
1308
1297
  {
1309
1298
  name: "Thailand",
1310
- dial_code: "+66",
1299
+ dial_code: "66",
1311
1300
  emoji: "🇹🇭",
1312
1301
  code: "TH",
1313
1302
  },
1314
1303
  {
1315
1304
  name: "Timor-Leste",
1316
- dial_code: "+670",
1305
+ dial_code: "670",
1317
1306
  emoji: "🇹🇱",
1318
1307
  code: "TL",
1319
1308
  },
1320
1309
  {
1321
1310
  name: "Togo",
1322
- dial_code: "+228",
1311
+ dial_code: "228",
1323
1312
  emoji: "🇹🇬",
1324
1313
  code: "TG",
1325
1314
  },
1326
1315
  {
1327
1316
  name: "Tokelau",
1328
- dial_code: "+690",
1317
+ dial_code: "690",
1329
1318
  emoji: "🇹🇰",
1330
1319
  code: "TK",
1331
1320
  },
1332
1321
  {
1333
1322
  name: "Tonga",
1334
- dial_code: "+676",
1323
+ dial_code: "676",
1335
1324
  emoji: "🇹🇴",
1336
1325
  code: "TO",
1337
1326
  },
1338
1327
  {
1339
1328
  name: "Trinidad and Tobago",
1340
- dial_code: "+1868",
1329
+ dial_code: "1868",
1341
1330
  emoji: "🇹🇹",
1342
1331
  code: "TT",
1343
1332
  },
1344
1333
  {
1345
1334
  name: "Tunisia",
1346
- dial_code: "+216",
1335
+ dial_code: "216",
1347
1336
  emoji: "🇹🇳",
1348
1337
  code: "TN",
1349
1338
  },
1350
1339
  {
1351
1340
  name: "Turkey",
1352
- dial_code: "+90",
1341
+ dial_code: "90",
1353
1342
  emoji: "🇹🇷",
1354
1343
  code: "TR",
1355
1344
  },
1356
1345
  {
1357
1346
  name: "Turkmenistan",
1358
- dial_code: "+993",
1347
+ dial_code: "993",
1359
1348
  emoji: "🇹🇲",
1360
1349
  code: "TM",
1361
1350
  },
1362
1351
  {
1363
1352
  name: "Turks and Caicos Islands",
1364
- dial_code: "+1649",
1353
+ dial_code: "1649",
1365
1354
  emoji: "🇹🇨",
1366
1355
  code: "TC",
1367
1356
  },
1368
1357
  {
1369
1358
  name: "Tuvalu",
1370
- dial_code: "+688",
1359
+ dial_code: "688",
1371
1360
  emoji: "🇹🇻",
1372
1361
  code: "TV",
1373
1362
  },
1374
1363
  {
1375
1364
  name: "Uganda",
1376
- dial_code: "+256",
1365
+ dial_code: "256",
1377
1366
  emoji: "🇺🇬",
1378
1367
  code: "UG",
1379
1368
  },
1380
1369
  {
1381
1370
  name: "Ukraine",
1382
- dial_code: "+380",
1371
+ dial_code: "380",
1383
1372
  emoji: "🇺🇦",
1384
1373
  code: "UA",
1385
1374
  },
1386
1375
  {
1387
1376
  name: "United Arab Emirates",
1388
- dial_code: "+971",
1377
+ dial_code: "971",
1389
1378
  emoji: "🇦🇪",
1390
1379
  code: "AE",
1391
1380
  },
1392
1381
  {
1393
1382
  name: "United Kingdom",
1394
- dial_code: "+44",
1383
+ dial_code: "44",
1395
1384
  emoji: "🇬🇧",
1396
1385
  code: "GB",
1397
1386
  },
1398
1387
  {
1399
1388
  name: "United States",
1400
- dial_code: "+1",
1389
+ dial_code: "1",
1401
1390
  emoji: "🇺🇸",
1402
1391
  code: "US",
1403
1392
  },
1404
1393
  {
1405
1394
  name: "Uruguay",
1406
- dial_code: "+598",
1395
+ dial_code: "598",
1407
1396
  emoji: "🇺🇾",
1408
1397
  code: "UY",
1409
1398
  },
1410
1399
  {
1411
1400
  name: "Uzbekistan",
1412
- dial_code: "+998",
1401
+ dial_code: "998",
1413
1402
  emoji: "🇺🇿",
1414
1403
  code: "UZ",
1415
1404
  },
1416
1405
  {
1417
1406
  name: "Vanuatu",
1418
- dial_code: "+678",
1407
+ dial_code: "678",
1419
1408
  emoji: "🇻🇺",
1420
1409
  code: "VU",
1421
1410
  },
1422
1411
  {
1423
1412
  name: "Venezuela, Bolivarian Republic of Venezuela",
1424
- dial_code: "+58",
1413
+ dial_code: "58",
1425
1414
  emoji: "🇻🇪",
1426
1415
  code: "VE",
1427
1416
  },
1428
1417
  {
1429
1418
  name: "Vietnam",
1430
- dial_code: "+84",
1419
+ dial_code: "84",
1431
1420
  emoji: "🇻🇳",
1432
1421
  code: "VN",
1433
1422
  },
1434
1423
  {
1435
1424
  name: "Virgin Islands, British",
1436
- dial_code: "+1284",
1425
+ dial_code: "1284",
1437
1426
  emoji: "🇻🇬",
1438
1427
  code: "VG",
1439
1428
  },
1440
1429
  {
1441
1430
  name: "Virgin Islands, U.S.",
1442
- dial_code: "+1340",
1431
+ dial_code: "1340",
1443
1432
  emoji: "🇻🇮",
1444
1433
  code: "VI",
1445
1434
  },
1446
1435
  {
1447
1436
  name: "Wallis and Futuna",
1448
- dial_code: "+681",
1437
+ dial_code: "681",
1449
1438
  emoji: "🇼🇫",
1450
1439
  code: "WF",
1451
1440
  },
1452
1441
  {
1453
1442
  name: "Yemen",
1454
- dial_code: "+967",
1443
+ dial_code: "967",
1455
1444
  emoji: "🇾🇪",
1456
1445
  code: "YE",
1457
1446
  },
1458
1447
  {
1459
1448
  name: "Zambia",
1460
- dial_code: "+260",
1449
+ dial_code: "260",
1461
1450
  emoji: "🇿🇲",
1462
1451
  code: "ZM",
1463
1452
  },
1464
1453
  {
1465
1454
  name: "Zimbabwe",
1466
- dial_code: "+263",
1455
+ dial_code: "263",
1467
1456
  emoji: "🇿🇼",
1468
1457
  code: "ZW",
1469
1458
  },
1470
1459
  ];
1471
1460
 
1461
+ export interface PhoneNumberProps
1462
+ extends React.InputHTMLAttributes<HTMLInputElement> {
1463
+ label?: string;
1464
+ description?: string;
1465
+ options?: {
1466
+ variant?: "default" | "split";
1467
+ width?: "full" | "fit";
1468
+ height?: "short" | "medium" | "high";
1469
+ };
1470
+ }
1471
+
1472
1472
  export const PhoneNumber: React.FC<PhoneNumberProps> = ({
1473
1473
  options,
1474
1474
  label,
1475
1475
  description,
1476
- getPhoneNumber,
1477
1476
  ...rest
1478
1477
  }) => {
1479
- const triggerRef = useRef<HTMLDivElement>(null);
1480
- const dropdownRef = useRef<HTMLDivElement>(null);
1481
- const [tempValue, setTempValue] = useState(["🇮🇩 ID", ""]);
1478
+ const inputRef = useRef<HTMLDivElement>(null);
1479
+ const dropdownRef = useRef<HTMLButtonElement>(null);
1480
+ const [tempValue, setTempValue] = useState(["62", ""]);
1482
1481
  const [openDropdown, setOpenDropdown] = useState(false);
1483
- const [position, setPosition] = useState<{
1484
- top: number;
1485
- left: number;
1486
- } | null>(null);
1487
1482
  const [dropdownWidth, setDropdownWidth] = useState<number>(0);
1488
1483
  const width = options?.width === "fit" ? "w-fit" : "w-full";
1489
1484
  const height =
@@ -1494,192 +1489,161 @@ export const PhoneNumber: React.FC<PhoneNumberProps> = ({
1494
1489
  : "py-1.5";
1495
1490
 
1496
1491
  useEffect(() => {
1497
- const handleClickOutside = (e: MouseEvent) => {
1498
- if (
1499
- dropdownRef.current &&
1500
- !dropdownRef.current.contains(e.target as Node) &&
1501
- !triggerRef.current?.contains(e.target as Node)
1502
- ) {
1492
+ document.addEventListener("mousedown", (e) => {
1493
+ if (e.target instanceof HTMLElement) {
1503
1494
  setOpenDropdown(false);
1504
1495
  }
1505
- };
1506
-
1507
- document.addEventListener("mousedown", handleClickOutside);
1508
- return () => {
1509
- document.removeEventListener("mousedown", handleClickOutside);
1510
- };
1496
+ });
1511
1497
  }, []);
1512
1498
 
1513
1499
  useEffect(() => {
1514
- if (triggerRef.current) {
1515
- const rect = triggerRef.current.getBoundingClientRect();
1516
- const dropdownHeight = dropdownRef.current?.offsetHeight || 0;
1517
- const windowHeight = window.innerHeight;
1518
-
1519
- setPosition({
1520
- top: rect.bottom + window.scrollY + 10,
1521
- left: rect.left + window.scrollX,
1522
- });
1523
-
1524
- setDropdownWidth(rect.width);
1525
-
1526
- if (rect.bottom + dropdownHeight > windowHeight) {
1527
- setPosition((prev) =>
1528
- prev
1529
- ? { ...prev, top: rect.top + window.scrollY - dropdownHeight - 10 }
1530
- : null
1531
- );
1500
+ if (options?.variant !== "split") {
1501
+ if (rest.value) {
1502
+ setTempValue((prev) => [prev[0], rest.value as string]);
1503
+ return;
1504
+ } else if (rest.defaultValue) {
1505
+ setTempValue((prev) => [prev[0], rest.defaultValue as string]);
1506
+ return;
1532
1507
  }
1533
1508
  }
1534
-
1535
- if (openDropdown) {
1536
- document.getElementById("body")!.style.overflow = "hidden";
1537
- } else {
1538
- document.getElementById("body")!.style.overflow = "auto";
1539
- }
1540
- }, [openDropdown]);
1541
-
1542
- useEffect(() => {
1543
- if (rest.value) {
1544
- setTempValue((prev) => [prev[0], rest.value as string]);
1545
- return;
1546
- } else if (rest.defaultValue) {
1547
- setTempValue((prev) => [prev[0], rest.defaultValue as string]);
1548
- return;
1549
- }
1550
- }, [rest.value, rest.defaultValue]);
1509
+ }, [options?.variant, rest.value, rest.defaultValue]);
1551
1510
 
1552
1511
  useEffect(() => {
1553
1512
  rest.onChange &&
1554
1513
  rest.onChange({
1555
1514
  target: {
1556
- value: `${tempValue[1]}`,
1515
+ value:
1516
+ options?.variant === "split" ? tempValue.join("") : tempValue[1],
1557
1517
  } as HTMLInputElement,
1558
1518
  } as React.ChangeEvent<HTMLInputElement>);
1559
1519
  }, [tempValue]);
1560
1520
 
1561
- useEffect(() => {
1562
- getPhoneNumber &&
1563
- getPhoneNumber(
1564
- `${
1565
- countryCodes.find((item) => item.code === tempValue[0].split(" ")[1])
1566
- ?.dial_code || ""
1567
- }${tempValue[1]}`
1568
- );
1569
- }, [tempValue]);
1570
-
1571
1521
  return (
1572
- <label className={`grid gap-2 ${width}`}>
1573
- {(label || description) && (
1574
- <div className="flex items-center">
1575
- {label && (
1576
- <span
1577
- className={`text-sm select-none ${
1578
- rest.required &&
1579
- "after:content-['*'] after:ml-1 after:text-danger"
1580
- }`}
1581
- >
1582
- {label}
1583
- </span>
1584
- )}
1585
- {description && (
1586
- <span
1587
- title={description}
1588
- className="ms-auto text-sm text-primary-dark"
1589
- >
1590
- <Icon icon="octicon:info-16" />
1591
- </span>
1592
- )}
1593
- </div>
1594
- )}
1595
- <div className="flex flex-row-reverse gap-4">
1596
- <div className="relative flex-1 flex items-center">
1597
- <div className="absolute left-0 flex justify-center w-14 border-r">
1598
- <span className="text-disabled">
1599
- {countryCodes.find(
1600
- (item) => item.code === tempValue[0].split(" ")[1]
1601
- )?.dial_code || ""}
1602
- </span>
1522
+ <div className="flex flex-row-reverse items-end">
1523
+ <label className={`grid gap-2 ${width}`}>
1524
+ {(label || description) && (
1525
+ <div className="flex items-center">
1526
+ {label && (
1527
+ <span
1528
+ className={`text-sm select-none ${
1529
+ rest.required &&
1530
+ "after:content-['*'] after:ml-1 after:text-danger"
1531
+ }`}
1532
+ >
1533
+ {label}
1534
+ </span>
1535
+ )}
1536
+ {description && (
1537
+ <span
1538
+ title={description}
1539
+ className="ms-auto text-sm text-primary-dark"
1540
+ >
1541
+ <Icon icon="octicon:info-16" />
1542
+ </span>
1543
+ )}
1603
1544
  </div>
1604
- <input
1605
- type="number"
1606
- className={`w-full ps-16 pe-4 border-default border rounded-md bg-secondary-bg [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none placeholder:duration-300 placeholder:translate-x-0 focus:placeholder:translate-x-1 placeholder:text-silent focus:outline-none focus:ring-1 focus:ring-primary focus:shadow focus:shadow-primary focus:border-primary-dark disabled:bg-secondary-light disabled:text-disabled ${height}`}
1607
- value={tempValue[1]}
1608
- required={rest.required}
1609
- disabled={rest.disabled}
1610
- onChange={(e) => {
1611
- setTempValue((prev) => [prev[0], e.target.value]);
1612
- }}
1613
- />
1614
- </div>
1615
- <div className="flex flex-col">
1616
- <div className="relative" ref={triggerRef}>
1545
+ )}
1546
+ <div ref={inputRef} className="flex flex-row-reverse gap-4">
1547
+ <div className="relative flex-1 flex items-center">
1548
+ {options?.variant === "split" && (
1549
+ <div className="absolute left-0 flex justify-center w-14 border-r">
1550
+ <span className="text-disabled">{`+${tempValue[0]}`}</span>
1551
+ </div>
1552
+ )}
1617
1553
  <input
1618
- type="text"
1619
- className={`max-w-[92px] w-min px-4 border-default border rounded-md bg-secondary-bg placeholder:duration-300 placeholder:translate-x-0 focus:placeholder:translate-x-1 placeholder:text-silent focus:outline-none focus:ring-1 focus:ring-primary focus:shadow focus:shadow-primary focus:border-primary-dark disabled:bg-secondary-light disabled:text-disabled disabled:cursor-default ${height}`}
1554
+ type="number"
1555
+ className={`w-full border-default border rounded-md bg-secondary-bg [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none placeholder:duration-300 placeholder:translate-x-0 focus:placeholder:translate-x-1 placeholder:text-silent focus:outline-none focus:ring-1 focus:ring-primary focus:shadow focus:shadow-primary focus:border-primary-dark disabled:bg-secondary-light disabled:text-disabled ${height} ${
1556
+ options?.variant === "split" ? "ps-16 pe-4" : "px-4"
1557
+ }`}
1558
+ placeholder={rest.placeholder}
1559
+ value={tempValue[1]}
1560
+ required={rest.required}
1620
1561
  disabled={rest.disabled}
1621
- value={tempValue[0]}
1622
1562
  onChange={(e) => {
1623
- setTempValue((prev) => [e.target.value, prev[1]]);
1624
- }}
1625
- onClick={() => {
1626
- setOpenDropdown(true);
1627
- setTempValue((prev) => ["", prev[1]]);
1563
+ setTempValue((prev) => [prev[0], e.target.value]);
1628
1564
  }}
1629
1565
  />
1630
- {openDropdown &&
1631
- position &&
1632
- createPortal(
1633
- <div
1634
- ref={dropdownRef}
1635
- className="absolute max-h-40 p-1 z-50 pointer-events-auto bg-secondary-bg shadow border rounded-md overflow-auto"
1636
- style={{
1637
- top: position.top,
1638
- left: position.left,
1639
- width: dropdownWidth,
1640
- }}
1641
- >
1642
- {countryCodes.filter((item) =>
1643
- item.code.toLowerCase().includes(tempValue[0].toLowerCase())
1644
- ).length === 0 ? (
1645
- <div className="flex justify-center">
1646
- <span className="px-4 py-1">No data found</span>
1647
- </div>
1648
- ) : (
1649
- countryCodes
1650
- .filter((item) =>
1651
- item.code
1652
- .toLowerCase()
1653
- .includes(tempValue[0].toLowerCase())
1654
- )
1655
- .map((item, index) => (
1656
- <button
1657
- key={index}
1658
- type="button"
1659
- className="w-full my-0.5 px-4 py-2 rounded-md text-sm text-left text-default hover:bg-secondary-light disabled:bg-primary-transparent"
1660
- disabled={
1661
- (countryCodes.find(
1662
- (item) => item.code === rest.value
1663
- )?.code || countryCodes) === item?.code
1664
- }
1665
- onMouseDown={() => {
1666
- setTempValue((prev) => [
1667
- `${item.emoji} ${item.code}`,
1668
- prev[1],
1669
- ]);
1670
- setOpenDropdown(false);
1671
- }}
1672
- >
1673
- {`${item.emoji} ${item.code}`}
1674
- </button>
1675
- ))
1676
- )}
1677
- </div>,
1678
- document.body
1679
- )}
1680
1566
  </div>
1567
+ {options?.variant === "split" && (
1568
+ <div className="relative flex items-center cursor-pointer">
1569
+ <input
1570
+ type="text"
1571
+ className={`max-w-24 w-min ps-4 pe-4 border-default border rounded-md bg-secondary-bg placeholder:duration-300 placeholder:translate-x-0 focus:placeholder:translate-x-1 placeholder:text-silent focus:outline-none focus:ring-1 focus:ring-primary focus:shadow focus:shadow-primary focus:border-primary-dark disabled:bg-secondary-light disabled:text-disabled disabled:cursor-default ${height} ${
1572
+ openDropdown
1573
+ ? "placeholder:translate-x-1 outline-none ring-1 ring-primary shadow shadow-primary border-primary-dark"
1574
+ : "border-default placeholder:translate-x-0"
1575
+ }`}
1576
+ disabled={rest.disabled}
1577
+ value={`${
1578
+ countryPhoneCode.find(
1579
+ (item) => item.dial_code === tempValue[0]
1580
+ )?.emoji
1581
+ } ${
1582
+ countryPhoneCode.find(
1583
+ (item) => item.dial_code === tempValue[0]
1584
+ )?.code
1585
+ }`}
1586
+ onClick={(e) => {
1587
+ e.preventDefault();
1588
+ setOpenDropdown(true);
1589
+ dropdownRef.current?.click();
1590
+ setDropdownWidth(
1591
+ inputRef?.current?.getBoundingClientRect()?.width || 0
1592
+ );
1593
+ }}
1594
+ />
1595
+ <div className="absolute right-4 text-xl text-disabled pointer-events-none">
1596
+ <Icon
1597
+ icon={`gravity-ui:chevron-${openDropdown ? "up" : "down"}`}
1598
+ />
1599
+ </div>
1600
+ </div>
1601
+ )}
1681
1602
  </div>
1603
+ </label>
1604
+ <div className="w-0 overflow-hidden">
1605
+ <Dropdown
1606
+ placement="bottom-start"
1607
+ trigger={
1608
+ <button
1609
+ type="button"
1610
+ ref={dropdownRef}
1611
+ className={`w-0 my-0.5 ${height}`}
1612
+ >
1613
+ 1
1614
+ </button>
1615
+ }
1616
+ >
1617
+ <div
1618
+ style={{
1619
+ width: dropdownWidth - 11,
1620
+ }}
1621
+ >
1622
+ {countryPhoneCode.length === 0 ? (
1623
+ <div className="flex justify-center">
1624
+ <span className="px-4 py-1">No data found</span>
1625
+ </div>
1626
+ ) : (
1627
+ countryPhoneCode.map((item, index) => {
1628
+ return (
1629
+ <button
1630
+ key={index}
1631
+ type="button"
1632
+ className="flex justify-between items-center min-w-40 w-full my-0.5 px-4 py-2 rounded-md text-sm text-left hover:bg-secondary-light disabled:bg-primary-transparent disabled:text-primary"
1633
+ disabled={tempValue[0] === item.dial_code}
1634
+ onClick={() => {
1635
+ setTempValue((prev) => [item.dial_code, prev[1]]);
1636
+ setOpenDropdown(false);
1637
+ }}
1638
+ >
1639
+ <span>{`${item.emoji} ${item.name}`}</span>
1640
+ </button>
1641
+ );
1642
+ })
1643
+ )}
1644
+ </div>
1645
+ </Dropdown>
1682
1646
  </div>
1683
- </label>
1647
+ </div>
1684
1648
  );
1685
1649
  };