@idds/react 1.4.16 → 1.4.18

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.
package/dist/index.es.js CHANGED
@@ -820,14 +820,6 @@ const createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
820
820
  Component.displayName = `${iconNamePascal}`;
821
821
  return Component;
822
822
  };
823
- /**
824
- * @license @tabler/icons-react v3.35.0 - MIT
825
- *
826
- * This source code is licensed under the MIT license.
827
- * See the LICENSE file in the root directory of this source tree.
828
- */
829
- const __iconNode$w = [["path", { "d": "M20 6v12a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2z", "key": "svg-0" }], ["path", { "d": "M10 16h6", "key": "svg-1" }], ["path", { "d": "M13 11m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-2" }], ["path", { "d": "M4 8h3", "key": "svg-3" }], ["path", { "d": "M4 12h3", "key": "svg-4" }], ["path", { "d": "M4 16h3", "key": "svg-5" }]];
830
- const IconAddressBook = createReactComponent("outline", "address-book", "AddressBook", __iconNode$w);
831
823
  /**
832
824
  * @license @tabler/icons-react v3.35.0 - MIT
833
825
  *
@@ -1660,6 +1652,66 @@ function ButtonGroup({
1660
1652
  );
1661
1653
  }) });
1662
1654
  }
1655
+ function CircleProgressBar({
1656
+ progress = 0,
1657
+ diameter = 20,
1658
+ strokeWidth = 3,
1659
+ variant = "primary",
1660
+ trackColor = "#EAECF0",
1661
+ className
1662
+ }) {
1663
+ const normalizedProgress = Math.min(100, Math.max(0, progress));
1664
+ const isCustomColor = variant.startsWith("#");
1665
+ const center = diameter / 2;
1666
+ const radius = (diameter - strokeWidth) / 2;
1667
+ const circumference = 2 * Math.PI * radius;
1668
+ const strokeDashoffset = circumference - normalizedProgress / 100 * circumference;
1669
+ const containerClasses = clsx(
1670
+ "ina-circle-progress-bar",
1671
+ !isCustomColor && `ina-circle-progress-bar--${variant}`,
1672
+ className
1673
+ );
1674
+ const style = {
1675
+ "--ina-circle-progress-size": `${diameter}px`,
1676
+ ...trackColor && { "--ina-circle-progress-track-color": trackColor },
1677
+ ...isCustomColor && { "--ina-circle-progress-color": variant }
1678
+ };
1679
+ return /* @__PURE__ */ jsx("div", { className: containerClasses, style, children: /* @__PURE__ */ jsxs(
1680
+ "svg",
1681
+ {
1682
+ className: "ina-circle-progress-bar__svg",
1683
+ width: "100%",
1684
+ height: "100%",
1685
+ viewBox: `0 0 ${diameter} ${diameter}`,
1686
+ fill: "none",
1687
+ xmlns: "http://www.w3.org/2000/svg",
1688
+ children: [
1689
+ /* @__PURE__ */ jsx(
1690
+ "circle",
1691
+ {
1692
+ className: "ina-circle-progress-bar__track",
1693
+ cx: center,
1694
+ cy: center,
1695
+ r: radius,
1696
+ strokeWidth
1697
+ }
1698
+ ),
1699
+ /* @__PURE__ */ jsx(
1700
+ "circle",
1701
+ {
1702
+ className: "ina-circle-progress-bar__progress",
1703
+ cx: center,
1704
+ cy: center,
1705
+ r: radius,
1706
+ strokeWidth,
1707
+ strokeDasharray: circumference,
1708
+ strokeDashoffset
1709
+ }
1710
+ )
1711
+ ]
1712
+ }
1713
+ ) });
1714
+ }
1663
1715
  function Checkbox({
1664
1716
  id,
1665
1717
  label,
@@ -4058,54 +4110,466 @@ function PasswordInput({
4058
4110
  ] })
4059
4111
  ] });
4060
4112
  }
4113
+ const COUNTRIES = [
4114
+ { code: "ID", name: "Indonesia", dialCode: "+62", flag: "🇮🇩" },
4115
+ { code: "AF", name: "Afghanistan", dialCode: "+93", flag: "🇦🇫" },
4116
+ { code: "AL", name: "Albania", dialCode: "+355", flag: "🇦🇱" },
4117
+ { code: "DZ", name: "Algeria", dialCode: "+213", flag: "🇩🇿" },
4118
+ { code: "AS", name: "American Samoa", dialCode: "+1684", flag: "🇦🇸" },
4119
+ { code: "AD", name: "Andorra", dialCode: "+376", flag: "🇦🇩" },
4120
+ { code: "AO", name: "Angola", dialCode: "+244", flag: "🇦🇴" },
4121
+ { code: "AI", name: "Anguilla", dialCode: "+1264", flag: "🇦🇮" },
4122
+ { code: "AG", name: "Antigua and Barbuda", dialCode: "+1268", flag: "🇦🇬" },
4123
+ { code: "AR", name: "Argentina", dialCode: "+54", flag: "🇦🇷" },
4124
+ { code: "AM", name: "Armenia", dialCode: "+374", flag: "🇦🇲" },
4125
+ { code: "AW", name: "Aruba", dialCode: "+297", flag: "🇦🇼" },
4126
+ { code: "AU", name: "Australia", dialCode: "+61", flag: "🇦🇺" },
4127
+ { code: "AT", name: "Austria", dialCode: "+43", flag: "🇦🇹" },
4128
+ { code: "AZ", name: "Azerbaijan", dialCode: "+994", flag: "🇦🇿" },
4129
+ { code: "BS", name: "Bahamas", dialCode: "+1242", flag: "🇧🇸" },
4130
+ { code: "BH", name: "Bahrain", dialCode: "+973", flag: "🇧🇭" },
4131
+ { code: "BD", name: "Bangladesh", dialCode: "+880", flag: "🇧🇩" },
4132
+ { code: "BB", name: "Barbados", dialCode: "+1246", flag: "🇧🇧" },
4133
+ { code: "BY", name: "Belarus", dialCode: "+375", flag: "🇧🇾" },
4134
+ { code: "BE", name: "Belgium", dialCode: "+32", flag: "🇧🇪" },
4135
+ { code: "BZ", name: "Belize", dialCode: "+501", flag: "🇧🇿" },
4136
+ { code: "BJ", name: "Benin", dialCode: "+229", flag: "🇧🇯" },
4137
+ { code: "BM", name: "Bermuda", dialCode: "+1441", flag: "🇧🇲" },
4138
+ { code: "BT", name: "Bhutan", dialCode: "+975", flag: "🇧🇹" },
4139
+ { code: "BO", name: "Bolivia", dialCode: "+591", flag: "🇧🇴" },
4140
+ { code: "BA", name: "Bosnia and Herzegovina", dialCode: "+387", flag: "🇧🇦" },
4141
+ { code: "BW", name: "Botswana", dialCode: "+267", flag: "🇧🇼" },
4142
+ { code: "BR", name: "Brazil", dialCode: "+55", flag: "🇧🇷" },
4143
+ { code: "IO", name: "British Indian Ocean Territory", dialCode: "+246", flag: "🇮🇴" },
4144
+ { code: "BN", name: "Brunei Darussalam", dialCode: "+673", flag: "🇧🇳" },
4145
+ { code: "BG", name: "Bulgaria", dialCode: "+359", flag: "🇧🇬" },
4146
+ { code: "BF", name: "Burkina Faso", dialCode: "+226", flag: "🇧🇫" },
4147
+ { code: "BI", name: "Burundi", dialCode: "+257", flag: "🇧🇮" },
4148
+ { code: "KH", name: "Cambodia", dialCode: "+855", flag: "🇰🇭" },
4149
+ { code: "CM", name: "Cameroon", dialCode: "+237", flag: "🇨🇲" },
4150
+ { code: "CA", name: "Canada", dialCode: "+1", flag: "🇨🇦" },
4151
+ { code: "CV", name: "Cape Verde", dialCode: "+238", flag: "🇨🇻" },
4152
+ { code: "KY", name: "Cayman Islands", dialCode: "+1345", flag: "🇰🇾" },
4153
+ { code: "CF", name: "Central African Republic", dialCode: "+236", flag: "🇨🇫" },
4154
+ { code: "TD", name: "Chad", dialCode: "+235", flag: "🇹🇩" },
4155
+ { code: "CL", name: "Chile", dialCode: "+56", flag: "🇨🇱" },
4156
+ { code: "CN", name: "China", dialCode: "+86", flag: "🇨🇳" },
4157
+ { code: "CX", name: "Christmas Island", dialCode: "+61", flag: "🇨🇽" },
4158
+ { code: "CC", name: "Cocos (Keeling) Islands", dialCode: "+61", flag: "🇨🇨" },
4159
+ { code: "CO", name: "Colombia", dialCode: "+57", flag: "🇨🇴" },
4160
+ { code: "KM", name: "Comoros", dialCode: "+269", flag: "🇰🇲" },
4161
+ { code: "CG", name: "Congo", dialCode: "+242", flag: "🇨🇬" },
4162
+ { code: "CD", name: "Congo, Democratic Republic of the", dialCode: "+243", flag: "🇨🇩" },
4163
+ { code: "CK", name: "Cook Islands", dialCode: "+682", flag: "🇨🇰" },
4164
+ { code: "CR", name: "Costa Rica", dialCode: "+506", flag: "🇨🇷" },
4165
+ { code: "CI", name: "Cote d'Ivoire", dialCode: "+225", flag: "🇨🇮" },
4166
+ { code: "HR", name: "Croatia", dialCode: "+385", flag: "🇭🇷" },
4167
+ { code: "CU", name: "Cuba", dialCode: "+53", flag: "🇨🇺" },
4168
+ { code: "CY", name: "Cyprus", dialCode: "+357", flag: "🇨🇾" },
4169
+ { code: "CZ", name: "Czech Republic", dialCode: "+420", flag: "🇨🇿" },
4170
+ { code: "DK", name: "Denmark", dialCode: "+45", flag: "🇩🇰" },
4171
+ { code: "DJ", name: "Djibouti", dialCode: "+253", flag: "🇩🇯" },
4172
+ { code: "DM", name: "Dominica", dialCode: "+1767", flag: "🇩🇲" },
4173
+ { code: "DO", name: "Dominican Republic", dialCode: "+1", flag: "🇩🇴" },
4174
+ { code: "EC", name: "Ecuador", dialCode: "+593", flag: "🇪🇨" },
4175
+ { code: "EG", name: "Egypt", dialCode: "+20", flag: "🇪🇬" },
4176
+ { code: "SV", name: "El Salvador", dialCode: "+503", flag: "🇸🇻" },
4177
+ { code: "GQ", name: "Equatorial Guinea", dialCode: "+240", flag: "🇬🇶" },
4178
+ { code: "ER", name: "Eritrea", dialCode: "+291", flag: "🇪🇷" },
4179
+ { code: "EE", name: "Estonia", dialCode: "+372", flag: "🇪🇪" },
4180
+ { code: "ET", name: "Ethiopia", dialCode: "+251", flag: "🇪🇹" },
4181
+ { code: "FK", name: "Falkland Islands (Malvinas)", dialCode: "+500", flag: "🇫🇰" },
4182
+ { code: "FO", name: "Faroe Islands", dialCode: "+298", flag: "🇫🇴" },
4183
+ { code: "FJ", name: "Fiji", dialCode: "+679", flag: "🇫🇯" },
4184
+ { code: "FI", name: "Finland", dialCode: "+358", flag: "🇫🇮" },
4185
+ { code: "FR", name: "France", dialCode: "+33", flag: "🇫🇷" },
4186
+ { code: "GF", name: "French Guiana", dialCode: "+594", flag: "🇬🇫" },
4187
+ { code: "PF", name: "French Polynesia", dialCode: "+689", flag: "🇵🇫" },
4188
+ { code: "GA", name: "Gabon", dialCode: "+241", flag: "🇬🇦" },
4189
+ { code: "GM", name: "Gambia", dialCode: "+220", flag: "🇬🇲" },
4190
+ { code: "GE", name: "Georgia", dialCode: "+995", flag: "🇬🇪" },
4191
+ { code: "DE", name: "Germany", dialCode: "+49", flag: "🇩🇪" },
4192
+ { code: "GH", name: "Ghana", dialCode: "+233", flag: "🇬🇭" },
4193
+ { code: "GI", name: "Gibraltar", dialCode: "+350", flag: "🇬🇮" },
4194
+ { code: "GR", name: "Greece", dialCode: "+30", flag: "🇬🇷" },
4195
+ { code: "GL", name: "Greenland", dialCode: "+299", flag: "🇬🇱" },
4196
+ { code: "GD", name: "Grenada", dialCode: "+1473", flag: "🇬🇩" },
4197
+ { code: "GP", name: "Guadeloupe", dialCode: "+590", flag: "🇬🇵" },
4198
+ { code: "GU", name: "Guam", dialCode: "+1671", flag: "🇬🇺" },
4199
+ { code: "GT", name: "Guatemala", dialCode: "+502", flag: "🇬🇹" },
4200
+ { code: "GG", name: "Guernsey", dialCode: "+44", flag: "🇬🇬" },
4201
+ { code: "GN", name: "Guinea", dialCode: "+224", flag: "🇬🇳" },
4202
+ { code: "GW", name: "Guinea-Bissau", dialCode: "+245", flag: "🇬🇼" },
4203
+ { code: "GY", name: "Guyana", dialCode: "+592", flag: "🇬🇾" },
4204
+ { code: "HT", name: "Haiti", dialCode: "+509", flag: "🇭🇹" },
4205
+ { code: "VA", name: "Holy See (Vatican City State)", dialCode: "+379", flag: "🇻🇦" },
4206
+ { code: "HN", name: "Honduras", dialCode: "+504", flag: "🇭🇳" },
4207
+ { code: "HK", name: "Hong Kong", dialCode: "+852", flag: "🇭🇰" },
4208
+ { code: "HU", name: "Hungary", dialCode: "+36", flag: "🇭🇺" },
4209
+ { code: "IS", name: "Iceland", dialCode: "+354", flag: "🇮🇸" },
4210
+ { code: "IN", name: "India", dialCode: "+91", flag: "🇮🇳" },
4211
+ { code: "IR", name: "Iran, Islamic Republic of", dialCode: "+98", flag: "🇮🇷" },
4212
+ { code: "IQ", name: "Iraq", dialCode: "+964", flag: "🇮🇶" },
4213
+ { code: "IE", name: "Ireland", dialCode: "+353", flag: "🇮🇪" },
4214
+ { code: "IM", name: "Isle of Man", dialCode: "+44", flag: "🇮🇲" },
4215
+ { code: "IL", name: "Israel", dialCode: "+972", flag: "🇮🇱" },
4216
+ { code: "IT", name: "Italy", dialCode: "+39", flag: "🇮🇹" },
4217
+ { code: "JM", name: "Jamaica", dialCode: "+1876", flag: "🇯🇲" },
4218
+ { code: "JP", name: "Japan", dialCode: "+81", flag: "🇯🇵" },
4219
+ { code: "JE", name: "Jersey", dialCode: "+44", flag: "🇯🇪" },
4220
+ { code: "JO", name: "Jordan", dialCode: "+962", flag: "🇯🇴" },
4221
+ { code: "KZ", name: "Kazakhstan", dialCode: "+7", flag: "🇰🇿" },
4222
+ { code: "KE", name: "Kenya", dialCode: "+254", flag: "🇰🇪" },
4223
+ { code: "KI", name: "Kiribati", dialCode: "+686", flag: "🇰🇮" },
4224
+ { code: "KP", name: "Korea, Democratic People's Republic of", dialCode: "+850", flag: "🇰🇵" },
4225
+ { code: "KR", name: "Korea, Republic of", dialCode: "+82", flag: "🇰🇷" },
4226
+ { code: "KW", name: "Kuwait", dialCode: "+965", flag: "🇰🇼" },
4227
+ { code: "KG", name: "Kyrgyzstan", dialCode: "+996", flag: "🇰🇬" },
4228
+ { code: "LA", name: "Lao People's Democratic Republic", dialCode: "+856", flag: "🇱🇦" },
4229
+ { code: "LV", name: "Latvia", dialCode: "+371", flag: "🇱🇻" },
4230
+ { code: "LB", name: "Lebanon", dialCode: "+961", flag: "🇱🇧" },
4231
+ { code: "LS", name: "Lesotho", dialCode: "+266", flag: "🇱🇸" },
4232
+ { code: "LR", name: "Liberia", dialCode: "+231", flag: "🇱🇷" },
4233
+ { code: "LY", name: "Libyan Arab Jamahiriya", dialCode: "+218", flag: "🇱🇾" },
4234
+ { code: "LI", name: "Liechtenstein", dialCode: "+423", flag: "🇱🇮" },
4235
+ { code: "LT", name: "Lithuania", dialCode: "+370", flag: "🇱🇹" },
4236
+ { code: "LU", name: "Luxembourg", dialCode: "+352", flag: "🇱🇺" },
4237
+ { code: "MO", name: "Macao", dialCode: "+853", flag: "🇲🇴" },
4238
+ { code: "MK", name: "Macedonia, the Former Yugoslav Republic of", dialCode: "+389", flag: "🇲🇰" },
4239
+ { code: "MG", name: "Madagascar", dialCode: "+261", flag: "🇲🇬" },
4240
+ { code: "MW", name: "Malawi", dialCode: "+265", flag: "🇲🇼" },
4241
+ { code: "MY", name: "Malaysia", dialCode: "+60", flag: "🇲🇾" },
4242
+ { code: "MV", name: "Maldives", dialCode: "+960", flag: "🇲🇻" },
4243
+ { code: "ML", name: "Mali", dialCode: "+223", flag: "🇲🇱" },
4244
+ { code: "MT", name: "Malta", dialCode: "+356", flag: "🇲🇹" },
4245
+ { code: "MH", name: "Marshall Islands", dialCode: "+692", flag: "🇲🇭" },
4246
+ { code: "MQ", name: "Martinique", dialCode: "+596", flag: "🇲🇶" },
4247
+ { code: "MR", name: "Mauritania", dialCode: "+222", flag: "🇲🇷" },
4248
+ { code: "MU", name: "Mauritius", dialCode: "+230", flag: "🇲🇺" },
4249
+ { code: "YT", name: "Mayotte", dialCode: "+262", flag: "🇾🇹" },
4250
+ { code: "MX", name: "Mexico", dialCode: "+52", flag: "🇲🇽" },
4251
+ { code: "FM", name: "Micronesia, Federated States of", dialCode: "+691", flag: "🇫🇲" },
4252
+ { code: "MD", name: "Moldova, Republic of", dialCode: "+373", flag: "🇲🇩" },
4253
+ { code: "MC", name: "Monaco", dialCode: "+377", flag: "🇲🇨" },
4254
+ { code: "MN", name: "Mongolia", dialCode: "+976", flag: "🇲🇳" },
4255
+ { code: "ME", name: "Montenegro", dialCode: "+382", flag: "🇲🇪" },
4256
+ { code: "MS", name: "Montserrat", dialCode: "+1664", flag: "🇲🇸" },
4257
+ { code: "MA", name: "Morocco", dialCode: "+212", flag: "🇲🇦" },
4258
+ { code: "MZ", name: "Mozambique", dialCode: "+258", flag: "🇲🇿" },
4259
+ { code: "MM", name: "Myanmar", dialCode: "+95", flag: "🇲🇲" },
4260
+ { code: "NA", name: "Namibia", dialCode: "+264", flag: "🇳🇦" },
4261
+ { code: "NR", name: "Nauru", dialCode: "+674", flag: "🇳🇷" },
4262
+ { code: "NP", name: "Nepal", dialCode: "+977", flag: "🇳🇵" },
4263
+ { code: "NL", name: "Netherlands", dialCode: "+31", flag: "🇳🇱" },
4264
+ { code: "NC", name: "New Caledonia", dialCode: "+687", flag: "🇳🇨" },
4265
+ { code: "NZ", name: "New Zealand", dialCode: "+64", flag: "🇳🇿" },
4266
+ { code: "NI", name: "Nicaragua", dialCode: "+505", flag: "🇳🇮" },
4267
+ { code: "NE", name: "Niger", dialCode: "+227", flag: "🇳🇪" },
4268
+ { code: "NG", name: "Nigeria", dialCode: "+234", flag: "🇳🇬" },
4269
+ { code: "NU", name: "Niue", dialCode: "+683", flag: "🇳🇺" },
4270
+ { code: "NF", name: "Norfolk Island", dialCode: "+672", flag: "🇳🇫" },
4271
+ { code: "MP", name: "Northern Mariana Islands", dialCode: "+1670", flag: "🇲🇵" },
4272
+ { code: "NO", name: "Norway", dialCode: "+47", flag: "🇳🇴" },
4273
+ { code: "OM", name: "Oman", dialCode: "+968", flag: "🇴🇲" },
4274
+ { code: "PK", name: "Pakistan", dialCode: "+92", flag: "🇵🇰" },
4275
+ { code: "PW", name: "Palau", dialCode: "+680", flag: "🇵🇼" },
4276
+ { code: "PS", name: "Palestinian Territory, Occupied", dialCode: "+970", flag: "🇵🇸" },
4277
+ { code: "PA", name: "Panama", dialCode: "+507", flag: "🇵🇦" },
4278
+ { code: "PG", name: "Papua New Guinea", dialCode: "+675", flag: "🇵🇬" },
4279
+ { code: "PY", name: "Paraguay", dialCode: "+595", flag: "🇵🇾" },
4280
+ { code: "PE", name: "Peru", dialCode: "+51", flag: "🇵🇪" },
4281
+ { code: "PH", name: "Philippines", dialCode: "+63", flag: "🇵🇭" },
4282
+ { code: "PN", name: "Pitcairn", dialCode: "+870", flag: "🇵🇳" },
4283
+ { code: "PL", name: "Poland", dialCode: "+48", flag: "🇵🇱" },
4284
+ { code: "PT", name: "Portugal", dialCode: "+351", flag: "🇵🇹" },
4285
+ { code: "PR", name: "Puerto Rico", dialCode: "+1939", flag: "🇵🇷" },
4286
+ { code: "QA", name: "Qatar", dialCode: "+974", flag: "🇶🇦" },
4287
+ { code: "RE", name: "Reunion", dialCode: "+262", flag: "🇷🇪" },
4288
+ { code: "RO", name: "Romania", dialCode: "+40", flag: "🇷🇴" },
4289
+ { code: "RU", name: "Russian Federation", dialCode: "+7", flag: "🇷🇺" },
4290
+ { code: "RW", name: "Rwanda", dialCode: "+250", flag: "🇷🇼" },
4291
+ { code: "BL", name: "Saint Barthelemy", dialCode: "+590", flag: "🇧🇱" },
4292
+ { code: "SH", name: "Saint Helena", dialCode: "+290", flag: "🇸🇭" },
4293
+ { code: "KN", name: "Saint Kitts and Nevis", dialCode: "+1869", flag: "🇰🇳" },
4294
+ { code: "LC", name: "Saint Lucia", dialCode: "+1758", flag: "🇱🇨" },
4295
+ { code: "MF", name: "Saint Martin", dialCode: "+590", flag: "🇲🇫" },
4296
+ { code: "PM", name: "Saint Pierre and Miquelon", dialCode: "+508", flag: "🇵🇲" },
4297
+ { code: "VC", name: "Saint Vincent and the Grenadines", dialCode: "+1784", flag: "🇻🇨" },
4298
+ { code: "WS", name: "Samoa", dialCode: "+685", flag: "🇼🇸" },
4299
+ { code: "SM", name: "San Marino", dialCode: "+378", flag: "🇸🇲" },
4300
+ { code: "ST", name: "Sao Tome and Principe", dialCode: "+239", flag: "🇸🇹" },
4301
+ { code: "SA", name: "Saudi Arabia", dialCode: "+966", flag: "🇸🇦" },
4302
+ { code: "SN", name: "Senegal", dialCode: "+221", flag: "🇸🇳" },
4303
+ { code: "RS", name: "Serbia", dialCode: "+381", flag: "🇷🇸" },
4304
+ { code: "SC", name: "Seychelles", dialCode: "+248", flag: "🇸🇨" },
4305
+ { code: "SL", name: "Sierra Leone", dialCode: "+232", flag: "🇸🇱" },
4306
+ { code: "SG", name: "Singapore", dialCode: "+65", flag: "🇸🇬" },
4307
+ { code: "SK", name: "Slovakia", dialCode: "+421", flag: "🇸🇰" },
4308
+ { code: "SI", name: "Slovenia", dialCode: "+386", flag: "🇸🇮" },
4309
+ { code: "SB", name: "Solomon Islands", dialCode: "+677", flag: "🇸🇧" },
4310
+ { code: "SO", name: "Somalia", dialCode: "+252", flag: "🇸🇴" },
4311
+ { code: "ZA", name: "South Africa", dialCode: "+27", flag: "🇿🇦" },
4312
+ { code: "GS", name: "South Georgia and the South Sandwich Islands", dialCode: "+500", flag: "🇬🇸" },
4313
+ { code: "ES", name: "Spain", dialCode: "+34", flag: "🇪🇸" },
4314
+ { code: "LK", name: "Sri Lanka", dialCode: "+94", flag: "🇱🇰" },
4315
+ { code: "SD", name: "Sudan", dialCode: "+249", flag: "🇸🇩" },
4316
+ { code: "SR", name: "Suriname", dialCode: "+597", flag: "🇸🇷" },
4317
+ { code: "SJ", name: "Svalbard and Jan Mayen", dialCode: "+47", flag: "🇸🇯" },
4318
+ { code: "SZ", name: "Swaziland", dialCode: "+268", flag: "🇸🇿" },
4319
+ { code: "SE", name: "Sweden", dialCode: "+46", flag: "🇸🇪" },
4320
+ { code: "CH", name: "Switzerland", dialCode: "+41", flag: "🇨🇭" },
4321
+ { code: "SY", name: "Syrian Arab Republic", dialCode: "+963", flag: "🇸🇾" },
4322
+ { code: "TW", name: "Taiwan, Province of China", dialCode: "+886", flag: "🇹🇼" },
4323
+ { code: "TJ", name: "Tajikistan", dialCode: "+992", flag: "🇹🇯" },
4324
+ { code: "TZ", name: "Tanzania, United Republic of", dialCode: "+255", flag: "🇹🇿" },
4325
+ { code: "TH", name: "Thailand", dialCode: "+66", flag: "🇹🇭" },
4326
+ { code: "TL", name: "Timor-Leste", dialCode: "+670", flag: "🇹🇱" },
4327
+ { code: "TG", name: "Togo", dialCode: "+228", flag: "🇹🇬" },
4328
+ { code: "TK", name: "Tokelau", dialCode: "+690", flag: "🇹🇰" },
4329
+ { code: "TO", name: "Tonga", dialCode: "+676", flag: "🇹🇴" },
4330
+ { code: "TT", name: "Trinidad and Tobago", dialCode: "+1868", flag: "🇹🇹" },
4331
+ { code: "TN", name: "Tunisia", dialCode: "+216", flag: "🇹🇳" },
4332
+ { code: "TR", name: "Turkey", dialCode: "+90", flag: "🇹🇷" },
4333
+ { code: "TM", name: "Turkmenistan", dialCode: "+993", flag: "🇹🇲" },
4334
+ { code: "TC", name: "Turks and Caicos Islands", dialCode: "+1649", flag: "🇹🇨" },
4335
+ { code: "TV", name: "Tuvalu", dialCode: "+688", flag: "🇹🇻" },
4336
+ { code: "UG", name: "Uganda", dialCode: "+256", flag: "🇺🇬" },
4337
+ { code: "UA", name: "Ukraine", dialCode: "+380", flag: "🇺🇦" },
4338
+ { code: "AE", name: "United Arab Emirates", dialCode: "+971", flag: "🇦🇪" },
4339
+ { code: "GB", name: "United Kingdom", dialCode: "+44", flag: "🇬🇧" },
4340
+ { code: "US", name: "United States", dialCode: "+1", flag: "🇺🇸" },
4341
+ { code: "UY", name: "Uruguay", dialCode: "+598", flag: "🇺🇾" },
4342
+ { code: "UZ", name: "Uzbekistan", dialCode: "+998", flag: "🇺🇿" },
4343
+ { code: "VU", name: "Vanuatu", dialCode: "+678", flag: "🇻🇺" },
4344
+ { code: "VE", name: "Venezuela", dialCode: "+58", flag: "🇻🇪" },
4345
+ { code: "VN", name: "Vietnam", dialCode: "+84", flag: "🇻🇳" },
4346
+ { code: "VG", name: "Virgin Islands, British", dialCode: "+1284", flag: "🇻🇬" },
4347
+ { code: "VI", name: "Virgin Islands, U.S.", dialCode: "+1340", flag: "🇻🇮" },
4348
+ { code: "WF", name: "Wallis and Futuna", dialCode: "+681", flag: "🇼🇫" },
4349
+ { code: "EH", name: "Western Sahara", dialCode: "+212", flag: "🇪🇭" },
4350
+ { code: "YE", name: "Yemen", dialCode: "+967", flag: "🇾🇪" },
4351
+ { code: "ZM", name: "Zambia", dialCode: "+260", flag: "🇿🇲" },
4352
+ { code: "ZW", name: "Zimbabwe", dialCode: "+263", flag: "🇿🇼" }
4353
+ ];
4061
4354
  function PhoneInput({
4062
- label = "",
4063
- value,
4355
+ label,
4356
+ value = "",
4064
4357
  onChange,
4358
+ onInput,
4065
4359
  placeholder,
4066
- required = false
4360
+ size = "md",
4361
+ status = "neutral",
4362
+ statusMessage,
4363
+ helperText,
4364
+ disabled = false,
4365
+ readonly = false,
4366
+ required = false,
4367
+ defaultCountry = "ID",
4368
+ countries = COUNTRIES,
4369
+ className,
4370
+ id,
4371
+ ...rest
4067
4372
  }) {
4068
- const [focus, setFocus] = useState(false);
4069
- const containerClasses = clsx("ina-phone-input");
4373
+ const inputId = useMemo(() => {
4374
+ return id || `phone-input-${Math.random().toString(36).substr(2, 9)}`;
4375
+ }, [id]);
4376
+ const [phoneNumber, setPhoneNumber] = useState(value);
4377
+ const [isCountryDropdownOpen, setIsCountryDropdownOpen] = useState(false);
4378
+ const [countrySearch, setCountrySearch] = useState("");
4379
+ const [selectedCountry, setSelectedCountry] = useState(
4380
+ countries.find((c2) => c2.code === defaultCountry) || countries[0]
4381
+ );
4382
+ const inputRef = useRef(null);
4383
+ const searchInputRef = useRef(null);
4384
+ const dropdownRef = useRef(null);
4385
+ const formatPhoneNumber = (val) => {
4386
+ const clean = val.replace(/\D/g, "");
4387
+ if (clean.length > 7) {
4388
+ return clean.replace(/^(\d{3})(\d{4})(.*)/, "$1-$2-$3");
4389
+ } else if (clean.length > 3) {
4390
+ return clean.replace(/^(\d{3})(.*)/, "$1-$2");
4391
+ }
4392
+ return clean;
4393
+ };
4394
+ useEffect(() => {
4395
+ if (!value) {
4396
+ setPhoneNumber("");
4397
+ return;
4398
+ }
4399
+ const dialCode = selectedCountry.dialCode;
4400
+ let localPart = value;
4401
+ if (value.startsWith(dialCode)) {
4402
+ localPart = value.substring(dialCode.length);
4403
+ }
4404
+ setPhoneNumber(formatPhoneNumber(localPart));
4405
+ }, [value, selectedCountry.dialCode]);
4406
+ useEffect(() => {
4407
+ const handleClickOutside = (event) => {
4408
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
4409
+ setIsCountryDropdownOpen(false);
4410
+ }
4411
+ };
4412
+ document.addEventListener("mousedown", handleClickOutside);
4413
+ return () => {
4414
+ document.removeEventListener("mousedown", handleClickOutside);
4415
+ };
4416
+ }, []);
4417
+ const filteredCountries = useMemo(() => {
4418
+ if (!countrySearch) return countries;
4419
+ const search = countrySearch.toLowerCase();
4420
+ return countries.filter(
4421
+ (country) => country.name.toLowerCase().includes(search) || country.dialCode.includes(search) || country.code.toLowerCase().includes(search)
4422
+ );
4423
+ }, [countries, countrySearch]);
4424
+ const toggleCountryDropdown = () => {
4425
+ if (disabled || readonly) return;
4426
+ setIsCountryDropdownOpen((prev) => {
4427
+ const newState = !prev;
4428
+ if (newState) {
4429
+ setCountrySearch("");
4430
+ setTimeout(() => {
4431
+ var _a;
4432
+ (_a = searchInputRef.current) == null ? void 0 : _a.focus();
4433
+ }, 0);
4434
+ }
4435
+ return newState;
4436
+ });
4437
+ };
4438
+ const selectCountry = (country) => {
4439
+ setSelectedCountry(country);
4440
+ setIsCountryDropdownOpen(false);
4441
+ if (phoneNumber) {
4442
+ const cleanValue = phoneNumber.replace(/\D/g, "");
4443
+ const cleanLocal = cleanValue.startsWith("0") ? cleanValue.substring(1) : cleanValue;
4444
+ onChange == null ? void 0 : onChange(`${country.dialCode}${cleanLocal}`);
4445
+ }
4446
+ setTimeout(() => {
4447
+ var _a;
4448
+ (_a = inputRef.current) == null ? void 0 : _a.focus();
4449
+ }, 0);
4450
+ };
4451
+ const handleInputChange = (e) => {
4452
+ const rawValue = e.target.value;
4453
+ const displayClean = rawValue.replace(/\D/g, "");
4454
+ const formatted = formatPhoneNumber(displayClean);
4455
+ setPhoneNumber(formatted);
4456
+ let cleanValue = displayClean;
4457
+ if (cleanValue.startsWith("0")) {
4458
+ cleanValue = cleanValue.substring(1);
4459
+ }
4460
+ onChange == null ? void 0 : onChange(`${selectedCountry.dialCode}${cleanValue}`);
4461
+ onInput == null ? void 0 : onInput(e);
4462
+ };
4463
+ const containerClasses = clsx(
4464
+ "ina-phone-input",
4465
+ disabled && "ina-phone-input--disabled",
4466
+ className
4467
+ );
4070
4468
  const wrapperClasses = clsx(
4071
4469
  "ina-phone-input__wrapper",
4072
- focus && "ina-phone-input__wrapper--focused"
4470
+ `ina-phone-input__wrapper--size-${size}`,
4471
+ disabled && "ina-phone-input__wrapper--disabled",
4472
+ status !== "neutral" && `ina-phone-input__wrapper--status-${status}`
4473
+ );
4474
+ const helperTextClasses = clsx(
4475
+ "ina-phone-input__helper-text",
4476
+ status === "error" && "ina-phone-input__helper-text--error",
4477
+ status === "warning" && "ina-phone-input__helper-text--warning"
4073
4478
  );
4479
+ const bottomText = statusMessage || helperText;
4074
4480
  return /* @__PURE__ */ jsxs("div", { className: containerClasses, children: [
4075
- label && /* @__PURE__ */ jsxs(
4076
- "label",
4077
- {
4078
- className: clsx(
4079
- "ina-phone-input__label",
4080
- required && "ina-phone-input__label--required"
4081
- ),
4082
- htmlFor: String(label),
4083
- children: [
4084
- label,
4085
- " ",
4086
- required && /* @__PURE__ */ jsx("span", { className: "ina-phone-input__asterisk", children: "*" })
4087
- ]
4088
- }
4089
- ),
4481
+ label && /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: "ina-phone-input__label", children: [
4482
+ label,
4483
+ required && /* @__PURE__ */ jsx("span", { className: "ina-phone-input__asterisk", children: "*" })
4484
+ ] }),
4090
4485
  /* @__PURE__ */ jsxs("div", { className: wrapperClasses, children: [
4091
- /* @__PURE__ */ jsx("div", { className: "ina-phone-input__country-code", children: "+62" }),
4486
+ /* @__PURE__ */ jsxs("div", { className: "ina-phone-input__country-selector", ref: dropdownRef, children: [
4487
+ /* @__PURE__ */ jsxs(
4488
+ "button",
4489
+ {
4490
+ type: "button",
4491
+ className: "ina-phone-input__country-button",
4492
+ onClick: toggleCountryDropdown,
4493
+ disabled: disabled || readonly,
4494
+ children: [
4495
+ /* @__PURE__ */ jsx("span", { className: "ina-phone-input__country-flag", children: selectedCountry.flag }),
4496
+ /* @__PURE__ */ jsx("span", { className: "ina-phone-input__country-code", children: selectedCountry.dialCode }),
4497
+ /* @__PURE__ */ jsx(
4498
+ "svg",
4499
+ {
4500
+ className: clsx(
4501
+ "ina-phone-input__country-chevron",
4502
+ isCountryDropdownOpen && "ina-phone-input__country-chevron--open"
4503
+ ),
4504
+ width: "12",
4505
+ height: "12",
4506
+ viewBox: "0 0 24 24",
4507
+ fill: "none",
4508
+ xmlns: "http://www.w3.org/2000/svg",
4509
+ children: /* @__PURE__ */ jsx(
4510
+ "path",
4511
+ {
4512
+ d: "M6 9L12 15L18 9",
4513
+ stroke: "currentColor",
4514
+ strokeWidth: "2",
4515
+ strokeLinecap: "round",
4516
+ strokeLinejoin: "round"
4517
+ }
4518
+ )
4519
+ }
4520
+ )
4521
+ ]
4522
+ }
4523
+ ),
4524
+ isCountryDropdownOpen && /* @__PURE__ */ jsxs("div", { className: "ina-phone-input__country-dropdown", children: [
4525
+ /* @__PURE__ */ jsx("div", { className: "ina-phone-input__country-search", children: /* @__PURE__ */ jsx(
4526
+ "input",
4527
+ {
4528
+ ref: searchInputRef,
4529
+ value: countrySearch,
4530
+ onChange: (e) => setCountrySearch(e.target.value),
4531
+ type: "text",
4532
+ placeholder: "Search countries...",
4533
+ className: "ina-phone-input__country-search-input"
4534
+ }
4535
+ ) }),
4536
+ /* @__PURE__ */ jsx("div", { className: "ina-phone-input__country-list", children: filteredCountries.map((country) => /* @__PURE__ */ jsxs(
4537
+ "button",
4538
+ {
4539
+ type: "button",
4540
+ className: clsx(
4541
+ "ina-phone-input__country-option",
4542
+ country.code === selectedCountry.code && "ina-phone-input__country-option--selected"
4543
+ ),
4544
+ onClick: () => selectCountry(country),
4545
+ children: [
4546
+ /* @__PURE__ */ jsx("span", { className: "ina-phone-input__country-flag", children: country.flag }),
4547
+ /* @__PURE__ */ jsx("span", { className: "ina-phone-input__country-name", children: country.name }),
4548
+ /* @__PURE__ */ jsx("span", { className: "ina-phone-input__country-dial-code", children: country.dialCode })
4549
+ ]
4550
+ },
4551
+ country.code
4552
+ )) })
4553
+ ] })
4554
+ ] }),
4555
+ /* @__PURE__ */ jsx("div", { className: "ina-phone-input__divider" }),
4092
4556
  /* @__PURE__ */ jsx(
4093
4557
  "input",
4094
4558
  {
4095
- id: String(label),
4096
- type: "text",
4097
- className: "ina-phone-input__input",
4098
- value,
4559
+ ...rest,
4560
+ id: inputId,
4561
+ ref: inputRef,
4562
+ value: phoneNumber,
4563
+ type: "tel",
4099
4564
  placeholder,
4100
- onKeyDown: (e) => onlyDecimalNumber(e),
4101
- onChange: (e) => onChange(e.target.value),
4102
- onFocus: () => setFocus(true),
4103
- onBlur: () => setFocus(false)
4565
+ disabled,
4566
+ readOnly: readonly,
4567
+ className: "ina-phone-input__input",
4568
+ onChange: handleInputChange
4104
4569
  }
4105
- ),
4106
- /* @__PURE__ */ jsx("div", { className: "ina-phone-input__contact-icon", children: /* @__PURE__ */ jsx(IconAddressBook, { className: "ina-phone-input__icon", size: 20 }) })
4570
+ )
4107
4571
  ] }),
4108
- /* @__PURE__ */ jsx("p", { className: "ina-phone-input__example", children: "Contoh: 8211111000666" })
4572
+ bottomText && /* @__PURE__ */ jsx("div", { className: helperTextClasses, children: bottomText })
4109
4573
  ] });
4110
4574
  }
4111
4575
  function RadioInput({
@@ -10345,6 +10809,7 @@ export {
10345
10809
  Card,
10346
10810
  Checkbox,
10347
10811
  Chip,
10812
+ CircleProgressBar,
10348
10813
  Collapse,
10349
10814
  ConfirmationContext,
10350
10815
  ConfirmationProvider,