next-helios-fe 1.0.0

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