@idds/react 1.4.16 → 1.4.17

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