@asdp/ferryui 0.1.22-dev.9360 → 0.1.22-dev.9417

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.js CHANGED
@@ -1406,7 +1406,7 @@ var CardTicket = ({
1406
1406
  {
1407
1407
  size: "large",
1408
1408
  appearance: "filled",
1409
- style: { backgroundColor: departureItem?.provider?.serviceColor },
1409
+ style: { backgroundColor: departureItem?.provider?.serviceColor, padding: "0.5rem" },
1410
1410
  iconPosition: "before",
1411
1411
  shape: "rounded",
1412
1412
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:info-24-regular" }),
@@ -1723,27 +1723,27 @@ var CardTicket = ({
1723
1723
  var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1724
1724
  "svg",
1725
1725
  {
1726
- viewBox: "0 0 1850 465",
1726
+ viewBox: "0 0 1296 495",
1727
1727
  fill: "none",
1728
1728
  xmlns: "http://www.w3.org/2000/svg",
1729
1729
  preserveAspectRatio: "none",
1730
1730
  ...props,
1731
1731
  children: [
1732
- /* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter0_dd_156_32114)", children: /* @__PURE__ */ jsxRuntime.jsx(
1732
+ /* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter0_dd_8563_16188)", children: /* @__PURE__ */ jsxRuntime.jsx(
1733
1733
  "path",
1734
1734
  {
1735
- d: "M1819.6 9.85962C1815.43 8.63925 1810.75 8.00891 1806.01 8.02751H523.015C517.214 8.02224 511.553 8.98897 506.816 10.7941C502.078 12.5993 498.497 15.1537 496.568 18.1041C492.794 23.9726 485.817 29.088 476.552 32.7781C467.288 36.4682 456.169 38.5603 444.659 38.7794C443.997 38.7794 443.3 38.7794 442.604 38.7794C430.731 38.7805 419.152 36.7877 409.476 33.0776C399.799 29.3676 392.505 24.1246 388.606 18.0766C386.681 15.1284 383.106 12.5753 378.374 10.7702C373.643 8.96512 367.989 7.99718 362.193 8.00001H43.9587C40.2864 7.9988 36.6498 8.38797 33.2567 9.1453C29.8635 9.90262 26.7806 11.0133 24.184 12.4137C21.5873 13.814 19.5279 15.4767 18.1237 17.3066C16.7194 19.1365 15.9978 21.0978 16 23.0782V425.922C15.9978 427.902 16.7194 429.863 18.1237 431.693C19.5279 433.523 21.5873 435.186 24.184 436.586C26.7806 437.987 29.8635 439.097 33.2567 439.855C36.6498 440.612 40.2864 441.001 43.9587 441H362.193C367.99 441.005 373.646 440.039 378.379 438.233C383.111 436.428 386.685 433.873 388.606 430.923C392.505 424.875 399.799 419.632 409.476 415.922C419.152 412.212 430.731 410.219 442.604 410.221C443.3 410.221 443.997 410.221 444.659 410.221C456.169 410.44 467.288 412.532 476.552 416.222C485.817 419.912 492.794 425.027 496.568 430.896C498.495 433.847 502.075 436.402 506.814 438.208C511.552 440.013 517.214 440.979 523.015 440.973H1806.04C1809.71 440.974 1813.35 440.585 1816.74 439.827C1820.14 439.07 1823.22 437.959 1825.82 436.559C1828.41 435.159 1830.47 433.496 1831.88 431.666C1833.28 429.836 1834 427.875 1834 425.894V23.0599C1834 20.3673 1832.66 17.7243 1830.13 15.4037C1827.59 13.0831 1823.96 11.1692 1819.6 9.85962ZM447.343 390.645C447.352 391.126 447.104 391.599 446.628 392.007C446.152 392.415 445.469 392.74 444.659 392.944C444.032 393.133 443.322 393.228 442.604 393.219C441.977 393.22 441.355 393.154 440.775 393.025C440.195 392.896 439.668 392.707 439.224 392.467C438.78 392.228 438.429 391.944 438.19 391.631C437.951 391.318 437.829 390.983 437.831 390.645V360.818C437.831 360.135 438.334 359.48 439.229 358.998C440.124 358.515 441.338 358.244 442.604 358.244C443.317 358.24 444.022 358.328 444.659 358.5C445.145 358.623 445.587 358.791 445.967 358.995C446.856 359.484 447.351 360.142 447.343 360.827V390.645ZM447.343 339.556C447.352 340.038 447.104 340.511 446.628 340.919C446.152 341.326 445.469 341.652 444.659 341.856C444.029 342.04 443.321 342.135 442.604 342.13C441.975 342.134 441.352 342.07 440.769 341.942C440.187 341.814 439.658 341.624 439.214 341.385C438.769 341.145 438.418 340.86 438.18 340.546C437.943 340.232 437.824 339.895 437.831 339.556V309.702C437.829 309.364 437.951 309.028 438.19 308.716C438.429 308.403 438.78 308.119 439.224 307.879C439.668 307.64 440.195 307.45 440.775 307.322C441.355 307.193 441.977 307.127 442.604 307.128C443.317 307.124 444.022 307.212 444.659 307.384C445.144 307.504 445.587 307.669 445.967 307.87C446.853 308.36 447.347 309.018 447.343 309.702V339.556ZM447.343 288.468C447.35 288.949 447.101 289.422 446.625 289.829C446.149 290.237 445.467 290.562 444.659 290.767C444.029 290.952 443.321 291.047 442.604 291.042C441.971 291.043 441.345 290.975 440.761 290.843C440.178 290.711 439.649 290.517 439.207 290.273C438.761 290.033 438.409 289.747 438.173 289.432C437.937 289.117 437.82 288.78 437.831 288.441V258.614C437.829 258.275 437.951 257.94 438.19 257.627C438.429 257.314 438.78 257.03 439.224 256.791C439.668 256.552 440.195 256.362 440.775 256.233C441.355 256.104 441.977 256.039 442.604 256.04C443.317 256.036 444.022 256.123 444.659 256.296C445.148 256.413 445.591 256.577 445.967 256.782C446.853 257.272 447.347 257.929 447.343 258.614V288.468ZM447.343 237.371C447.353 237.854 447.105 238.328 446.63 238.737C446.154 239.147 445.47 239.474 444.659 239.679C444.028 239.861 443.32 239.953 442.604 239.945C441.977 239.946 441.355 239.88 440.775 239.751C440.195 239.622 439.668 239.433 439.224 239.193C438.78 238.954 438.429 238.67 438.19 238.357C437.951 238.044 437.829 237.709 437.831 237.371V207.535C437.831 207.197 437.954 206.863 438.195 206.551C438.435 206.239 438.786 205.956 439.23 205.718C439.673 205.479 440.2 205.291 440.779 205.162C441.358 205.034 441.978 204.969 442.604 204.97C443.319 204.968 444.023 205.059 444.659 205.235C445.148 205.352 445.591 205.516 445.967 205.721C446.41 205.962 446.759 206.248 446.995 206.563C447.232 206.877 447.35 207.214 447.343 207.553V237.371ZM447.343 186.282C447.354 186.764 447.107 187.238 446.63 187.646C446.154 188.054 445.47 188.379 444.659 188.582C444.032 188.771 443.322 188.866 442.604 188.856C441.335 188.859 440.115 188.592 439.207 188.114C438.327 187.622 437.834 186.966 437.831 186.282V156.456C437.831 155.773 438.334 155.118 439.229 154.635C440.124 154.153 441.338 153.881 442.604 153.881C443.875 153.883 445.095 154.152 446.001 154.633C446.887 155.122 447.381 155.78 447.377 156.465L447.343 186.282ZM447.343 135.194C447.352 135.676 447.104 136.149 446.628 136.556C446.152 136.964 445.469 137.289 444.659 137.493C444.032 137.683 443.322 137.778 442.604 137.768C441.977 137.769 441.355 137.704 440.775 137.575C440.195 137.446 439.668 137.256 439.224 137.017C438.78 136.778 438.429 136.493 438.19 136.18C437.951 135.868 437.829 135.532 437.831 135.194V105.367C437.831 104.685 438.334 104.03 439.229 103.547C440.124 103.064 441.338 102.793 442.604 102.793C443.317 102.789 444.022 102.877 444.659 103.05C445.145 103.173 445.587 103.34 445.967 103.544C446.856 104.033 447.351 104.692 447.343 105.376V135.194ZM447.343 84.1057C447.352 84.5874 447.104 85.0604 446.628 85.4681C446.152 85.8758 445.469 86.201 444.659 86.405C444.029 86.5898 443.321 86.6845 442.604 86.6798C441.975 86.6835 441.352 86.6194 440.769 86.4913C440.187 86.3632 439.658 86.1739 439.214 85.9341C438.769 85.6943 438.418 85.409 438.18 85.0951C437.943 84.7811 437.824 84.4447 437.831 84.1057V54.279C437.829 53.9407 437.951 53.6054 438.19 53.2925C438.429 52.9797 438.78 52.6954 439.224 52.4561C439.668 52.2168 440.195 52.0273 440.775 51.8983C441.355 51.7694 441.977 51.7037 442.604 51.7049C443.317 51.7007 444.022 51.7886 444.659 51.9614C445.144 52.0812 445.587 52.2455 445.967 52.4469C446.856 52.9357 447.351 53.5943 447.343 54.279V84.1057Z",
1735
+ d: "M278.91 4C287.803 17.835 303.331 27 321 27C338.669 27 354.197 17.835 363.09 4H1272C1280.84 4 1288 11.1634 1288 20V467C1288 475.837 1280.84 483 1272 483H363.09C354.197 469.165 338.669 460 321 460C303.331 460 287.803 469.165 278.91 483H24C15.1635 483 8.00003 475.837 8 467V20C8 11.1634 15.1634 4 24 4H278.91ZM321.5 407.5C319.015 407.5 317 409.515 317 412V439C317 441.485 319.015 443.5 321.5 443.5C323.985 443.5 326 441.485 326 439V412C326 409.515 323.985 407.5 321.5 407.5ZM321.5 355.5C319.015 355.5 317 357.515 317 360V387C317 389.485 319.015 391.5 321.5 391.5C323.985 391.5 326 389.485 326 387V360C326 357.515 323.985 355.5 321.5 355.5ZM321.5 303.5C319.015 303.5 317 305.515 317 308V335C317 337.485 319.015 339.5 321.5 339.5C323.985 339.5 326 337.485 326 335V308C326 305.515 323.985 303.5 321.5 303.5ZM321.5 251.5C319.015 251.5 317 253.515 317 256V283C317 285.485 319.015 287.5 321.5 287.5C323.985 287.5 326 285.485 326 283V256C326 253.515 323.985 251.5 321.5 251.5ZM321.5 199.5C319.015 199.5 317 201.515 317 204V231C317 233.485 319.015 235.5 321.5 235.5C323.985 235.5 326 233.485 326 231V204C326 201.515 323.985 199.5 321.5 199.5ZM321.5 147.5C319.015 147.5 317 149.515 317 152V179C317 181.485 319.015 183.5 321.5 183.5C323.985 183.5 326 181.485 326 179V152C326 149.515 323.985 147.5 321.5 147.5ZM321.5 95.5C319.015 95.5 317 97.5147 317 100V127C317 129.485 319.015 131.5 321.5 131.5C323.985 131.5 326 129.485 326 127V100C326 97.5147 323.985 95.5 321.5 95.5ZM321.5 43.5C319.015 43.5 317 45.5147 317 48V75C317 77.4853 319.015 79.5 321.5 79.5C323.985 79.5 326 77.4853 326 75V48C326 45.5147 323.985 43.5 321.5 43.5Z",
1736
1736
  fill: "white"
1737
1737
  }
1738
1738
  ) }),
1739
1739
  /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
1740
1740
  "filter",
1741
1741
  {
1742
- id: "filter0_dd_156_32114",
1742
+ id: "filter0_dd_8563_16188",
1743
1743
  x: "0",
1744
1744
  y: "0",
1745
- width: "1850",
1746
- height: "465",
1745
+ width: "1296",
1746
+ height: "495",
1747
1747
  filterUnits: "userSpaceOnUse",
1748
1748
  colorInterpolationFilters: "sRGB",
1749
1749
  children: [
@@ -1761,7 +1761,7 @@ var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1761
1761
  /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "1" }),
1762
1762
  /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
1763
1763
  /* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0" }),
1764
- /* @__PURE__ */ jsxRuntime.jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_156_32114" }),
1764
+ /* @__PURE__ */ jsxRuntime.jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_8563_16188" }),
1765
1765
  /* @__PURE__ */ jsxRuntime.jsx(
1766
1766
  "feColorMatrix",
1767
1767
  {
@@ -1771,16 +1771,16 @@ var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1771
1771
  result: "hardAlpha"
1772
1772
  }
1773
1773
  ),
1774
- /* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "8" }),
1775
- /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "8" }),
1774
+ /* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "4" }),
1775
+ /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "4" }),
1776
1776
  /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
1777
1777
  /* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" }),
1778
1778
  /* @__PURE__ */ jsxRuntime.jsx(
1779
1779
  "feBlend",
1780
1780
  {
1781
1781
  mode: "normal",
1782
- in2: "effect1_dropShadow_156_32114",
1783
- result: "effect2_dropShadow_156_32114"
1782
+ in2: "effect1_dropShadow_8563_16188",
1783
+ result: "effect2_dropShadow_8563_16188"
1784
1784
  }
1785
1785
  ),
1786
1786
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1788,7 +1788,7 @@ var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1788
1788
  {
1789
1789
  mode: "normal",
1790
1790
  in: "SourceGraphic",
1791
- in2: "effect2_dropShadow_156_32114",
1791
+ in2: "effect2_dropShadow_8563_16188",
1792
1792
  result: "shape"
1793
1793
  }
1794
1794
  )
@@ -1802,27 +1802,27 @@ var BackgroundTicketCard_default = BackgroundTicketCard;
1802
1802
  var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1803
1803
  "svg",
1804
1804
  {
1805
- viewBox: "0 0 465 1750",
1805
+ viewBox: "4 0 479 1166",
1806
1806
  fill: "none",
1807
1807
  xmlns: "http://www.w3.org/2000/svg",
1808
1808
  preserveAspectRatio: "none",
1809
1809
  ...props,
1810
1810
  children: [
1811
- /* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter0_dd_156_32115)", children: /* @__PURE__ */ jsxRuntime.jsx(
1811
+ /* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter0_dd_8563_16188_vert)", children: /* @__PURE__ */ jsxRuntime.jsx(
1812
1812
  "path",
1813
1813
  {
1814
- d: "M455.14 1719.6C456.36 1715.43 456.99 1710.75 456.973 1706.01V423.015C456.978 417.214 456.011 411.553 454.206 406.816C452.401 402.078 449.846 398.497 446.896 396.568C441.027 392.794 435.912 385.817 432.222 376.552C428.532 367.288 426.44 356.169 426.221 344.659C426.221 343.997 426.221 343.3 426.221 342.604C426.219 330.731 428.212 319.152 431.922 309.476C435.632 299.799 440.875 292.505 446.923 288.606C449.872 286.681 452.425 283.106 454.23 278.374C456.035 273.643 457.003 267.989 457 262.193V43.9587C457.001 40.2864 456.612 36.6498 455.855 33.2567C455.097 29.8635 453.987 26.7806 452.586 24.184C451.186 21.5873 449.523 19.5279 447.693 18.1237C445.863 16.7194 443.902 15.9978 441.922 16H23.0782C21.0978 16 19.1365 16.7194 17.3066 18.1237C15.4767 19.5279 13.814 21.5873 12.4137 24.184C11.0133 26.7806 9.90262 29.8635 9.1453 33.2567C8.38797 36.6498 7.9988 40.2864 8.00001 43.9587V262.193C7.99512 267.99 8.96103 273.646 10.7672 278.379C12.5723 283.111 15.1274 286.685 18.0766 288.606C24.1246 292.505 29.3676 299.799 33.0776 309.476C36.7877 319.152 38.7805 330.731 38.7794 342.604C38.7794 343.3 38.7794 343.997 38.7794 344.659C38.5603 356.169 36.4682 367.288 32.7781 376.552C29.088 385.817 23.9726 392.794 18.1041 396.568C15.1537 398.495 12.5993 402.075 10.7941 406.814C8.98897 411.552 8.02224 417.214 8.02751 423.015V1706.04C8.02604 1709.71 8.41503 1713.35 9.17279 1716.74C9.93055 1720.14 11.0413 1723.22 12.4414 1725.82C13.8414 1728.41 15.5041 1730.47 17.3342 1731.88C19.1643 1733.28 21.1253 1734 23.1059 1734H441.94C444.633 1734 447.276 1732.66 449.596 1730.13C451.917 1727.59 453.831 1723.96 455.14 1719.6ZM64.3552 347.343C63.8743 347.352 63.4013 347.104 62.9936 346.628C62.5859 346.152 62.261 345.469 62.0569 344.659C61.8675 344.032 61.7723 343.322 61.7814 342.604C61.7799 341.977 61.8461 341.355 61.975 340.775C62.1039 340.195 62.2932 339.668 62.5325 339.224C62.7718 338.78 63.0562 338.429 63.3691 338.19C63.682 337.951 64.0173 337.829 64.3552 337.831H94.1823C94.8653 337.831 95.5203 338.334 96.0023 339.229C96.4843 340.124 96.7557 341.338 96.7557 342.604C96.7599 343.317 96.672 344.022 96.5 344.659C96.3771 345.145 96.2092 345.587 96.0051 345.967C95.5163 346.856 94.8585 347.351 94.1733 347.343H64.3552ZM115.444 347.343C114.962 347.352 114.489 347.104 114.081 346.628C113.674 346.152 113.349 345.469 113.145 344.659C112.96 344.029 112.865 343.321 112.87 342.604C112.866 341.975 112.93 341.352 113.058 340.769C113.186 340.187 113.376 339.658 113.615 339.214C113.855 338.769 114.14 338.418 114.454 338.18C114.768 337.943 115.105 337.824 115.444 337.831H145.298C145.636 337.829 145.972 337.951 146.284 338.19C146.597 338.429 146.881 338.78 147.121 339.224C147.36 339.668 147.55 340.195 147.678 340.775C147.807 341.355 147.873 341.977 147.872 342.604C147.876 343.317 147.788 344.022 147.616 344.659C147.496 345.144 147.331 345.587 147.13 345.967C146.64 346.853 145.982 347.347 145.298 347.343H115.444ZM166.532 347.343C166.051 347.35 165.578 347.101 165.171 346.625C164.763 346.149 164.438 345.467 164.233 344.659C164.048 344.029 163.953 343.321 163.958 342.604C163.957 341.971 164.025 341.345 164.157 340.761C164.289 340.178 164.483 339.649 164.727 339.207C164.967 338.761 165.253 338.409 165.568 338.173C165.883 337.937 166.22 337.82 166.559 337.831H196.386C196.725 337.829 197.06 337.951 197.373 338.19C197.686 338.429 197.97 338.78 198.209 339.224C198.448 339.668 198.638 340.195 198.767 340.775C198.896 341.355 198.961 341.977 198.96 342.604C199.036 343.317 198.948 344.022 198.776 344.659C198.659 345.148 198.505 345.591 198.299 345.967C197.809 346.853 197.152 347.347 196.468 347.343H166.532ZM217.629 347.343C217.146 347.353 216.672 347.105 216.263 346.63C215.853 346.154 215.526 345.47 215.321 344.659C215.139 344.028 215.047 343.32 215.055 342.604C215.054 341.977 215.12 341.355 215.249 340.775C215.378 340.195 215.567 339.668 215.807 339.224C216.046 338.78 216.33 338.429 216.643 338.19C216.956 337.951 217.291 337.829 217.629 337.831H247.465C247.803 337.831 248.137 337.954 248.449 338.195C248.761 338.435 249.044 338.786 249.282 339.23C249.521 339.673 249.709 340.2 249.838 340.779C249.966 341.358 250.031 341.978 250.03 342.604C250.032 343.319 249.941 344.023 249.765 344.659C249.648 345.148 249.484 345.591 249.279 345.967C248.964 346.41 248.578 346.759 248.163 346.995C247.748 347.232 247.311 347.35 246.873 347.343H217.629ZM268.718 347.343C268.236 347.354 267.762 347.107 267.354 346.63C266.946 346.154 266.621 345.47 266.418 344.659C266.229 344.032 266.134 343.322 266.144 342.604C266.141 341.335 266.408 340.115 266.886 339.207C267.378 338.327 268.034 337.834 268.718 337.831H298.544C299.227 337.831 299.882 338.334 300.365 339.229C300.847 340.124 301.119 341.338 301.119 342.604C301.117 343.875 300.848 345.095 300.367 346.001C299.878 346.887 299.22 347.381 298.535 347.377L268.718 347.343ZM319.806 347.343C319.324 347.352 318.851 347.104 318.444 346.628C318.036 346.152 317.711 345.469 317.507 344.659C317.317 344.032 317.222 343.322 317.232 342.604C317.231 341.977 317.296 341.355 317.425 340.775C317.554 340.195 317.744 339.668 317.983 339.224C318.222 338.78 318.507 338.429 318.82 338.19C319.132 337.951 319.468 337.829 319.806 337.831H349.633C350.315 337.831 350.97 338.334 351.453 339.229C351.936 340.124 352.207 341.338 352.207 342.604C352.211 343.317 352.123 344.022 351.95 344.659C351.827 345.145 351.66 345.587 351.456 345.967C350.967 346.856 350.308 347.351 349.624 347.343H319.806ZM370.894 347.343C370.413 347.352 369.94 347.104 369.532 346.628C369.124 346.152 368.799 345.469 368.595 344.659C368.41 344.029 368.315 343.321 368.32 342.604C368.316 341.975 368.38 341.352 368.508 340.769C368.637 340.187 368.826 339.658 369.066 339.214C369.306 338.769 369.592 338.418 369.905 338.18C370.219 337.943 370.555 337.824 370.894 337.831H400.721C401.059 337.829 401.395 337.951 401.707 338.19C402.02 338.429 402.305 388.78 402.544 339.224C402.783 339.668 402.973 340.195 403.102 340.775C403.231 341.355 403.296 341.977 403.295 342.604C403.299 343.317 403.212 344.022 403.039 344.659C402.919 345.144 402.755 345.587 402.553 345.967C402.064 346.856 401.406 347.351 400.721 347.343H370.894Z",
1814
+ d: "M4 148.91C17.835 157.803 27 173.331 27 191C27 208.669 17.835 224.197 4 233.09V1142C4 1150.84 11.1634 1158 20 1158H467C475.837 1158 483 1150.84 483 1142V233.09C469.165 224.197 460 208.669 460 191C460 173.331 469.165 157.803 483 148.91V24C483 15.1635 475.837 8.00003 467 8H20C11.1634 8 4 15.1634 4 24V148.91ZM407.5 191.5C407.5 189.015 409.515 187 412 187H439C441.485 187 443.5 189.015 443.5 191.5C443.5 193.985 441.485 196 439 196H412C409.515 196 407.5 193.985 407.5 191.5ZM355.5 191.5C355.5 189.015 357.515 187 360 187H387C389.485 187 391.5 189.015 391.5 191.5C391.5 193.985 389.485 196 387 196H360C357.515 196 355.5 193.985 355.5 191.5ZM303.5 191.5C303.5 189.015 305.515 187 308 187H335C337.485 187 339.5 189.015 339.5 191.5C339.5 193.985 337.485 196 335 196H308C305.515 196 303.5 193.985 303.5 191.5ZM251.5 191.5C251.5 189.015 253.515 187 256 187H283C285.485 187 287.5 189.015 287.5 191.5C287.5 193.985 285.485 196 283 196H256C253.515 196 251.5 193.985 251.5 191.5ZM199.5 191.5C199.5 189.015 201.515 187 204 187H231C233.485 187 235.5 189.015 235.5 191.5C235.5 193.985 233.485 196 231 196H204C201.515 196 199.5 193.985 199.5 191.5ZM147.5 191.5C147.5 189.015 149.515 187 152 187H179C181.485 187 183.5 189.015 183.5 191.5C183.5 193.985 181.485 196 179 196H152C149.515 196 147.5 193.985 147.5 191.5ZM95.5 191.5C95.5 189.015 97.5147 187 100 187H127C129.485 187 131.5 189.015 131.5 191.5C131.5 193.985 129.485 196 127 196H100C97.5147 196 95.5 193.985 95.5 191.5ZM43.5 191.5C43.5 189.015 45.5147 187 48 187H75C77.4853 187 79.5 189.015 79.5 191.5C79.5 193.985 77.4853 196 75 196H48C45.5147 196 43.5 193.985 43.5 191.5Z",
1815
1815
  fill: "white"
1816
1816
  }
1817
1817
  ) }),
1818
1818
  /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
1819
1819
  "filter",
1820
1820
  {
1821
- id: "filter0_dd_156_32115",
1822
- x: "0",
1823
- y: "0",
1824
- width: "465",
1825
- height: "1750",
1821
+ id: "filter0_dd_8563_16188_vert",
1822
+ x: "-10",
1823
+ y: "-10",
1824
+ width: "515",
1825
+ height: "1190",
1826
1826
  filterUnits: "userSpaceOnUse",
1827
1827
  colorInterpolationFilters: "sRGB",
1828
1828
  children: [
@@ -1839,21 +1839,8 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1839
1839
  /* @__PURE__ */ jsxRuntime.jsx("feOffset", {}),
1840
1840
  /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "1" }),
1841
1841
  /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
1842
- /* @__PURE__ */ jsxRuntime.jsx(
1843
- "feColorMatrix",
1844
- {
1845
- type: "matrix",
1846
- values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0"
1847
- }
1848
- ),
1849
- /* @__PURE__ */ jsxRuntime.jsx(
1850
- "feBlend",
1851
- {
1852
- mode: "normal",
1853
- in2: "BackgroundImageFix",
1854
- result: "effect1_dropShadow_156_32115"
1855
- }
1856
- ),
1842
+ /* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0" }),
1843
+ /* @__PURE__ */ jsxRuntime.jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_8563_16188_vert" }),
1857
1844
  /* @__PURE__ */ jsxRuntime.jsx(
1858
1845
  "feColorMatrix",
1859
1846
  {
@@ -1863,22 +1850,16 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1863
1850
  result: "hardAlpha"
1864
1851
  }
1865
1852
  ),
1866
- /* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "8" }),
1867
- /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "8" }),
1853
+ /* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "4" }),
1854
+ /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "4" }),
1868
1855
  /* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
1869
- /* @__PURE__ */ jsxRuntime.jsx(
1870
- "feColorMatrix",
1871
- {
1872
- type: "matrix",
1873
- values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0"
1874
- }
1875
- ),
1856
+ /* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" }),
1876
1857
  /* @__PURE__ */ jsxRuntime.jsx(
1877
1858
  "feBlend",
1878
1859
  {
1879
1860
  mode: "normal",
1880
- in2: "effect1_dropShadow_156_32115",
1881
- result: "effect2_dropShadow_156_32115"
1861
+ in2: "effect1_dropShadow_8563_16188_vert",
1862
+ result: "effect2_dropShadow_8563_16188_vert"
1882
1863
  }
1883
1864
  ),
1884
1865
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1886,7 +1867,7 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1886
1867
  {
1887
1868
  mode: "normal",
1888
1869
  in: "SourceGraphic",
1889
- in2: "effect2_dropShadow_156_32115",
1870
+ in2: "effect2_dropShadow_8563_16188_vert",
1890
1871
  result: "shape"
1891
1872
  }
1892
1873
  )
@@ -2156,11 +2137,13 @@ var useStyles7 = reactComponents.makeStyles({
2156
2137
  },
2157
2138
  // Desktop: vertical column list
2158
2139
  menuList: {
2140
+ height: "100%",
2159
2141
  display: "flex",
2160
2142
  flexDirection: "column",
2161
- justifyContent: "space-around",
2143
+ justifyContent: "space-between",
2162
2144
  // Tablet + Mobile: horizontal scroll row
2163
2145
  [`@media (${BP_TABLET2})`]: {
2146
+ justifyContent: "space-around",
2164
2147
  flexDirection: "row",
2165
2148
  overflowX: "auto",
2166
2149
  overflowY: "visible",
@@ -2171,7 +2154,8 @@ var useStyles7 = reactComponents.makeStyles({
2171
2154
  scrollbarWidth: "thin"
2172
2155
  },
2173
2156
  [`@media (${BP_MOBILE2})`]: {
2174
- scrollbarWidth: "none"
2157
+ scrollbarWidth: "none",
2158
+ justifyContent: "space-around"
2175
2159
  }
2176
2160
  },
2177
2161
  // Desktop: full-width horizontal row (icon left, text right)
@@ -2180,7 +2164,7 @@ var useStyles7 = reactComponents.makeStyles({
2180
2164
  flexDirection: "row",
2181
2165
  alignItems: "center",
2182
2166
  justifyContent: "flex-start",
2183
- padding: "12px 16px",
2167
+ padding: reactComponents.tokens.spacingHorizontalS,
2184
2168
  borderRadius: reactComponents.tokens.borderRadiusMedium,
2185
2169
  cursor: "pointer",
2186
2170
  textAlign: "left",
@@ -2190,6 +2174,7 @@ var useStyles7 = reactComponents.makeStyles({
2190
2174
  border: "none",
2191
2175
  gap: "12px",
2192
2176
  width: "100%",
2177
+ height: "100%",
2193
2178
  "&:hover": {
2194
2179
  backgroundColor: brandColors["140"]
2195
2180
  },
@@ -2243,8 +2228,8 @@ var useStyles7 = reactComponents.makeStyles({
2243
2228
  }
2244
2229
  },
2245
2230
  logo: {
2246
- height: "32px",
2247
- width: "32px",
2231
+ height: "35px",
2232
+ width: "35px",
2248
2233
  flexShrink: 0,
2249
2234
  objectFit: "contain",
2250
2235
  [`@media (${BP_TABLET2})`]: {
@@ -2294,7 +2279,7 @@ var useStyles7 = reactComponents.makeStyles({
2294
2279
  WebkitBoxOrient: "vertical",
2295
2280
  overflow: "hidden",
2296
2281
  textOverflow: "ellipsis",
2297
- lineHeight: "1.4",
2282
+ lineHeight: "18px",
2298
2283
  // Tablet: 1-line clamp, compact
2299
2284
  [`@media (${BP_TABLET2})`]: {
2300
2285
  fontSize: reactComponents.tokens.fontSizeBase100,
@@ -2355,82 +2340,71 @@ var CardServiceMenu = ({
2355
2340
  const displayItems = isOverflow ? menuItems.slice(0, MAX_ITEMS - 1) : menuItems;
2356
2341
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2357
2342
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: reactComponents.mergeClasses(styles.card, className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.menuList, children: [
2358
- isLoading ? Array.from({ length: skeletonCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
2359
- /* @__PURE__ */ jsxRuntime.jsxs(
2360
- "div",
2343
+ isLoading ? Array.from({ length: skeletonCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(React__default.default.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
2344
+ "div",
2345
+ {
2346
+ className: reactComponents.mergeClasses(
2347
+ styles.menuItem,
2348
+ styles.skeletonOverride
2349
+ ),
2350
+ children: [
2351
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
2352
+ reactComponents.SkeletonItem,
2353
+ {
2354
+ className: styles.logo,
2355
+ style: { borderRadius: "50%" }
2356
+ }
2357
+ ) }) }),
2358
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2359
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
2360
+ reactComponents.SkeletonItem,
2361
+ {
2362
+ style: { width: "60%", height: "16px" }
2363
+ }
2364
+ ) }),
2365
+ showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { className: styles.description, children: /* @__PURE__ */ jsxRuntime.jsx(
2366
+ reactComponents.SkeletonItem,
2367
+ {
2368
+ style: {
2369
+ width: "90%",
2370
+ height: "12px",
2371
+ marginTop: "4px"
2372
+ }
2373
+ }
2374
+ ) })
2375
+ ] })
2376
+ ]
2377
+ }
2378
+ ) }, `skeleton-${index}`)) : displayItems.map((item, index) => {
2379
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
2380
+ reactComponents.Button,
2361
2381
  {
2362
- className: reactComponents.mergeClasses(
2363
- styles.menuItem,
2364
- styles.skeletonOverride
2365
- ),
2382
+ className: getMenuItemClass(item.id),
2383
+ onClick: () => onServiceClick?.(item.id),
2384
+ "aria-label": item.name,
2366
2385
  children: [
2367
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
2368
- reactComponents.SkeletonItem,
2386
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
2387
+ "img",
2369
2388
  {
2370
- className: styles.logo,
2371
- style: { borderRadius: "50%" }
2389
+ src: item.imageUrl,
2390
+ alt: item.name,
2391
+ className: styles.logo
2372
2392
  }
2373
- ) }) }),
2393
+ ) }),
2374
2394
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2375
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
2376
- reactComponents.SkeletonItem,
2377
- {
2378
- style: { width: "60%", height: "16px" }
2379
- }
2380
- ) }),
2381
- showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { className: styles.description, children: /* @__PURE__ */ jsxRuntime.jsx(
2382
- reactComponents.SkeletonItem,
2395
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: item.name }),
2396
+ showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
2397
+ MenuItemDescription,
2383
2398
  {
2384
- style: {
2385
- width: "90%",
2386
- height: "12px",
2387
- marginTop: "4px"
2388
- }
2399
+ description: item.description,
2400
+ className: styles.description
2389
2401
  }
2390
- ) })
2402
+ )
2391
2403
  ] })
2392
2404
  ]
2393
- }
2394
- ),
2395
- index < skeletonCount - 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2396
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
2397
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
2398
- ] })
2399
- ] }, `skeleton-${index}`)) : displayItems.map((item, index) => {
2400
- return /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
2401
- /* @__PURE__ */ jsxRuntime.jsxs(
2402
- reactComponents.Button,
2403
- {
2404
- className: getMenuItemClass(item.id),
2405
- onClick: () => onServiceClick?.(item.id),
2406
- "aria-label": item.name,
2407
- children: [
2408
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
2409
- "img",
2410
- {
2411
- src: item.imageUrl,
2412
- alt: item.name,
2413
- className: styles.logo
2414
- }
2415
- ) }),
2416
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2417
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
2418
- showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
2419
- MenuItemDescription,
2420
- {
2421
- description: item.description,
2422
- className: styles.description
2423
- }
2424
- )
2425
- ] })
2426
- ]
2427
- }
2428
- ),
2429
- (index < displayItems.length - 1 || isOverflow) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2430
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
2431
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
2432
- ] })
2433
- ] }, item.id);
2405
+ },
2406
+ index
2407
+ ) });
2434
2408
  }),
2435
2409
  !isLoading && isOverflow && /* @__PURE__ */ jsxRuntime.jsxs(
2436
2410
  reactComponents.Button,
@@ -2448,7 +2422,7 @@ var CardServiceMenu = ({
2448
2422
  }
2449
2423
  ) }) }),
2450
2424
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2451
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: mergedLabels.otherLabel }),
2425
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.otherLabel }),
2452
2426
  showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
2453
2427
  MenuItemDescription,
2454
2428
  {
@@ -2628,6 +2602,1020 @@ DatePickerInput.displayName = "DatePickerInput";
2628
2602
  var DatePickerInput_default = DatePickerInput;
2629
2603
 
2630
2604
  // src/components/InputDynamic/InputDynamic.constants.ts
2605
+ var CONTROL_KEYS = [
2606
+ "Backspace",
2607
+ "Delete",
2608
+ "Enter",
2609
+ "Tab",
2610
+ "Escape",
2611
+ "ArrowLeft",
2612
+ "ArrowRight",
2613
+ "ArrowUp",
2614
+ "ArrowDown",
2615
+ "Home",
2616
+ "End",
2617
+ "Shift",
2618
+ "Control",
2619
+ "Alt",
2620
+ "Meta",
2621
+ "CapsLock",
2622
+ "F1",
2623
+ "F2",
2624
+ "F3",
2625
+ "F4",
2626
+ "F5",
2627
+ "F6",
2628
+ "F7",
2629
+ "F8",
2630
+ "F9",
2631
+ "F10",
2632
+ "F11",
2633
+ "F12"
2634
+ ];
2635
+ var PHONE_MIN_DIGITS = 4;
2636
+ var PHONE_MAX_DIGITS = 15;
2637
+ var EMAIL_REGEX = /^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/i;
2638
+ var DIGITS_ONLY_REGEX = /^[0-9]+$/;
2639
+ var stripNonDigits = (value) => value.replace(/\D/g, "");
2640
+ var removeLeadingZeroAfterDialCode = (value, knownDialCode) => {
2641
+ if (!value) return value;
2642
+ const str = String(value);
2643
+ if (knownDialCode) {
2644
+ if (str.startsWith(knownDialCode) && str[knownDialCode.length] === "0") {
2645
+ return knownDialCode + str.slice(knownDialCode.length + 1);
2646
+ }
2647
+ return str;
2648
+ }
2649
+ const match = str.match(/^(\d{1,4})(0)(\d+)$/);
2650
+ if (match) return match[1] + match[3];
2651
+ return str;
2652
+ };
2653
+ var normalizeRawPhoneInput = (value) => {
2654
+ if (!value) return value;
2655
+ const trimmed = value.trim();
2656
+ if (trimmed.startsWith("+")) {
2657
+ const digits = stripNonDigits(trimmed.slice(1));
2658
+ return "+" + digits;
2659
+ }
2660
+ return stripNonDigits(trimmed);
2661
+ };
2662
+ var COUNTRY_DIAL_CODES = {
2663
+ AC: "247",
2664
+ AD: "376",
2665
+ AE: "971",
2666
+ AF: "93",
2667
+ AG: "1268",
2668
+ AI: "1264",
2669
+ AL: "355",
2670
+ AM: "374",
2671
+ AO: "244",
2672
+ AQ: "672",
2673
+ AR: "54",
2674
+ AS: "1684",
2675
+ AT: "43",
2676
+ AU: "61",
2677
+ AW: "297",
2678
+ AX: "358",
2679
+ AZ: "994",
2680
+ BA: "387",
2681
+ BB: "1246",
2682
+ BD: "880",
2683
+ BE: "32",
2684
+ BF: "226",
2685
+ BG: "359",
2686
+ BH: "973",
2687
+ BI: "257",
2688
+ BJ: "229",
2689
+ BL: "590",
2690
+ BM: "1441",
2691
+ BN: "673",
2692
+ BO: "591",
2693
+ BQ: "599",
2694
+ BR: "55",
2695
+ BS: "1242",
2696
+ BT: "975",
2697
+ BW: "267",
2698
+ BY: "375",
2699
+ BZ: "501",
2700
+ CA: "1",
2701
+ CC: "61",
2702
+ CD: "243",
2703
+ CF: "236",
2704
+ CG: "242",
2705
+ CH: "41",
2706
+ CI: "225",
2707
+ CK: "682",
2708
+ CL: "56",
2709
+ CM: "237",
2710
+ CN: "86",
2711
+ CO: "57",
2712
+ CR: "506",
2713
+ CU: "53",
2714
+ CV: "238",
2715
+ CW: "599",
2716
+ CX: "61",
2717
+ CY: "357",
2718
+ CZ: "420",
2719
+ DE: "49",
2720
+ DJ: "253",
2721
+ DK: "45",
2722
+ DM: "1767",
2723
+ DO: "1809",
2724
+ DZ: "213",
2725
+ EC: "593",
2726
+ EE: "372",
2727
+ EG: "20",
2728
+ EH: "212",
2729
+ ER: "291",
2730
+ ES: "34",
2731
+ ET: "251",
2732
+ FI: "358",
2733
+ FJ: "679",
2734
+ FK: "500",
2735
+ FM: "691",
2736
+ FO: "298",
2737
+ FR: "33",
2738
+ GA: "241",
2739
+ GB: "44",
2740
+ GD: "1473",
2741
+ GE: "995",
2742
+ GF: "594",
2743
+ GG: "44",
2744
+ GH: "233",
2745
+ GI: "350",
2746
+ GL: "299",
2747
+ GM: "220",
2748
+ GN: "224",
2749
+ GP: "590",
2750
+ GQ: "240",
2751
+ GR: "30",
2752
+ GS: "500",
2753
+ GT: "502",
2754
+ GU: "1671",
2755
+ GW: "245",
2756
+ GY: "592",
2757
+ HK: "852",
2758
+ HM: "672",
2759
+ HN: "504",
2760
+ HR: "385",
2761
+ HT: "509",
2762
+ HU: "36",
2763
+ ID: "62",
2764
+ IE: "353",
2765
+ IL: "972",
2766
+ IM: "44",
2767
+ IN: "91",
2768
+ IO: "246",
2769
+ IQ: "964",
2770
+ IR: "98",
2771
+ IS: "354",
2772
+ IT: "39",
2773
+ JE: "44",
2774
+ JM: "1876",
2775
+ JO: "962",
2776
+ JP: "81",
2777
+ KE: "254",
2778
+ KG: "996",
2779
+ KH: "855",
2780
+ KI: "686",
2781
+ KM: "269",
2782
+ KN: "1869",
2783
+ KP: "850",
2784
+ KR: "82",
2785
+ KW: "965",
2786
+ KY: "1345",
2787
+ KZ: "7",
2788
+ LA: "856",
2789
+ LB: "961",
2790
+ LC: "1758",
2791
+ LI: "423",
2792
+ LK: "94",
2793
+ LR: "231",
2794
+ LS: "266",
2795
+ LT: "370",
2796
+ LU: "352",
2797
+ LV: "371",
2798
+ LY: "218",
2799
+ MA: "212",
2800
+ MC: "377",
2801
+ MD: "373",
2802
+ ME: "382",
2803
+ MF: "590",
2804
+ MG: "261",
2805
+ MH: "692",
2806
+ MK: "389",
2807
+ ML: "223",
2808
+ MM: "95",
2809
+ MN: "976",
2810
+ MO: "853",
2811
+ MP: "1670",
2812
+ MQ: "596",
2813
+ MR: "222",
2814
+ MS: "1664",
2815
+ MT: "356",
2816
+ MU: "230",
2817
+ MV: "960",
2818
+ MW: "265",
2819
+ MX: "52",
2820
+ MY: "60",
2821
+ MZ: "258",
2822
+ NA: "264",
2823
+ NC: "687",
2824
+ NE: "227",
2825
+ NF: "672",
2826
+ NG: "234",
2827
+ NI: "505",
2828
+ NL: "31",
2829
+ NO: "47",
2830
+ NP: "977",
2831
+ NR: "674",
2832
+ NU: "683",
2833
+ NZ: "64",
2834
+ OM: "968",
2835
+ PA: "507",
2836
+ PE: "51",
2837
+ PF: "689",
2838
+ PG: "675",
2839
+ PH: "63",
2840
+ PK: "92",
2841
+ PL: "48",
2842
+ PM: "508",
2843
+ PR: "1787",
2844
+ PS: "970",
2845
+ PT: "351",
2846
+ PW: "680",
2847
+ PY: "595",
2848
+ QA: "974",
2849
+ RE: "262",
2850
+ RO: "40",
2851
+ RS: "381",
2852
+ RU: "7",
2853
+ RW: "250",
2854
+ SA: "966",
2855
+ SB: "677",
2856
+ SC: "248",
2857
+ SD: "249",
2858
+ SE: "46",
2859
+ SG: "65",
2860
+ SH: "290",
2861
+ SI: "386",
2862
+ SJ: "47",
2863
+ SK: "421",
2864
+ SL: "232",
2865
+ SM: "378",
2866
+ SN: "221",
2867
+ SO: "252",
2868
+ SR: "597",
2869
+ SS: "211",
2870
+ ST: "239",
2871
+ SV: "503",
2872
+ SX: "1721",
2873
+ SY: "963",
2874
+ SZ: "268",
2875
+ TC: "1649",
2876
+ TD: "235",
2877
+ TF: "262",
2878
+ TG: "228",
2879
+ TH: "66",
2880
+ TJ: "992",
2881
+ TK: "690",
2882
+ TL: "670",
2883
+ TM: "993",
2884
+ TN: "216",
2885
+ TO: "676",
2886
+ TR: "90",
2887
+ TT: "1868",
2888
+ TV: "688",
2889
+ TW: "886",
2890
+ TZ: "255",
2891
+ UA: "380",
2892
+ UG: "256",
2893
+ US: "1",
2894
+ UY: "598",
2895
+ UZ: "998",
2896
+ VA: "379",
2897
+ VC: "1784",
2898
+ VE: "58",
2899
+ VG: "1284",
2900
+ VI: "1340",
2901
+ VN: "84",
2902
+ VU: "678",
2903
+ WF: "681",
2904
+ WS: "685",
2905
+ YE: "967",
2906
+ YT: "262",
2907
+ ZA: "27",
2908
+ ZM: "260",
2909
+ ZW: "263"
2910
+ };
2911
+ var getDialCode = (isoCode) => {
2912
+ if (!isoCode) return null;
2913
+ return COUNTRY_DIAL_CODES[isoCode.toUpperCase()] ?? null;
2914
+ };
2915
+ var LOCAL_TRUNK_TO_DIAL = [
2916
+ { prefix: "08", dialCode: "62" }
2917
+ // ═══════════════════════════════════════════════════════════════════════
2918
+ // ASIA
2919
+ // ═══════════════════════════════════════════════════════════════════════
2920
+ // ── Indonesia (+62) ────────────────────────────────────────────────────
2921
+ // Telkomsel
2922
+ // { prefix: '0811', dialCode: '62' }, { prefix: '0812', dialCode: '62' },
2923
+ // { prefix: '0813', dialCode: '62' }, { prefix: '0821', dialCode: '62' },
2924
+ // { prefix: '0822', dialCode: '62' }, { prefix: '0823', dialCode: '62' },
2925
+ // { prefix: '0851', dialCode: '62' }, { prefix: '0852', dialCode: '62' },
2926
+ // { prefix: '0853', dialCode: '62' },
2927
+ // // Indosat Ooredoo
2928
+ // { prefix: '0814', dialCode: '62' }, { prefix: '0815', dialCode: '62' },
2929
+ // { prefix: '0816', dialCode: '62' }, { prefix: '0855', dialCode: '62' },
2930
+ // { prefix: '0856', dialCode: '62' }, { prefix: '0857', dialCode: '62' },
2931
+ // { prefix: '0858', dialCode: '62' },
2932
+ // // XL Axiata
2933
+ // { prefix: '0817', dialCode: '62' }, { prefix: '0818', dialCode: '62' },
2934
+ // { prefix: '0819', dialCode: '62' }, { prefix: '0859', dialCode: '62' },
2935
+ // { prefix: '0877', dialCode: '62' }, { prefix: '0878', dialCode: '62' },
2936
+ // // Axis
2937
+ // { prefix: '0831', dialCode: '62' }, { prefix: '0832', dialCode: '62' },
2938
+ // { prefix: '0833', dialCode: '62' }, { prefix: '0838', dialCode: '62' },
2939
+ // // Tri (3)
2940
+ // { prefix: '0895', dialCode: '62' }, { prefix: '0896', dialCode: '62' },
2941
+ // { prefix: '0897', dialCode: '62' }, { prefix: '0898', dialCode: '62' },
2942
+ // { prefix: '0899', dialCode: '62' },
2943
+ // // Smartfren
2944
+ // { prefix: '0881', dialCode: '62' }, { prefix: '0882', dialCode: '62' },
2945
+ // { prefix: '0883', dialCode: '62' }, { prefix: '0884', dialCode: '62' },
2946
+ // { prefix: '0885', dialCode: '62' }, { prefix: '0886', dialCode: '62' },
2947
+ // { prefix: '0887', dialCode: '62' }, { prefix: '0888', dialCode: '62' },
2948
+ // { prefix: '0889', dialCode: '62' },
2949
+ // // Byru / Hinet / other
2950
+ // { prefix: '0891', dialCode: '62' }, { prefix: '0892', dialCode: '62' },
2951
+ // { prefix: '0893', dialCode: '62' }, { prefix: '0894', dialCode: '62' },
2952
+ // // Fixed / PSTN area codes (trunk 0 + area code)
2953
+ // { prefix: '021', dialCode: '62' }, // Jakarta
2954
+ // { prefix: '022', dialCode: '62' }, // Bandung
2955
+ // { prefix: '024', dialCode: '62' }, // Semarang
2956
+ // { prefix: '031', dialCode: '62' }, // Surabaya
2957
+ // // ── Malaysia (+60) ─────────────────────────────────────────────────────
2958
+ // // Must appear before UK 2-char "01x" entries
2959
+ // { prefix: '010', dialCode: '60' }, // Maxis (010x)
2960
+ // { prefix: '011', dialCode: '60' }, // Celcom, Maxis, Digi, U Mobile
2961
+ // { prefix: '012', dialCode: '60' }, // Maxis
2962
+ // { prefix: '013', dialCode: '60' }, // Celcom
2963
+ // { prefix: '014', dialCode: '60' }, // Digi / U Mobile
2964
+ // { prefix: '015', dialCode: '60' }, // U Mobile
2965
+ // { prefix: '016', dialCode: '60' }, // Maxis
2966
+ // { prefix: '017', dialCode: '60' }, // Celcom
2967
+ // { prefix: '018', dialCode: '60' }, // Digi
2968
+ // { prefix: '019', dialCode: '60' }, // Maxis
2969
+ // // Fixed
2970
+ // { prefix: '03', dialCode: '60' }, // Kuala Lumpur / Selangor
2971
+ // // ── Japan (+81) ────────────────────────────────────────────────────────
2972
+ // { prefix: '070', dialCode: '81' }, // MVNO / data SIM
2973
+ // { prefix: '080', dialCode: '81' }, // Softbank / au / NTT Docomo
2974
+ // { prefix: '090', dialCode: '81' }, // NTT Docomo / au / Softbank
2975
+ // // ── China (+86) ────────────────────────────────────────────────────────
2976
+ // // China Mobile
2977
+ // { prefix: '0134', dialCode: '86' }, { prefix: '0135', dialCode: '86' },
2978
+ // { prefix: '0136', dialCode: '86' }, { prefix: '0137', dialCode: '86' },
2979
+ // { prefix: '0138', dialCode: '86' }, { prefix: '0139', dialCode: '86' },
2980
+ // { prefix: '0147', dialCode: '86' }, { prefix: '0150', dialCode: '86' },
2981
+ // { prefix: '0151', dialCode: '86' }, { prefix: '0152', dialCode: '86' },
2982
+ // { prefix: '0157', dialCode: '86' }, { prefix: '0158', dialCode: '86' },
2983
+ // { prefix: '0159', dialCode: '86' }, { prefix: '0165', dialCode: '86' },
2984
+ // { prefix: '0172', dialCode: '86' }, { prefix: '0178', dialCode: '86' },
2985
+ // { prefix: '0182', dialCode: '86' }, { prefix: '0183', dialCode: '86' },
2986
+ // { prefix: '0184', dialCode: '86' }, { prefix: '0187', dialCode: '86' },
2987
+ // { prefix: '0188', dialCode: '86' },
2988
+ // // China Unicom
2989
+ // { prefix: '0130', dialCode: '86' }, { prefix: '0131', dialCode: '86' },
2990
+ // { prefix: '0132', dialCode: '86' }, { prefix: '0145', dialCode: '86' },
2991
+ // { prefix: '0155', dialCode: '86' }, { prefix: '0156', dialCode: '86' },
2992
+ // { prefix: '0166', dialCode: '86' }, { prefix: '0167', dialCode: '86' },
2993
+ // { prefix: '0175', dialCode: '86' }, { prefix: '0176', dialCode: '86' },
2994
+ // { prefix: '0185', dialCode: '86' }, { prefix: '0186', dialCode: '86' },
2995
+ // // China Telecom
2996
+ // { prefix: '0133', dialCode: '86' }, { prefix: '0149', dialCode: '86' },
2997
+ // { prefix: '0153', dialCode: '86' }, { prefix: '0162', dialCode: '86' },
2998
+ // { prefix: '0173', dialCode: '86' }, { prefix: '0174', dialCode: '86' },
2999
+ // { prefix: '0177', dialCode: '86' }, { prefix: '0180', dialCode: '86' },
3000
+ // { prefix: '0181', dialCode: '86' }, { prefix: '0189', dialCode: '86' },
3001
+ // // Note: China uses 0 trunk then 11-digit mobile (0 + 10-digit); match on 4-char prefix
3002
+ // // ── India (+91) ────────────────────────────────────────────────────────
3003
+ // { prefix: '060', dialCode: '91' }, { prefix: '061', dialCode: '91' },
3004
+ // { prefix: '062', dialCode: '91' }, { prefix: '063', dialCode: '91' },
3005
+ // { prefix: '064', dialCode: '91' }, { prefix: '065', dialCode: '91' },
3006
+ // { prefix: '066', dialCode: '91' }, { prefix: '067', dialCode: '91' },
3007
+ // { prefix: '068', dialCode: '91' }, { prefix: '069', dialCode: '91' },
3008
+ // { prefix: '070', dialCode: '91' }, { prefix: '071', dialCode: '91' },
3009
+ // { prefix: '072', dialCode: '91' }, { prefix: '073', dialCode: '91' },
3010
+ // { prefix: '074', dialCode: '91' }, { prefix: '075', dialCode: '91' },
3011
+ // { prefix: '076', dialCode: '91' }, { prefix: '077', dialCode: '91' },
3012
+ // { prefix: '078', dialCode: '91' }, { prefix: '079', dialCode: '91' },
3013
+ // { prefix: '080', dialCode: '91' }, { prefix: '081', dialCode: '91' },
3014
+ // { prefix: '082', dialCode: '91' }, { prefix: '083', dialCode: '91' },
3015
+ // { prefix: '084', dialCode: '91' }, { prefix: '085', dialCode: '91' },
3016
+ // { prefix: '086', dialCode: '91' }, { prefix: '087', dialCode: '91' },
3017
+ // { prefix: '088', dialCode: '91' }, { prefix: '089', dialCode: '91' },
3018
+ // { prefix: '090', dialCode: '91' }, { prefix: '091', dialCode: '91' },
3019
+ // { prefix: '092', dialCode: '91' }, { prefix: '093', dialCode: '91' },
3020
+ // { prefix: '094', dialCode: '91' }, { prefix: '095', dialCode: '91' },
3021
+ // { prefix: '096', dialCode: '91' }, { prefix: '097', dialCode: '91' },
3022
+ // { prefix: '098', dialCode: '91' }, { prefix: '099', dialCode: '91' },
3023
+ // // ── Pakistan (+92) ─────────────────────────────────────────────────────
3024
+ // { prefix: '0300', dialCode: '92' }, { prefix: '0301', dialCode: '92' },
3025
+ // { prefix: '0302', dialCode: '92' }, { prefix: '0303', dialCode: '92' },
3026
+ // { prefix: '0304', dialCode: '92' }, { prefix: '0305', dialCode: '92' },
3027
+ // { prefix: '0306', dialCode: '92' }, { prefix: '0307', dialCode: '92' },
3028
+ // { prefix: '0308', dialCode: '92' }, { prefix: '0309', dialCode: '92' },
3029
+ // { prefix: '0310', dialCode: '92' }, { prefix: '0311', dialCode: '92' },
3030
+ // { prefix: '0312', dialCode: '92' }, { prefix: '0313', dialCode: '92' },
3031
+ // { prefix: '0314', dialCode: '92' }, { prefix: '0315', dialCode: '92' },
3032
+ // { prefix: '0316', dialCode: '92' }, { prefix: '0317', dialCode: '92' },
3033
+ // { prefix: '0318', dialCode: '92' }, { prefix: '0319', dialCode: '92' },
3034
+ // { prefix: '0320', dialCode: '92' }, { prefix: '0321', dialCode: '92' },
3035
+ // { prefix: '0322', dialCode: '92' }, { prefix: '0323', dialCode: '92' },
3036
+ // { prefix: '0324', dialCode: '92' }, { prefix: '0325', dialCode: '92' },
3037
+ // { prefix: '0326', dialCode: '92' }, { prefix: '0327', dialCode: '92' },
3038
+ // { prefix: '0328', dialCode: '92' }, { prefix: '0329', dialCode: '92' },
3039
+ // { prefix: '0330', dialCode: '92' }, { prefix: '0331', dialCode: '92' },
3040
+ // { prefix: '0332', dialCode: '92' }, { prefix: '0333', dialCode: '92' },
3041
+ // { prefix: '0334', dialCode: '92' }, { prefix: '0335', dialCode: '92' },
3042
+ // { prefix: '0336', dialCode: '92' }, { prefix: '0337', dialCode: '92' },
3043
+ // { prefix: '0338', dialCode: '92' }, { prefix: '0339', dialCode: '92' },
3044
+ // { prefix: '0340', dialCode: '92' }, { prefix: '0341', dialCode: '92' },
3045
+ // { prefix: '0342', dialCode: '92' }, { prefix: '0343', dialCode: '92' },
3046
+ // { prefix: '0344', dialCode: '92' }, { prefix: '0345', dialCode: '92' },
3047
+ // { prefix: '0346', dialCode: '92' }, { prefix: '0347', dialCode: '92' },
3048
+ // { prefix: '0348', dialCode: '92' }, { prefix: '0349', dialCode: '92' },
3049
+ // // ── Bangladesh (+880) ──────────────────────────────────────────────────
3050
+ // { prefix: '01311', dialCode: '880' }, { prefix: '01312', dialCode: '880' },
3051
+ // { prefix: '01313', dialCode: '880' }, { prefix: '01314', dialCode: '880' },
3052
+ // { prefix: '01315', dialCode: '880' }, { prefix: '01316', dialCode: '880' },
3053
+ // { prefix: '01317', dialCode: '880' }, { prefix: '01318', dialCode: '880' },
3054
+ // { prefix: '01319', dialCode: '880' }, // Teletalk
3055
+ // { prefix: '01400', dialCode: '880' }, { prefix: '01401', dialCode: '880' },
3056
+ // { prefix: '01402', dialCode: '880' }, { prefix: '01403', dialCode: '880' },
3057
+ // { prefix: '01404', dialCode: '880' }, { prefix: '01405', dialCode: '880' }, // Robi
3058
+ // { prefix: '01500', dialCode: '880' }, { prefix: '01501', dialCode: '880' },
3059
+ // { prefix: '01502', dialCode: '880' }, { prefix: '01503', dialCode: '880' },
3060
+ // { prefix: '01504', dialCode: '880' }, { prefix: '01505', dialCode: '880' }, // Banglalink
3061
+ // { prefix: '01600', dialCode: '880' }, { prefix: '01601', dialCode: '880' },
3062
+ // { prefix: '01602', dialCode: '880' }, { prefix: '01603', dialCode: '880' }, // Robi
3063
+ // { prefix: '01700', dialCode: '880' }, { prefix: '01701', dialCode: '880' },
3064
+ // { prefix: '01702', dialCode: '880' }, { prefix: '01703', dialCode: '880' }, // Grameenphone
3065
+ // { prefix: '01711', dialCode: '880' }, { prefix: '01712', dialCode: '880' },
3066
+ // { prefix: '01713', dialCode: '880' }, { prefix: '01714', dialCode: '880' },
3067
+ // { prefix: '01715', dialCode: '880' }, { prefix: '01716', dialCode: '880' },
3068
+ // { prefix: '01717', dialCode: '880' }, { prefix: '01718', dialCode: '880' },
3069
+ // { prefix: '01719', dialCode: '880' }, // Grameenphone
3070
+ // { prefix: '01811', dialCode: '880' }, { prefix: '01812', dialCode: '880' },
3071
+ // { prefix: '01813', dialCode: '880' }, { prefix: '01814', dialCode: '880' },
3072
+ // { prefix: '01815', dialCode: '880' }, { prefix: '01816', dialCode: '880' },
3073
+ // { prefix: '01817', dialCode: '880' }, { prefix: '01818', dialCode: '880' },
3074
+ // { prefix: '01819', dialCode: '880' }, // Robi
3075
+ // { prefix: '01911', dialCode: '880' }, { prefix: '01912', dialCode: '880' },
3076
+ // { prefix: '01913', dialCode: '880' }, { prefix: '01914', dialCode: '880' },
3077
+ // { prefix: '01915', dialCode: '880' }, { prefix: '01916', dialCode: '880' },
3078
+ // { prefix: '01917', dialCode: '880' }, { prefix: '01918', dialCode: '880' },
3079
+ // { prefix: '01919', dialCode: '880' }, // Banglalink
3080
+ // // ── Philippines (+63) ──────────────────────────────────────────────────
3081
+ // // Globe / TM
3082
+ // { prefix: '0817', dialCode: '63' }, { prefix: '0905', dialCode: '63' },
3083
+ // { prefix: '0906', dialCode: '63' }, { prefix: '0907', dialCode: '63' },
3084
+ // { prefix: '0908', dialCode: '63' }, { prefix: '0909', dialCode: '63' },
3085
+ // { prefix: '0910', dialCode: '63' }, { prefix: '0915', dialCode: '63' },
3086
+ // { prefix: '0916', dialCode: '63' }, { prefix: '0917', dialCode: '63' },
3087
+ // { prefix: '0926', dialCode: '63' }, { prefix: '0927', dialCode: '63' },
3088
+ // { prefix: '0935', dialCode: '63' }, { prefix: '0936', dialCode: '63' },
3089
+ // { prefix: '0937', dialCode: '63' }, { prefix: '0945', dialCode: '63' },
3090
+ // { prefix: '0953', dialCode: '63' }, { prefix: '0954', dialCode: '63' },
3091
+ // { prefix: '0955', dialCode: '63' }, { prefix: '0956', dialCode: '63' },
3092
+ // { prefix: '0965', dialCode: '63' }, { prefix: '0966', dialCode: '63' },
3093
+ // { prefix: '0967', dialCode: '63' }, { prefix: '0975', dialCode: '63' },
3094
+ // { prefix: '0976', dialCode: '63' }, { prefix: '0977', dialCode: '63' },
3095
+ // { prefix: '0978', dialCode: '63' }, { prefix: '0979', dialCode: '63' },
3096
+ // { prefix: '0995', dialCode: '63' }, { prefix: '0996', dialCode: '63' },
3097
+ // { prefix: '0997', dialCode: '63' },
3098
+ // // SMART / TNT
3099
+ // { prefix: '0813', dialCode: '63' }, { prefix: '0908', dialCode: '63' },
3100
+ // { prefix: '0911', dialCode: '63' }, { prefix: '0912', dialCode: '63' },
3101
+ // { prefix: '0913', dialCode: '63' }, { prefix: '0914', dialCode: '63' },
3102
+ // { prefix: '0918', dialCode: '63' }, { prefix: '0919', dialCode: '63' },
3103
+ // { prefix: '0920', dialCode: '63' }, { prefix: '0921', dialCode: '63' },
3104
+ // { prefix: '0928', dialCode: '63' }, { prefix: '0929', dialCode: '63' },
3105
+ // { prefix: '0930', dialCode: '63' }, { prefix: '0938', dialCode: '63' },
3106
+ // { prefix: '0939', dialCode: '63' }, { prefix: '0940', dialCode: '63' },
3107
+ // { prefix: '0946', dialCode: '63' }, { prefix: '0947', dialCode: '63' },
3108
+ // { prefix: '0948', dialCode: '63' }, { prefix: '0949', dialCode: '63' },
3109
+ // { prefix: '0950', dialCode: '63' }, { prefix: '0989', dialCode: '63' },
3110
+ // { prefix: '0998', dialCode: '63' }, { prefix: '0999', dialCode: '63' },
3111
+ // // DITO
3112
+ // { prefix: '0895', dialCode: '63' }, { prefix: '0896', dialCode: '63' },
3113
+ // { prefix: '0897', dialCode: '63' }, { prefix: '0898', dialCode: '63' },
3114
+ // { prefix: '0991', dialCode: '63' }, { prefix: '0992', dialCode: '63' },
3115
+ // { prefix: '0993', dialCode: '63' }, { prefix: '0994', dialCode: '63' },
3116
+ // // ── Vietnam (+84) ──────────────────────────────────────────────────────
3117
+ // // Viettel
3118
+ // { prefix: '032', dialCode: '84' }, { prefix: '033', dialCode: '84' },
3119
+ // { prefix: '034', dialCode: '84' }, { prefix: '035', dialCode: '84' },
3120
+ // { prefix: '036', dialCode: '84' }, { prefix: '037', dialCode: '84' },
3121
+ // { prefix: '038', dialCode: '84' }, { prefix: '039', dialCode: '84' },
3122
+ // { prefix: '086', dialCode: '84' }, { prefix: '096', dialCode: '84' },
3123
+ // { prefix: '097', dialCode: '84' }, { prefix: '098', dialCode: '84' },
3124
+ // // Mobifone
3125
+ // { prefix: '070', dialCode: '84' }, { prefix: '079', dialCode: '84' },
3126
+ // { prefix: '077', dialCode: '84' }, { prefix: '076', dialCode: '84' },
3127
+ // { prefix: '078', dialCode: '84' }, { prefix: '089', dialCode: '84' },
3128
+ // { prefix: '090', dialCode: '84' }, { prefix: '093', dialCode: '84' },
3129
+ // // Vinaphone
3130
+ // { prefix: '081', dialCode: '84' }, { prefix: '082', dialCode: '84' },
3131
+ // { prefix: '083', dialCode: '84' }, { prefix: '084', dialCode: '84' },
3132
+ // { prefix: '085', dialCode: '84' }, { prefix: '091', dialCode: '84' },
3133
+ // { prefix: '094', dialCode: '84' },
3134
+ // // Vietnamobile / Gmobile
3135
+ // { prefix: '052', dialCode: '84' }, { prefix: '056', dialCode: '84' },
3136
+ // { prefix: '058', dialCode: '84' }, { prefix: '059', dialCode: '84' },
3137
+ // { prefix: '092', dialCode: '84' }, { prefix: '099', dialCode: '84' },
3138
+ // // ── Thailand (+66) ─────────────────────────────────────────────────────
3139
+ // { prefix: '061', dialCode: '66' }, { prefix: '062', dialCode: '66' },
3140
+ // { prefix: '063', dialCode: '66' }, { prefix: '064', dialCode: '66' },
3141
+ // { prefix: '065', dialCode: '66' }, { prefix: '066', dialCode: '66' },
3142
+ // { prefix: '067', dialCode: '66' }, { prefix: '068', dialCode: '66' },
3143
+ // { prefix: '069', dialCode: '66' },
3144
+ // { prefix: '080', dialCode: '66' }, { prefix: '081', dialCode: '66' },
3145
+ // { prefix: '082', dialCode: '66' }, { prefix: '083', dialCode: '66' },
3146
+ // { prefix: '084', dialCode: '66' }, { prefix: '085', dialCode: '66' },
3147
+ // { prefix: '086', dialCode: '66' }, { prefix: '087', dialCode: '66' },
3148
+ // { prefix: '088', dialCode: '66' }, { prefix: '089', dialCode: '66' },
3149
+ // { prefix: '091', dialCode: '66' }, { prefix: '092', dialCode: '66' },
3150
+ // { prefix: '093', dialCode: '66' }, { prefix: '094', dialCode: '66' },
3151
+ // { prefix: '095', dialCode: '66' }, { prefix: '098', dialCode: '66' },
3152
+ // { prefix: '099', dialCode: '66' },
3153
+ // // ── South Korea (+82) ──────────────────────────────────────────────────
3154
+ // { prefix: '010', dialCode: '82' }, // all operators
3155
+ // { prefix: '016', dialCode: '82' }, // legacy KTF
3156
+ // { prefix: '017', dialCode: '82' }, // legacy SK Telecom
3157
+ // { prefix: '018', dialCode: '82' }, // legacy LG Telecom
3158
+ // { prefix: '019', dialCode: '82' }, // legacy Hansol
3159
+ // // ── Taiwan (+886) ──────────────────────────────────────────────────────
3160
+ // { prefix: '09', dialCode: '886' }, // all mobile operators
3161
+ // // ── Hong Kong (+852) ── (no trunk digit — all 8-digit numbers direct) ──
3162
+ // // No trunk prefix; local numbers start directly with 2,3,4,5,6,9
3163
+ // // Include common first digits for detection if needed:
3164
+ // { prefix: '5', dialCode: '852' }, { prefix: '6', dialCode: '852' },
3165
+ // { prefix: '9', dialCode: '852' },
3166
+ // // ── Macau (+853) ───────────────────────────────────────────────────────
3167
+ // { prefix: '6', dialCode: '853' },
3168
+ // // ── Singapore (+65) ── (no trunk digit) ───────────────────────────────
3169
+ // { prefix: '8', dialCode: '65' }, { prefix: '9', dialCode: '65' },
3170
+ // // ── Myanmar (+95) ──────────────────────────────────────────────────────
3171
+ // { prefix: '09', dialCode: '95' },
3172
+ // // ── Cambodia (+855) ────────────────────────────────────────────────────
3173
+ // { prefix: '010', dialCode: '855' }, { prefix: '011', dialCode: '855' },
3174
+ // { prefix: '012', dialCode: '855' }, { prefix: '015', dialCode: '855' },
3175
+ // { prefix: '016', dialCode: '855' }, { prefix: '017', dialCode: '855' },
3176
+ // { prefix: '018', dialCode: '855' }, { prefix: '069', dialCode: '855' },
3177
+ // { prefix: '070', dialCode: '855' }, { prefix: '071', dialCode: '855' },
3178
+ // { prefix: '077', dialCode: '855' }, { prefix: '078', dialCode: '855' },
3179
+ // { prefix: '085', dialCode: '855' }, { prefix: '086', dialCode: '855' },
3180
+ // { prefix: '087', dialCode: '855' }, { prefix: '088', dialCode: '855' },
3181
+ // { prefix: '089', dialCode: '855' }, { prefix: '090', dialCode: '855' },
3182
+ // { prefix: '092', dialCode: '855' }, { prefix: '095', dialCode: '855' },
3183
+ // { prefix: '096', dialCode: '855' }, { prefix: '097', dialCode: '855' },
3184
+ // { prefix: '098', dialCode: '855' },
3185
+ // // ── Sri Lanka (+94) ────────────────────────────────────────────────────
3186
+ // { prefix: '071', dialCode: '94' }, { prefix: '072', dialCode: '94' },
3187
+ // { prefix: '074', dialCode: '94' }, { prefix: '075', dialCode: '94' },
3188
+ // { prefix: '076', dialCode: '94' }, { prefix: '077', dialCode: '94' },
3189
+ // { prefix: '078', dialCode: '94' },
3190
+ // // ── Nepal (+977) ────────────────────────────────────────────────────────
3191
+ // { prefix: '097', dialCode: '977' }, { prefix: '098', dialCode: '977' },
3192
+ // // ── Afghanistan (+93) ──────────────────────────────────────────────────
3193
+ // { prefix: '070', dialCode: '93' }, { prefix: '071', dialCode: '93' },
3194
+ // { prefix: '072', dialCode: '93' }, { prefix: '073', dialCode: '93' },
3195
+ // { prefix: '074', dialCode: '93' }, { prefix: '075', dialCode: '93' },
3196
+ // { prefix: '076', dialCode: '93' }, { prefix: '077', dialCode: '93' },
3197
+ // { prefix: '078', dialCode: '93' }, { prefix: '079', dialCode: '93' },
3198
+ // // ── Iran (+98) ─────────────────────────────────────────────────────────
3199
+ // { prefix: '0901', dialCode: '98' }, { prefix: '0902', dialCode: '98' },
3200
+ // { prefix: '0903', dialCode: '98' }, { prefix: '0910', dialCode: '98' },
3201
+ // { prefix: '0911', dialCode: '98' }, { prefix: '0912', dialCode: '98' },
3202
+ // { prefix: '0913', dialCode: '98' }, { prefix: '0914', dialCode: '98' },
3203
+ // { prefix: '0915', dialCode: '98' }, { prefix: '0916', dialCode: '98' },
3204
+ // { prefix: '0917', dialCode: '98' }, { prefix: '0918', dialCode: '98' },
3205
+ // { prefix: '0919', dialCode: '98' }, { prefix: '0920', dialCode: '98' },
3206
+ // { prefix: '0930', dialCode: '98' }, { prefix: '0933', dialCode: '98' },
3207
+ // { prefix: '0935', dialCode: '98' }, { prefix: '0936', dialCode: '98' },
3208
+ // { prefix: '0937', dialCode: '98' }, { prefix: '0938', dialCode: '98' },
3209
+ // { prefix: '0939', dialCode: '98' }, { prefix: '0941', dialCode: '98' },
3210
+ // // ── Iraq (+964) ─────────────────────────────────────────────────────────
3211
+ // { prefix: '075', dialCode: '964' }, { prefix: '076', dialCode: '964' },
3212
+ // { prefix: '077', dialCode: '964' }, { prefix: '078', dialCode: '964' },
3213
+ // { prefix: '079', dialCode: '964' },
3214
+ // // ── Saudi Arabia (+966) ────────────────────────────────────────────────
3215
+ // { prefix: '05', dialCode: '966' }, // all mobile (050–059)
3216
+ // // ── UAE (+971) ─────────────────────────────────────────────────────────
3217
+ // { prefix: '050', dialCode: '971' }, { prefix: '052', dialCode: '971' },
3218
+ // { prefix: '054', dialCode: '971' }, { prefix: '055', dialCode: '971' },
3219
+ // { prefix: '056', dialCode: '971' }, { prefix: '058', dialCode: '971' },
3220
+ // // ── Kuwait (+965) ── (no trunk) ────────────────────────────────────────
3221
+ // { prefix: '5', dialCode: '965' }, { prefix: '6', dialCode: '965' },
3222
+ // { prefix: '9', dialCode: '965' },
3223
+ // // ── Qatar (+974) ── (no trunk) ─────────────────────────────────────────
3224
+ // { prefix: '3', dialCode: '974' }, { prefix: '5', dialCode: '974' },
3225
+ // { prefix: '6', dialCode: '974' }, { prefix: '7', dialCode: '974' },
3226
+ // // ── Bahrain (+973) ── (no trunk) ───────────────────────────────────────
3227
+ // { prefix: '3', dialCode: '973' }, { prefix: '6', dialCode: '973' },
3228
+ // // ── Oman (+968) ── (no trunk) ──────────────────────────────────────────
3229
+ // { prefix: '7', dialCode: '968' }, { prefix: '9', dialCode: '968' },
3230
+ // // ── Jordan (+962) ──────────────────────────────────────────────────────
3231
+ // { prefix: '077', dialCode: '962' }, { prefix: '078', dialCode: '962' },
3232
+ // { prefix: '079', dialCode: '962' },
3233
+ // // ── Lebanon (+961) ─────────────────────────────────────────────────────
3234
+ // { prefix: '03', dialCode: '961' }, { prefix: '07', dialCode: '961' },
3235
+ // { prefix: '08', dialCode: '961' }, { prefix: '09', dialCode: '961' },
3236
+ // // ── Israel (+972) ──────────────────────────────────────────────────────
3237
+ // { prefix: '050', dialCode: '972' }, { prefix: '051', dialCode: '972' },
3238
+ // { prefix: '052', dialCode: '972' }, { prefix: '053', dialCode: '972' },
3239
+ // { prefix: '054', dialCode: '972' }, { prefix: '055', dialCode: '972' },
3240
+ // { prefix: '056', dialCode: '972' }, { prefix: '057', dialCode: '972' },
3241
+ // { prefix: '058', dialCode: '972' }, { prefix: '059', dialCode: '972' },
3242
+ // // ── Turkey (+90) ───────────────────────────────────────────────────────
3243
+ // { prefix: '0530', dialCode: '90' }, { prefix: '0531', dialCode: '90' },
3244
+ // { prefix: '0532', dialCode: '90' }, { prefix: '0533', dialCode: '90' },
3245
+ // { prefix: '0534', dialCode: '90' }, { prefix: '0535', dialCode: '90' },
3246
+ // { prefix: '0536', dialCode: '90' }, { prefix: '0537', dialCode: '90' },
3247
+ // { prefix: '0538', dialCode: '90' }, { prefix: '0539', dialCode: '90' },
3248
+ // { prefix: '0540', dialCode: '90' }, { prefix: '0541', dialCode: '90' },
3249
+ // { prefix: '0542', dialCode: '90' }, { prefix: '0543', dialCode: '90' },
3250
+ // { prefix: '0544', dialCode: '90' }, { prefix: '0545', dialCode: '90' },
3251
+ // { prefix: '0546', dialCode: '90' }, { prefix: '0547', dialCode: '90' },
3252
+ // { prefix: '0548', dialCode: '90' }, { prefix: '0549', dialCode: '90' },
3253
+ // { prefix: '0550', dialCode: '90' }, { prefix: '0551', dialCode: '90' },
3254
+ // { prefix: '0552', dialCode: '90' }, { prefix: '0553', dialCode: '90' },
3255
+ // { prefix: '0554', dialCode: '90' }, { prefix: '0555', dialCode: '90' },
3256
+ // // ═══════════════════════════════════════════════════════════════════════
3257
+ // // EUROPE
3258
+ // // ═══════════════════════════════════════════════════════════════════════
3259
+ // // ── UK (+44) ── (2-char, intentionally lowest priority in short list) ──
3260
+ // { prefix: '07', dialCode: '44' }, // mobile
3261
+ // { prefix: '01', dialCode: '44' }, // geographic fixed
3262
+ // { prefix: '02', dialCode: '44' }, // geographic fixed (London 020)
3263
+ // { prefix: '03', dialCode: '44' }, // non-geographic
3264
+ // // ── Germany (+49) ─────────────────────────────────────────────────────
3265
+ // { prefix: '015', dialCode: '49' }, { prefix: '016', dialCode: '49' },
3266
+ // { prefix: '017', dialCode: '49' },
3267
+ // // ── France (+33) ──────────────────────────────────────────────────────
3268
+ // { prefix: '06', dialCode: '33' }, { prefix: '07', dialCode: '33' },
3269
+ // // ── Italy (+39) ───────────────────────────────────────────────────────
3270
+ // { prefix: '03', dialCode: '39' }, // mobile 3xx
3271
+ // // ── Spain (+34) ── (no trunk digit) ───────────────────────────────────
3272
+ // { prefix: '6', dialCode: '34' }, { prefix: '7', dialCode: '34' },
3273
+ // // ── Netherlands (+31) ─────────────────────────────────────────────────
3274
+ // { prefix: '06', dialCode: '31' },
3275
+ // // ── Belgium (+32) ─────────────────────────────────────────────────────
3276
+ // { prefix: '04', dialCode: '32' },
3277
+ // // ── Sweden (+46) ──────────────────────────────────────────────────────
3278
+ // { prefix: '07', dialCode: '46' },
3279
+ // // ── Norway (+47) ── (no trunk) ─────────────────────────────────────────
3280
+ // { prefix: '4', dialCode: '47' }, { prefix: '9', dialCode: '47' },
3281
+ // // ── Denmark (+45) ── (no trunk) ────────────────────────────────────────
3282
+ // { prefix: '2', dialCode: '45' }, { prefix: '3', dialCode: '45' },
3283
+ // { prefix: '4', dialCode: '45' }, { prefix: '5', dialCode: '45' },
3284
+ // { prefix: '6', dialCode: '45' }, { prefix: '7', dialCode: '45' },
3285
+ // { prefix: '8', dialCode: '45' }, { prefix: '9', dialCode: '45' },
3286
+ // // ── Finland (+358) ────────────────────────────────────────────────────
3287
+ // { prefix: '04', dialCode: '358' }, { prefix: '05', dialCode: '358' },
3288
+ // // ── Switzerland (+41) ─────────────────────────────────────────────────
3289
+ // { prefix: '075', dialCode: '41' }, { prefix: '076', dialCode: '41' },
3290
+ // { prefix: '077', dialCode: '41' }, { prefix: '078', dialCode: '41' },
3291
+ // { prefix: '079', dialCode: '41' },
3292
+ // // ── Austria (+43) ─────────────────────────────────────────────────────
3293
+ // { prefix: '064', dialCode: '43' }, { prefix: '065', dialCode: '43' },
3294
+ // { prefix: '066', dialCode: '43' }, { prefix: '068', dialCode: '43' },
3295
+ // // ── Poland (+48) ── (no trunk) ─────────────────────────────────────────
3296
+ // { prefix: '5', dialCode: '48' }, { prefix: '6', dialCode: '48' },
3297
+ // { prefix: '7', dialCode: '48' }, { prefix: '8', dialCode: '48' },
3298
+ // // ── Portugal (+351) ── (no trunk) ─────────────────────────────────────
3299
+ // { prefix: '9', dialCode: '351' },
3300
+ // // ── Czech Republic (+420) ── (no trunk) ────────────────────────────────
3301
+ // { prefix: '6', dialCode: '420' }, { prefix: '7', dialCode: '420' },
3302
+ // // ── Romania (+40) ─────────────────────────────────────────────────────
3303
+ // { prefix: '07', dialCode: '40' },
3304
+ // // ── Hungary (+36) ─────────────────────────────────────────────────────
3305
+ // { prefix: '020', dialCode: '36' }, { prefix: '030', dialCode: '36' },
3306
+ // { prefix: '031', dialCode: '36' }, { prefix: '070', dialCode: '36' },
3307
+ // // ── Ukraine (+380) ────────────────────────────────────────────────────
3308
+ // { prefix: '066', dialCode: '380' }, { prefix: '067', dialCode: '380' },
3309
+ // { prefix: '068', dialCode: '380' }, { prefix: '073', dialCode: '380' },
3310
+ // { prefix: '091', dialCode: '380' }, { prefix: '092', dialCode: '380' },
3311
+ // { prefix: '093', dialCode: '380' }, { prefix: '094', dialCode: '380' },
3312
+ // { prefix: '095', dialCode: '380' }, { prefix: '096', dialCode: '380' },
3313
+ // { prefix: '097', dialCode: '380' }, { prefix: '098', dialCode: '380' },
3314
+ // { prefix: '099', dialCode: '380' },
3315
+ // // ── Russia (+7) ───────────────────────────────────────────────────────
3316
+ // { prefix: '8900', dialCode: '7' }, { prefix: '8901', dialCode: '7' },
3317
+ // { prefix: '8902', dialCode: '7' }, { prefix: '8903', dialCode: '7' },
3318
+ // { prefix: '8904', dialCode: '7' }, { prefix: '8905', dialCode: '7' },
3319
+ // { prefix: '8906', dialCode: '7' }, { prefix: '8908', dialCode: '7' },
3320
+ // { prefix: '8909', dialCode: '7' }, { prefix: '8910', dialCode: '7' },
3321
+ // { prefix: '8911', dialCode: '7' }, { prefix: '8912', dialCode: '7' },
3322
+ // { prefix: '8913', dialCode: '7' }, { prefix: '8914', dialCode: '7' },
3323
+ // { prefix: '8915', dialCode: '7' }, { prefix: '8916', dialCode: '7' },
3324
+ // { prefix: '8917', dialCode: '7' }, { prefix: '8918', dialCode: '7' },
3325
+ // { prefix: '8919', dialCode: '7' }, { prefix: '8920', dialCode: '7' },
3326
+ // { prefix: '8921', dialCode: '7' }, { prefix: '8922', dialCode: '7' },
3327
+ // { prefix: '8923', dialCode: '7' }, { prefix: '8924', dialCode: '7' },
3328
+ // { prefix: '8925', dialCode: '7' }, { prefix: '8926', dialCode: '7' },
3329
+ // { prefix: '8927', dialCode: '7' }, { prefix: '8928', dialCode: '7' },
3330
+ // { prefix: '8929', dialCode: '7' }, { prefix: '8930', dialCode: '7' },
3331
+ // { prefix: '8931', dialCode: '7' }, { prefix: '8932', dialCode: '7' },
3332
+ // { prefix: '8933', dialCode: '7' }, { prefix: '8934', dialCode: '7' },
3333
+ // { prefix: '8936', dialCode: '7' }, { prefix: '8937', dialCode: '7' },
3334
+ // { prefix: '8938', dialCode: '7' }, { prefix: '8939', dialCode: '7' },
3335
+ // { prefix: '8950', dialCode: '7' }, { prefix: '8951', dialCode: '7' },
3336
+ // { prefix: '8952', dialCode: '7' }, { prefix: '8953', dialCode: '7' },
3337
+ // { prefix: '8958', dialCode: '7' }, { prefix: '8960', dialCode: '7' },
3338
+ // { prefix: '8961', dialCode: '7' }, { prefix: '8962', dialCode: '7' },
3339
+ // { prefix: '8963', dialCode: '7' }, { prefix: '8964', dialCode: '7' },
3340
+ // { prefix: '8965', dialCode: '7' }, { prefix: '8966', dialCode: '7' },
3341
+ // { prefix: '8967', dialCode: '7' }, { prefix: '8968', dialCode: '7' },
3342
+ // { prefix: '8969', dialCode: '7' }, { prefix: '8977', dialCode: '7' },
3343
+ // { prefix: '8978', dialCode: '7' }, { prefix: '8980', dialCode: '7' },
3344
+ // { prefix: '8981', dialCode: '7' }, { prefix: '8982', dialCode: '7' },
3345
+ // { prefix: '8983', dialCode: '7' }, { prefix: '8985', dialCode: '7' },
3346
+ // { prefix: '8987', dialCode: '7' }, { prefix: '8988', dialCode: '7' },
3347
+ // { prefix: '8989', dialCode: '7' },
3348
+ // // ── Serbia (+381) ─────────────────────────────────────────────────────
3349
+ // { prefix: '060', dialCode: '381' }, { prefix: '061', dialCode: '381' },
3350
+ // { prefix: '062', dialCode: '381' }, { prefix: '063', dialCode: '381' },
3351
+ // { prefix: '064', dialCode: '381' }, { prefix: '065', dialCode: '381' },
3352
+ // { prefix: '066', dialCode: '381' },
3353
+ // // ── Greece (+30) ── (no trunk) ─────────────────────────────────────────
3354
+ // { prefix: '69', dialCode: '30' },
3355
+ // // ── Ireland (+353) ────────────────────────────────────────────────────
3356
+ // { prefix: '08', dialCode: '353' },
3357
+ // // ── Croatia (+385) ────────────────────────────────────────────────────
3358
+ // { prefix: '091', dialCode: '385' }, { prefix: '092', dialCode: '385' },
3359
+ // { prefix: '095', dialCode: '385' }, { prefix: '097', dialCode: '385' },
3360
+ // { prefix: '098', dialCode: '385' }, { prefix: '099', dialCode: '385' },
3361
+ // // ── Slovakia (+421) ────────────────────────────────────────────────────
3362
+ // { prefix: '09', dialCode: '421' },
3363
+ // // ── Bulgaria (+359) ────────────────────────────────────────────────────
3364
+ // { prefix: '087', dialCode: '359' }, { prefix: '088', dialCode: '359' },
3365
+ // { prefix: '089', dialCode: '359' },
3366
+ // // ── Belarus (+375) ─────────────────────────────────────────────────────
3367
+ // { prefix: '029', dialCode: '375' }, { prefix: '033', dialCode: '375' },
3368
+ // { prefix: '044', dialCode: '375' },
3369
+ // // ═══════════════════════════════════════════════════════════════════════
3370
+ // // AMERICAS
3371
+ // // ═══════════════════════════════════════════════════════════════════════
3372
+ // // ── North America NANP (+1) ────────────────────────────────────────────
3373
+ // // United States, Canada, and 20+ Caribbean territories all share +1.
3374
+ // // Domestic format: 1-NXX-NXX-XXXX (no trunk 0); callers sometimes dial
3375
+ // // just the 10-digit NPA-NXX-XXXX. We map the leading 1 or the NPA block.
3376
+ // { prefix: '1', dialCode: '1' },
3377
+ // // ── Mexico (+52) ──────────────────────────────────────────────────────
3378
+ // { prefix: '044', dialCode: '52' }, { prefix: '045', dialCode: '52' },
3379
+ // { prefix: '055', dialCode: '52' }, // Mexico City local
3380
+ // { prefix: '033', dialCode: '52' }, // Guadalajara local
3381
+ // // ── Brazil (+55) ──────────────────────────────────────────────────────
3382
+ // // Trunk is 0 (long distance) + carrier code; mobile use 9 as 9th digit
3383
+ // { prefix: '011', dialCode: '55' }, // São Paulo
3384
+ // { prefix: '021', dialCode: '55' }, // Rio de Janeiro
3385
+ // { prefix: '031', dialCode: '55' }, // Belo Horizonte
3386
+ // { prefix: '041', dialCode: '55' }, // Curitiba
3387
+ // { prefix: '051', dialCode: '55' }, // Porto Alegre
3388
+ // { prefix: '061', dialCode: '55' }, // Brasília
3389
+ // { prefix: '071', dialCode: '55' }, // Salvador
3390
+ // { prefix: '081', dialCode: '55' }, // Recife
3391
+ // { prefix: '085', dialCode: '55' }, // Fortaleza
3392
+ // { prefix: '091', dialCode: '55' }, // Belém
3393
+ // // ── Argentina (+54) ────────────────────────────────────────────────────
3394
+ // { prefix: '011', dialCode: '54' }, // Buenos Aires
3395
+ // { prefix: '0351', dialCode: '54' }, // Córdoba
3396
+ // { prefix: '0341', dialCode: '54' }, // Rosario
3397
+ // // ── Colombia (+57) ─────────────────────────────────────────────────────
3398
+ // { prefix: '03', dialCode: '57' },
3399
+ // // ── Chile (+56) ────────────────────────────────────────────────────────
3400
+ // { prefix: '09', dialCode: '56' },
3401
+ // // ── Peru (+51) ─────────────────────────────────────────────────────────
3402
+ // { prefix: '09', dialCode: '51' },
3403
+ // // ── Venezuela (+58) ────────────────────────────────────────────────────
3404
+ // { prefix: '04', dialCode: '58' },
3405
+ // // ── Ecuador (+593) ─────────────────────────────────────────────────────
3406
+ // { prefix: '09', dialCode: '593' },
3407
+ // // ── Bolivia (+591) ─────────────────────────────────────────────────────
3408
+ // { prefix: '06', dialCode: '591' }, { prefix: '07', dialCode: '591' },
3409
+ // // ── Paraguay (+595) ────────────────────────────────────────────────────
3410
+ // { prefix: '09', dialCode: '595' },
3411
+ // // ── Uruguay (+598) ─────────────────────────────────────────────────────
3412
+ // { prefix: '09', dialCode: '598' },
3413
+ // // ── Cuba (+53) ─────────────────────────────────────────────────────────
3414
+ // { prefix: '05', dialCode: '53' },
3415
+ // // ── Costa Rica (+506) ── (no trunk) ────────────────────────────────────
3416
+ // { prefix: '6', dialCode: '506' }, { prefix: '7', dialCode: '506' },
3417
+ // { prefix: '8', dialCode: '506' },
3418
+ // // ── Guatemala (+502) ── (no trunk) ─────────────────────────────────────
3419
+ // { prefix: '3', dialCode: '502' }, { prefix: '4', dialCode: '502' },
3420
+ // { prefix: '5', dialCode: '502' },
3421
+ // // ── Honduras (+504) ── (no trunk) ──────────────────────────────────────
3422
+ // { prefix: '3', dialCode: '504' }, { prefix: '8', dialCode: '504' },
3423
+ // { prefix: '9', dialCode: '504' },
3424
+ // // ── El Salvador (+503) ── (no trunk) ───────────────────────────────────
3425
+ // { prefix: '6', dialCode: '503' }, { prefix: '7', dialCode: '503' },
3426
+ // // ── Panama (+507) ── (no trunk) ────────────────────────────────────────
3427
+ // { prefix: '6', dialCode: '507' },
3428
+ // // ── Nicaragua (+505) ── (no trunk) ─────────────────────────────────────
3429
+ // { prefix: '5', dialCode: '505' }, { prefix: '6', dialCode: '505' },
3430
+ // { prefix: '7', dialCode: '505' }, { prefix: '8', dialCode: '505' },
3431
+ // // ═══════════════════════════════════════════════════════════════════════
3432
+ // // AFRICA
3433
+ // // ═══════════════════════════════════════════════════════════════════════
3434
+ // // ── Nigeria (+234) ─────────────────────────────────────────────────────
3435
+ // { prefix: '0703', dialCode: '234' }, { prefix: '0706', dialCode: '234' },
3436
+ // { prefix: '0803', dialCode: '234' }, { prefix: '0806', dialCode: '234' },
3437
+ // { prefix: '0810', dialCode: '234' }, { prefix: '0813', dialCode: '234' },
3438
+ // { prefix: '0814', dialCode: '234' }, { prefix: '0816', dialCode: '234' },
3439
+ // { prefix: '0903', dialCode: '234' }, { prefix: '0906', dialCode: '234' },
3440
+ // { prefix: '0704', dialCode: '234' }, { prefix: '0805', dialCode: '234' },
3441
+ // { prefix: '0807', dialCode: '234' }, { prefix: '0811', dialCode: '234' },
3442
+ // { prefix: '0815', dialCode: '234' }, { prefix: '0905', dialCode: '234' },
3443
+ // { prefix: '0802', dialCode: '234' }, { prefix: '0808', dialCode: '234' },
3444
+ // { prefix: '0812', dialCode: '234' }, { prefix: '0901', dialCode: '234' },
3445
+ // { prefix: '0902', dialCode: '234' }, { prefix: '0904', dialCode: '234' },
3446
+ // { prefix: '0907', dialCode: '234' }, { prefix: '0908', dialCode: '234' },
3447
+ // { prefix: '0809', dialCode: '234' }, { prefix: '0817', dialCode: '234' },
3448
+ // { prefix: '0818', dialCode: '234' }, { prefix: '0819', dialCode: '234' },
3449
+ // { prefix: '0909', dialCode: '234' },
3450
+ // // ── South Africa (+27) ─────────────────────────────────────────────────
3451
+ // { prefix: '060', dialCode: '27' }, { prefix: '061', dialCode: '27' },
3452
+ // { prefix: '062', dialCode: '27' }, { prefix: '063', dialCode: '27' },
3453
+ // { prefix: '064', dialCode: '27' }, { prefix: '065', dialCode: '27' },
3454
+ // { prefix: '066', dialCode: '27' }, { prefix: '067', dialCode: '27' },
3455
+ // { prefix: '068', dialCode: '27' }, { prefix: '069', dialCode: '27' },
3456
+ // { prefix: '071', dialCode: '27' }, { prefix: '072', dialCode: '27' },
3457
+ // { prefix: '073', dialCode: '27' }, { prefix: '074', dialCode: '27' },
3458
+ // { prefix: '076', dialCode: '27' }, { prefix: '078', dialCode: '27' },
3459
+ // { prefix: '079', dialCode: '27' }, { prefix: '081', dialCode: '27' },
3460
+ // { prefix: '082', dialCode: '27' }, { prefix: '083', dialCode: '27' },
3461
+ // { prefix: '084', dialCode: '27' }, { prefix: '085', dialCode: '27' },
3462
+ // // ── Kenya (+254) ───────────────────────────────────────────────────────
3463
+ // { prefix: '0700', dialCode: '254' }, { prefix: '0701', dialCode: '254' },
3464
+ // { prefix: '0702', dialCode: '254' }, { prefix: '0703', dialCode: '254' },
3465
+ // { prefix: '0704', dialCode: '254' }, { prefix: '0705', dialCode: '254' },
3466
+ // { prefix: '0706', dialCode: '254' }, { prefix: '0707', dialCode: '254' },
3467
+ // { prefix: '0708', dialCode: '254' }, { prefix: '0709', dialCode: '254' },
3468
+ // { prefix: '0710', dialCode: '254' }, { prefix: '0711', dialCode: '254' },
3469
+ // { prefix: '0712', dialCode: '254' }, { prefix: '0713', dialCode: '254' },
3470
+ // { prefix: '0714', dialCode: '254' }, { prefix: '0715', dialCode: '254' },
3471
+ // { prefix: '0716', dialCode: '254' }, { prefix: '0717', dialCode: '254' },
3472
+ // { prefix: '0718', dialCode: '254' }, { prefix: '0719', dialCode: '254' },
3473
+ // { prefix: '0720', dialCode: '254' }, { prefix: '0721', dialCode: '254' },
3474
+ // { prefix: '0722', dialCode: '254' }, { prefix: '0723', dialCode: '254' },
3475
+ // { prefix: '0724', dialCode: '254' }, { prefix: '0725', dialCode: '254' },
3476
+ // { prefix: '0726', dialCode: '254' }, { prefix: '0727', dialCode: '254' },
3477
+ // { prefix: '0728', dialCode: '254' }, { prefix: '0729', dialCode: '254' },
3478
+ // { prefix: '0730', dialCode: '254' }, { prefix: '0731', dialCode: '254' },
3479
+ // { prefix: '0732', dialCode: '254' }, { prefix: '0733', dialCode: '254' },
3480
+ // { prefix: '0734', dialCode: '254' }, { prefix: '0735', dialCode: '254' },
3481
+ // { prefix: '0736', dialCode: '254' }, { prefix: '0737', dialCode: '254' },
3482
+ // { prefix: '0738', dialCode: '254' }, { prefix: '0739', dialCode: '254' },
3483
+ // { prefix: '0740', dialCode: '254' }, { prefix: '0741', dialCode: '254' },
3484
+ // { prefix: '0742', dialCode: '254' }, { prefix: '0743', dialCode: '254' },
3485
+ // { prefix: '0745', dialCode: '254' }, { prefix: '0746', dialCode: '254' },
3486
+ // { prefix: '0757', dialCode: '254' }, { prefix: '0758', dialCode: '254' },
3487
+ // { prefix: '0759', dialCode: '254' }, { prefix: '0768', dialCode: '254' },
3488
+ // { prefix: '0769', dialCode: '254' }, { prefix: '0770', dialCode: '254' },
3489
+ // { prefix: '0771', dialCode: '254' }, { prefix: '0772', dialCode: '254' },
3490
+ // { prefix: '0773', dialCode: '254' }, { prefix: '0774', dialCode: '254' },
3491
+ // { prefix: '0775', dialCode: '254' }, { prefix: '0776', dialCode: '254' },
3492
+ // { prefix: '0777', dialCode: '254' }, { prefix: '0778', dialCode: '254' },
3493
+ // { prefix: '0779', dialCode: '254' }, { prefix: '0780', dialCode: '254' },
3494
+ // { prefix: '0781', dialCode: '254' }, { prefix: '0782', dialCode: '254' },
3495
+ // { prefix: '0783', dialCode: '254' }, { prefix: '0784', dialCode: '254' },
3496
+ // { prefix: '0785', dialCode: '254' }, { prefix: '0786', dialCode: '254' },
3497
+ // { prefix: '0787', dialCode: '254' }, { prefix: '0788', dialCode: '254' },
3498
+ // { prefix: '0789', dialCode: '254' }, { prefix: '0790', dialCode: '254' },
3499
+ // { prefix: '0791', dialCode: '254' }, { prefix: '0792', dialCode: '254' },
3500
+ // { prefix: '0793', dialCode: '254' }, { prefix: '0794', dialCode: '254' },
3501
+ // { prefix: '0795', dialCode: '254' }, { prefix: '0796', dialCode: '254' },
3502
+ // { prefix: '0797', dialCode: '254' }, { prefix: '0798', dialCode: '254' },
3503
+ // { prefix: '0799', dialCode: '254' },
3504
+ // // ── Ethiopia (+251) ────────────────────────────────────────────────────
3505
+ // { prefix: '091', dialCode: '251' }, { prefix: '092', dialCode: '251' },
3506
+ // { prefix: '093', dialCode: '251' }, { prefix: '094', dialCode: '251' },
3507
+ // { prefix: '095', dialCode: '251' },
3508
+ // // ── Ghana (+233) ───────────────────────────────────────────────────────
3509
+ // { prefix: '024', dialCode: '233' }, { prefix: '025', dialCode: '233' },
3510
+ // { prefix: '026', dialCode: '233' }, { prefix: '027', dialCode: '233' },
3511
+ // { prefix: '028', dialCode: '233' }, { prefix: '029', dialCode: '233' },
3512
+ // { prefix: '054', dialCode: '233' }, { prefix: '055', dialCode: '233' },
3513
+ // { prefix: '056', dialCode: '233' }, { prefix: '057', dialCode: '233' },
3514
+ // { prefix: '059', dialCode: '233' }, { prefix: '020', dialCode: '233' },
3515
+ // { prefix: '050', dialCode: '233' },
3516
+ // // ── Tanzania (+255) ────────────────────────────────────────────────────
3517
+ // { prefix: '0621', dialCode: '255' }, { prefix: '0622', dialCode: '255' },
3518
+ // { prefix: '0623', dialCode: '255' }, { prefix: '0624', dialCode: '255' },
3519
+ // { prefix: '0625', dialCode: '255' }, { prefix: '0626', dialCode: '255' },
3520
+ // { prefix: '0627', dialCode: '255' }, { prefix: '0628', dialCode: '255' },
3521
+ // { prefix: '0629', dialCode: '255' }, { prefix: '0655', dialCode: '255' },
3522
+ // { prefix: '0656', dialCode: '255' }, { prefix: '0657', dialCode: '255' },
3523
+ // { prefix: '0658', dialCode: '255' }, { prefix: '0659', dialCode: '255' },
3524
+ // { prefix: '0673', dialCode: '255' }, { prefix: '0674', dialCode: '255' },
3525
+ // { prefix: '0675', dialCode: '255' }, { prefix: '0676', dialCode: '255' },
3526
+ // { prefix: '0677', dialCode: '255' }, { prefix: '0678', dialCode: '255' },
3527
+ // { prefix: '0679', dialCode: '255' }, { prefix: '0684', dialCode: '255' },
3528
+ // { prefix: '0685', dialCode: '255' }, { prefix: '0686', dialCode: '255' },
3529
+ // { prefix: '0687', dialCode: '255' }, { prefix: '0688', dialCode: '255' },
3530
+ // { prefix: '0689', dialCode: '255' }, { prefix: '0716', dialCode: '255' },
3531
+ // { prefix: '0717', dialCode: '255' }, { prefix: '0718', dialCode: '255' },
3532
+ // { prefix: '0719', dialCode: '255' }, { prefix: '0754', dialCode: '255' },
3533
+ // { prefix: '0755', dialCode: '255' }, { prefix: '0756', dialCode: '255' },
3534
+ // { prefix: '0757', dialCode: '255' }, { prefix: '0758', dialCode: '255' },
3535
+ // { prefix: '0759', dialCode: '255' }, { prefix: '0765', dialCode: '255' },
3536
+ // { prefix: '0766', dialCode: '255' }, { prefix: '0767', dialCode: '255' },
3537
+ // { prefix: '0768', dialCode: '255' }, { prefix: '0769', dialCode: '255' },
3538
+ // { prefix: '0786', dialCode: '255' }, { prefix: '0787', dialCode: '255' },
3539
+ // { prefix: '0788', dialCode: '255' }, { prefix: '0789', dialCode: '255' },
3540
+ // // ── Uganda (+256) ──────────────────────────────────────────────────────
3541
+ // { prefix: '070', dialCode: '256' }, { prefix: '071', dialCode: '256' },
3542
+ // { prefix: '074', dialCode: '256' }, { prefix: '075', dialCode: '256' },
3543
+ // { prefix: '076', dialCode: '256' }, { prefix: '077', dialCode: '256' },
3544
+ // { prefix: '078', dialCode: '256' },
3545
+ // // ── Egypt (+20) ────────────────────────────────────────────────────────
3546
+ // { prefix: '010', dialCode: '20' }, { prefix: '011', dialCode: '20' },
3547
+ // { prefix: '012', dialCode: '20' }, { prefix: '015', dialCode: '20' },
3548
+ // // ── Morocco (+212) ─────────────────────────────────────────────────────
3549
+ // { prefix: '06', dialCode: '212' }, { prefix: '07', dialCode: '212' },
3550
+ // // ── Algeria (+213) ─────────────────────────────────────────────────────
3551
+ // { prefix: '05', dialCode: '213' },
3552
+ // // ── Tunisia (+216) ── (no trunk) ───────────────────────────────────────
3553
+ // { prefix: '2', dialCode: '216' }, { prefix: '5', dialCode: '216' },
3554
+ // { prefix: '9', dialCode: '216' },
3555
+ // // ── Sudan (+249) ───────────────────────────────────────────────────────
3556
+ // { prefix: '09', dialCode: '249' },
3557
+ // // ── Rwanda (+250) ── (no trunk) ────────────────────────────────────────
3558
+ // { prefix: '72', dialCode: '250' }, { prefix: '73', dialCode: '250' },
3559
+ // { prefix: '78', dialCode: '250' }, { prefix: '79', dialCode: '250' },
3560
+ // // ── Cameroon (+237) ── (no trunk) ──────────────────────────────────────
3561
+ // { prefix: '6', dialCode: '237' }, { prefix: '7', dialCode: '237' },
3562
+ // // ── Ivory Coast (+225) ── (no trunk) ───────────────────────────────────
3563
+ // { prefix: '01', dialCode: '225' }, { prefix: '05', dialCode: '225' },
3564
+ // { prefix: '07', dialCode: '225' },
3565
+ // // ── Senegal (+221) ── (no trunk) ───────────────────────────────────────
3566
+ // { prefix: '7', dialCode: '221' },
3567
+ // // ── Zimbabwe (+263) ────────────────────────────────────────────────────
3568
+ // { prefix: '071', dialCode: '263' }, { prefix: '073', dialCode: '263' },
3569
+ // { prefix: '077', dialCode: '263' }, { prefix: '078', dialCode: '263' },
3570
+ // // ── Zambia (+260) ──────────────────────────────────────────────────────
3571
+ // { prefix: '095', dialCode: '260' }, { prefix: '096', dialCode: '260' },
3572
+ // { prefix: '097', dialCode: '260' },
3573
+ // // ═══════════════════════════════════════════════════════════════════════
3574
+ // // OCEANIA
3575
+ // // ═══════════════════════════════════════════════════════════════════════
3576
+ // // ── Australia (+61) ────────────────────────────────────────────────────
3577
+ // { prefix: '04', dialCode: '61' }, // mobile (Telstra, Optus, Vodafone)
3578
+ // { prefix: '02', dialCode: '61' }, // fixed NSW/ACT
3579
+ // { prefix: '03', dialCode: '61' }, // fixed VIC/TAS
3580
+ // { prefix: '07', dialCode: '61' }, // fixed QLD
3581
+ // { prefix: '08', dialCode: '61' }, // fixed SA/WA/NT
3582
+ // // ── New Zealand (+64) ──────────────────────────────────────────────────
3583
+ // { prefix: '021', dialCode: '64' }, { prefix: '022', dialCode: '64' },
3584
+ // { prefix: '027', dialCode: '64' }, { prefix: '028', dialCode: '64' },
3585
+ // { prefix: '029', dialCode: '64' },
3586
+ // // ── Papua New Guinea (+675) ── (no trunk) ──────────────────────────────
3587
+ // { prefix: '7', dialCode: '675' },
3588
+ // // ── Fiji (+679) ── (no trunk) ──────────────────────────────────────────
3589
+ // { prefix: '7', dialCode: '679' }, { prefix: '8', dialCode: '679' },
3590
+ // { prefix: '9', dialCode: '679' },
3591
+ ];
3592
+ var _sortedTrunkMap = [...LOCAL_TRUNK_TO_DIAL].sort(
3593
+ (a, b) => b.prefix.length - a.prefix.length
3594
+ );
3595
+ var localToInternational = (value, countryIso) => {
3596
+ if (!value) return value;
3597
+ const trimmed = value.trim();
3598
+ if (trimmed.startsWith("+")) {
3599
+ return "+" + stripNonDigits(trimmed.slice(1));
3600
+ }
3601
+ const digits = stripNonDigits(trimmed);
3602
+ if (digits.startsWith("00") && digits.length > 2) {
3603
+ return "+" + digits.slice(2);
3604
+ }
3605
+ if (!digits.startsWith("0")) {
3606
+ return digits;
3607
+ }
3608
+ for (const { prefix, dialCode: dialCode2 } of _sortedTrunkMap) {
3609
+ if (digits.startsWith(prefix)) {
3610
+ return "+" + dialCode2 + digits.slice(1);
3611
+ }
3612
+ }
3613
+ const dialCode = getDialCode(countryIso);
3614
+ if (dialCode) {
3615
+ return "+" + dialCode + digits.slice(1);
3616
+ }
3617
+ return digits.slice(1);
3618
+ };
2631
3619
  var DEFAULT_LABELS7 = {
2632
3620
  id: {
2633
3621
  emailOrPhonePlaceholder: "Email atau Nomor HP",
@@ -2649,7 +3637,8 @@ var DEFAULT_LABELS7 = {
2649
3637
  phoneMinDigitsError: "Nomor HP minimal 10 digit",
2650
3638
  invalidEmailOrPhoneError: "Masukkan email atau nomor HP yang valid",
2651
3639
  identityPhoneMustStartWithPlusError: "Nomor telepon harus diawali dengan +",
2652
- identityPhoneMustBeOnlyDigitsError: "Nomor telepon hanya boleh berisi angka setelah +"
3640
+ identityPhoneMustBeOnlyDigitsError: "Nomor telepon hanya boleh berisi angka setelah +",
3641
+ phoneInvalidLengthError: "Nomor telepon harus antara 4-15 digit"
2653
3642
  },
2654
3643
  en: {
2655
3644
  emailOrPhonePlaceholder: "Email or Phone Number",
@@ -2671,7 +3660,8 @@ var DEFAULT_LABELS7 = {
2671
3660
  phoneMinDigitsError: "Phone number must be at least 10 digits",
2672
3661
  invalidEmailOrPhoneError: "Please enter a valid email or phone number",
2673
3662
  identityPhoneMustStartWithPlusError: "Phone number must start with +",
2674
- identityPhoneMustBeOnlyDigitsError: "Phone number must contain only numbers after +"
3663
+ identityPhoneMustBeOnlyDigitsError: "Phone number must contain only numbers after +",
3664
+ phoneInvalidLengthError: "Phone number must be between 4-15 digits"
2675
3665
  }
2676
3666
  };
2677
3667
 
@@ -3156,7 +4146,7 @@ var detectEmailOrPhoneStrict = (value) => {
3156
4146
  if (value.includes("@")) return "email";
3157
4147
  if (value.startsWith("+")) return "phone";
3158
4148
  if (/^0\d/.test(value)) return "phone";
3159
- if (/^62\d/.test(value)) return "phone";
4149
+ if (DIGITS_ONLY_REGEX.test(value) && value.length >= 4) return "phone";
3160
4150
  return "none";
3161
4151
  };
3162
4152
  var InputDynamic = ({
@@ -3193,7 +4183,7 @@ var InputDynamic = ({
3193
4183
  hasError = false,
3194
4184
  autoComplete,
3195
4185
  onInput,
3196
- onlyCountries,
4186
+ onlyCountries = ["id"],
3197
4187
  contentAfter,
3198
4188
  onChange,
3199
4189
  language = "id",
@@ -3216,6 +4206,23 @@ var InputDynamic = ({
3216
4206
  const emailOrPhoneInputRef = React.useRef(null);
3217
4207
  const shouldFocusRef = React.useRef(false);
3218
4208
  const isBackspaceNavigationRef = React.useRef(false);
4209
+ const rawEmailOrPhoneInputRef = React.useRef("");
4210
+ const getPhoneInputValue = (val) => {
4211
+ let cleaned = val.startsWith("+") ? stripNonDigits(val.substring(1)) : stripNonDigits(val);
4212
+ if (onlyCountries && onlyCountries.length > 0 && cleaned) {
4213
+ const matchesAnyCountry = onlyCountries.some((cc) => {
4214
+ const dc = getDialCode(cc);
4215
+ return dc && cleaned.startsWith(dc);
4216
+ });
4217
+ if (!matchesAnyCountry) {
4218
+ const fallbackCode = getDialCode(onlyCountries[0]) || getDialCode(defaultCountry) || "";
4219
+ if (fallbackCode) {
4220
+ cleaned = fallbackCode + cleaned;
4221
+ }
4222
+ }
4223
+ }
4224
+ return cleaned;
4225
+ };
3219
4226
  const getSelectStyles = (hasError2, selectAppearance) => {
3220
4227
  const currentAppearance = appearance || "outline";
3221
4228
  const getControlStyles = (provided, state) => {
@@ -3407,6 +4414,10 @@ var InputDynamic = ({
3407
4414
  }
3408
4415
  };
3409
4416
  const renderInput = (field, error) => {
4417
+ const phoneInputProps = {};
4418
+ if (onlyCountries) {
4419
+ phoneInputProps.onlyCountries = onlyCountries;
4420
+ }
3410
4421
  const shouldTransparentBorder = disabled && appearance !== "outline" && appearance !== "underline";
3411
4422
  const getPhoneAppearanceClass = () => {
3412
4423
  if (appearance === "underline") return styles.phoneInputUnderline;
@@ -3466,32 +4477,16 @@ var InputDynamic = ({
3466
4477
  const stringValue = typeof field.value === "string" ? field.value : "";
3467
4478
  let inputType = "text";
3468
4479
  let inputPlaceholder = placeholder || mergedLabels.emailOrPhonePlaceholder;
3469
- if (emailOrPhoneType === "email") {
4480
+ if (emailOrPhoneType === "none") {
4481
+ inputType = "text";
4482
+ inputPlaceholder = placeholder || mergedLabels.emailOrPhonePlaceholder;
4483
+ } else if (emailOrPhoneType === "email") {
3470
4484
  inputType = "email";
3471
4485
  inputPlaceholder = placeholder || mergedLabels.emailPlaceholder;
3472
4486
  } else if (emailOrPhoneType === "phone") {
3473
4487
  inputType = "tel";
3474
4488
  inputPlaceholder = placeholder || mergedLabels.phonePlaceholder;
3475
4489
  }
3476
- const normalizePhoneNumber = (val) => {
3477
- if (!val) return val;
3478
- if (val.startsWith("08")) {
3479
- return "+62" + val.substring(1);
3480
- }
3481
- if (val.startsWith("62") && !val.startsWith("+")) {
3482
- return "+" + val;
3483
- }
3484
- return val;
3485
- };
3486
- const cleanPhoneValue = (val) => {
3487
- if (!val) return val;
3488
- const match = val.match(/^(\d{1,4})(0\d+)$/);
3489
- if (match) {
3490
- return match[1] + match[2].substring(1);
3491
- }
3492
- return val;
3493
- };
3494
- emailOrPhoneType === "phone" ? cleanPhoneValue(stringValue) : stringValue;
3495
4490
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.phoneContainer, children: emailOrPhoneType === "phone" ? /* @__PURE__ */ jsxRuntime.jsx(
3496
4491
  "div",
3497
4492
  {
@@ -3501,44 +4496,86 @@ var InputDynamic = ({
3501
4496
  phoneAppearanceClass,
3502
4497
  error ? styles.phoneInputError : ""
3503
4498
  ),
4499
+ onKeyDownCapture: (e) => {
4500
+ if (CONTROL_KEYS.includes(e.key)) return;
4501
+ if (e.key.length !== 1) return;
4502
+ if (!DIGITS_ONLY_REGEX.test(e.key)) {
4503
+ e.preventDefault();
4504
+ const fieldStr = typeof field.value === "string" ? field.value : "";
4505
+ const fieldDigits = stripNonDigits(fieldStr.replace(/^\+/, ""));
4506
+ const activeDialCode = getDialCode(onlyCountries?.[0] || defaultCountry) || "";
4507
+ const userDigitsFromField = activeDialCode && fieldDigits.startsWith(activeDialCode) ? fieldDigits.slice(activeDialCode.length) : fieldDigits;
4508
+ const hadTrunkPrefix = rawEmailOrPhoneInputRef.current.startsWith("08");
4509
+ const rawInput = hadTrunkPrefix ? "08" + userDigitsFromField : userDigitsFromField;
4510
+ const newValue = rawInput + e.key;
4511
+ shouldFocusRef.current = true;
4512
+ rawEmailOrPhoneInputRef.current = newValue;
4513
+ field.onChange(newValue);
4514
+ setLastEmailOrPhoneValue("");
4515
+ updateEmailOrPhoneType(newValue);
4516
+ }
4517
+ },
3504
4518
  children: /* @__PURE__ */ jsxRuntime.jsx(
3505
4519
  PhoneInput,
3506
4520
  {
4521
+ ...phoneInputProps,
3507
4522
  countryCodeEditable: false,
3508
4523
  inputStyle: phoneInputSizeStyle,
3509
4524
  country: defaultCountry.toLowerCase(),
3510
- value: stringValue.startsWith("+") ? stringValue.substring(1) : stringValue,
4525
+ value: getPhoneInputValue(stringValue),
3511
4526
  onChange: (value, data) => {
3512
4527
  if (!value) {
3513
4528
  shouldFocusRef.current = true;
3514
4529
  field.onChange("");
3515
4530
  updateEmailOrPhoneType("");
3516
4531
  setLastEmailOrPhoneValue("");
4532
+ rawEmailOrPhoneInputRef.current = "";
3517
4533
  return;
3518
4534
  }
3519
4535
  const countryDialCode = data?.dialCode || "";
3520
- if (value === countryDialCode) {
4536
+ const cleanedValue = removeLeadingZeroAfterDialCode(value, countryDialCode);
4537
+ if (cleanedValue === countryDialCode) {
3521
4538
  const dialCodeChanged = lastEmailOrPhoneValue && lastEmailOrPhoneValue !== countryDialCode && !lastEmailOrPhoneValue.startsWith(countryDialCode);
3522
4539
  const isInitial = !lastEmailOrPhoneValue;
3523
4540
  const wasFullNumber = lastEmailOrPhoneValue && lastEmailOrPhoneValue.length > 3;
3524
4541
  if (isInitial || dialCodeChanged || wasFullNumber) {
3525
- const phoneValue2 = "+" + value;
4542
+ const phoneValue2 = "+" + cleanedValue;
3526
4543
  field.onChange(phoneValue2);
3527
4544
  updateEmailOrPhoneType(phoneValue2);
3528
- setLastEmailOrPhoneValue(value);
4545
+ setLastEmailOrPhoneValue(cleanedValue);
3529
4546
  return;
3530
4547
  } else {
3531
4548
  shouldFocusRef.current = true;
3532
4549
  field.onChange("");
3533
4550
  updateEmailOrPhoneType("");
3534
4551
  setLastEmailOrPhoneValue("");
4552
+ rawEmailOrPhoneInputRef.current = "";
3535
4553
  return;
3536
4554
  }
3537
4555
  }
3538
- const phoneValue = "+" + value;
4556
+ const phoneValue = "+" + cleanedValue;
3539
4557
  field.onChange(phoneValue);
3540
4558
  updateEmailOrPhoneType(phoneValue);
3541
- setLastEmailOrPhoneValue(value);
4559
+ setLastEmailOrPhoneValue(cleanedValue);
4560
+ },
4561
+ inputProps: {
4562
+ onPaste: (e) => {
4563
+ const raw = e.clipboardData.getData("text");
4564
+ const normalized = normalizeRawPhoneInput(raw);
4565
+ if (normalized && !normalized.startsWith("+")) {
4566
+ e.preventDefault();
4567
+ const digitsOnly = normalized.replace(/^0+/, "");
4568
+ const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
4569
+ window.HTMLInputElement.prototype,
4570
+ "value"
4571
+ )?.set;
4572
+ const inputEl = e.currentTarget;
4573
+ if (nativeInputValueSetter) {
4574
+ nativeInputValueSetter.call(inputEl, digitsOnly);
4575
+ inputEl.dispatchEvent(new Event("input", { bubbles: true }));
4576
+ }
4577
+ }
4578
+ }
3542
4579
  },
3543
4580
  placeholder: inputPlaceholder,
3544
4581
  disabled,
@@ -3555,16 +4592,28 @@ var InputDynamic = ({
3555
4592
  autoComplete: autoComplete || "off",
3556
4593
  onChange: (e) => {
3557
4594
  const newValue = e.target.value;
3558
- const willSwitchType = emailOrPhoneType !== detectEmailOrPhoneStrict(newValue);
4595
+ const detectedType = detectEmailOrPhoneStrict(newValue);
4596
+ const willSwitchType = emailOrPhoneType !== detectedType;
3559
4597
  if (willSwitchType) shouldFocusRef.current = true;
4598
+ rawEmailOrPhoneInputRef.current = newValue;
3560
4599
  let normalizedValue = newValue;
3561
- const detectedType = detectEmailOrPhoneStrict(newValue);
3562
4600
  if (detectedType === "phone") {
3563
- normalizedValue = normalizePhoneNumber(newValue);
4601
+ normalizedValue = localToInternational(newValue, defaultCountry);
3564
4602
  }
3565
4603
  field.onChange(normalizedValue);
3566
4604
  updateEmailOrPhoneType(normalizedValue);
3567
4605
  },
4606
+ onPaste: (e) => {
4607
+ const raw = e.clipboardData?.getData("text") ?? "";
4608
+ const detectedType = detectEmailOrPhoneStrict(raw);
4609
+ if (detectedType === "phone") {
4610
+ e.preventDefault();
4611
+ rawEmailOrPhoneInputRef.current = raw;
4612
+ const normalized = localToInternational(raw, defaultCountry);
4613
+ field.onChange(normalized);
4614
+ updateEmailOrPhoneType(normalized);
4615
+ }
4616
+ },
3568
4617
  className: classNameSize,
3569
4618
  placeholder: inputPlaceholder,
3570
4619
  disabled,
@@ -3590,16 +4639,6 @@ var InputDynamic = ({
3590
4639
  inputType = "text";
3591
4640
  inputPlaceholder = placeholder || mergedLabels.identityIdPlaceholder;
3592
4641
  }
3593
- const cleanPhoneValue = (val) => {
3594
- if (!val) return val;
3595
- const stringVal = String(val);
3596
- const match = stringVal.match(/^(\d{1,4})(0\d+)$/);
3597
- if (match) {
3598
- return match[1] + match[2].substring(1);
3599
- }
3600
- return stringVal;
3601
- };
3602
- identityType === "phone" ? cleanPhoneValue(stringValue) : stringValue;
3603
4642
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.phoneContainer, children: identityType === "phone" ? /* @__PURE__ */ jsxRuntime.jsx(
3604
4643
  "div",
3605
4644
  {
@@ -3612,9 +4651,10 @@ var InputDynamic = ({
3612
4651
  children: /* @__PURE__ */ jsxRuntime.jsx(
3613
4652
  PhoneInput,
3614
4653
  {
4654
+ ...phoneInputProps,
3615
4655
  countryCodeEditable: false,
3616
4656
  country: defaultCountry.toLowerCase(),
3617
- value: stringValue.startsWith("+") ? stringValue.substring(1) : stringValue,
4657
+ value: getPhoneInputValue(stringValue),
3618
4658
  onChange: (value, data) => {
3619
4659
  if (!value) {
3620
4660
  shouldFocusRef.current = true;
@@ -3624,15 +4664,16 @@ var InputDynamic = ({
3624
4664
  return;
3625
4665
  }
3626
4666
  const countryDialCode = data?.dialCode || "";
3627
- if (value === countryDialCode) {
4667
+ const cleanedValue = removeLeadingZeroAfterDialCode(value, countryDialCode);
4668
+ if (cleanedValue === countryDialCode) {
3628
4669
  const dialCodeChanged = lastPhoneValue && lastPhoneValue !== countryDialCode && !lastPhoneValue.startsWith(countryDialCode);
3629
4670
  const isInitial = !lastPhoneValue;
3630
4671
  const wasFullNumber = lastPhoneValue && lastPhoneValue.length > 3;
3631
4672
  if (isInitial || dialCodeChanged || wasFullNumber) {
3632
- const phoneValue2 = "+" + value;
4673
+ const phoneValue2 = "+" + cleanedValue;
3633
4674
  field.onChange(phoneValue2);
3634
4675
  updateIdentityType(phoneValue2);
3635
- setLastPhoneValue(value);
4676
+ setLastPhoneValue(cleanedValue);
3636
4677
  return;
3637
4678
  } else {
3638
4679
  shouldFocusRef.current = true;
@@ -3642,10 +4683,29 @@ var InputDynamic = ({
3642
4683
  return;
3643
4684
  }
3644
4685
  }
3645
- const phoneValue = "+" + value;
4686
+ const phoneValue = "+" + cleanedValue;
3646
4687
  field.onChange(phoneValue);
3647
4688
  updateIdentityType(phoneValue);
3648
- setLastPhoneValue(value);
4689
+ setLastPhoneValue(cleanedValue);
4690
+ },
4691
+ inputProps: {
4692
+ onPaste: (e) => {
4693
+ const raw = e.clipboardData.getData("text");
4694
+ const normalized = normalizeRawPhoneInput(raw);
4695
+ if (normalized && !normalized.startsWith("+")) {
4696
+ e.preventDefault();
4697
+ const digitsOnly = normalized.replace(/^0+/, "");
4698
+ const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
4699
+ window.HTMLInputElement.prototype,
4700
+ "value"
4701
+ )?.set;
4702
+ const inputEl = e.currentTarget;
4703
+ if (nativeInputValueSetter) {
4704
+ nativeInputValueSetter.call(inputEl, digitsOnly);
4705
+ inputEl.dispatchEvent(new Event("input", { bubbles: true }));
4706
+ }
4707
+ }
4708
+ }
3649
4709
  },
3650
4710
  placeholder: inputPlaceholder,
3651
4711
  disabled,
@@ -3664,10 +4724,15 @@ var InputDynamic = ({
3664
4724
  autoComplete: autoComplete || "off",
3665
4725
  onChange: (e) => {
3666
4726
  const newValue = e.target.value;
3667
- const willSwitchType = identityType !== detectIdentityType(newValue);
4727
+ const detectedType = detectIdentityType(newValue);
4728
+ const willSwitchType = identityType !== detectedType;
3668
4729
  if (willSwitchType) shouldFocusRef.current = true;
3669
- field.onChange(newValue);
3670
- updateIdentityType(newValue);
4730
+ let normalizedValue = newValue;
4731
+ if (detectedType === "phone") {
4732
+ normalizedValue = localToInternational(newValue, defaultCountry);
4733
+ }
4734
+ field.onChange(normalizedValue);
4735
+ updateIdentityType(normalizedValue);
3671
4736
  },
3672
4737
  placeholder: inputPlaceholder,
3673
4738
  disabled,
@@ -3716,8 +4781,14 @@ var InputDynamic = ({
3716
4781
  if (isMultiSelect) {
3717
4782
  const values = selectedOption ? selectedOption.map((opt) => opt.value) : [];
3718
4783
  field.onChange(values);
4784
+ if (onChange) {
4785
+ onChange(values);
4786
+ }
3719
4787
  } else {
3720
4788
  field.onChange(selectedOption ? selectedOption.value : "");
4789
+ if (onChange) {
4790
+ onChange(selectedOption ? selectedOption.value : "");
4791
+ }
3721
4792
  }
3722
4793
  },
3723
4794
  getOptionLabel: (option) => option.label,
@@ -3787,20 +4858,8 @@ var InputDynamic = ({
3787
4858
  }
3788
4859
  );
3789
4860
  case "phone": {
3790
- const cleanPhoneValue = (val) => {
3791
- if (!val) return val;
3792
- const stringVal = String(val);
3793
- const match = stringVal.match(/^(\d{1,4})(0\d+)$/);
3794
- if (match) {
3795
- return match[1] + match[2].substring(1);
3796
- }
3797
- return stringVal;
3798
- };
3799
- const cleanedFieldValue = cleanPhoneValue(field.value || "");
3800
- const phoneInputProps = {};
3801
- if (onlyCountries) {
3802
- phoneInputProps.onlyCountries = onlyCountries;
3803
- }
4861
+ const stringValue = typeof field.value === "string" ? field.value : "";
4862
+ const cleanedFieldValue = getPhoneInputValue(stringValue);
3804
4863
  return /* @__PURE__ */ jsxRuntime.jsx(
3805
4864
  "div",
3806
4865
  {
@@ -3820,8 +4879,35 @@ var InputDynamic = ({
3820
4879
  enableSearch: true,
3821
4880
  inputStyle: phoneInputSizeStyle,
3822
4881
  onChange: (value, data) => {
3823
- const cleanedValue = cleanPhoneValue(value || "");
3824
- field.onChange(cleanedValue);
4882
+ if (!value) {
4883
+ field.onChange("");
4884
+ return;
4885
+ }
4886
+ const dialCode = data?.dialCode || "";
4887
+ let cleanedValue = removeLeadingZeroAfterDialCode(value, dialCode);
4888
+ if (cleanedValue.length > PHONE_MAX_DIGITS) {
4889
+ cleanedValue = cleanedValue.substring(0, PHONE_MAX_DIGITS);
4890
+ }
4891
+ field.onChange("+" + cleanedValue);
4892
+ },
4893
+ inputProps: {
4894
+ onPaste: (e) => {
4895
+ const raw = e.clipboardData.getData("text");
4896
+ const normalized = normalizeRawPhoneInput(raw);
4897
+ if (normalized && !normalized.startsWith("+")) {
4898
+ e.preventDefault();
4899
+ const digitsOnly = normalized.replace(/^0+/, "");
4900
+ const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
4901
+ window.HTMLInputElement.prototype,
4902
+ "value"
4903
+ )?.set;
4904
+ const inputEl = e.currentTarget;
4905
+ if (nativeInputValueSetter) {
4906
+ nativeInputValueSetter.call(inputEl, digitsOnly);
4907
+ inputEl.dispatchEvent(new Event("input", { bubbles: true }));
4908
+ }
4909
+ }
4910
+ }
3825
4911
  },
3826
4912
  placeholder: placeholder || mergedLabels.phoneDefaultPlaceholder,
3827
4913
  value: cleanedFieldValue
@@ -4177,21 +5263,13 @@ var InputDynamic = ({
4177
5263
  if (!stringValue) return true;
4178
5264
  const detectedType = detectEmailOrPhoneStrict(stringValue);
4179
5265
  if (detectedType === "email") {
4180
- if (!/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/i.test(
4181
- stringValue
4182
- )) {
5266
+ if (!EMAIL_REGEX.test(stringValue)) {
4183
5267
  return mergedLabels.invalidEmailFormatError;
4184
5268
  }
4185
5269
  } else if (detectedType === "phone") {
4186
- if (!stringValue.startsWith("+")) {
4187
- return mergedLabels.phoneMustStartWithPlusError;
4188
- }
4189
- const phoneDigits = stringValue.substring(1);
4190
- if (!/^\d+$/.test(phoneDigits)) {
4191
- return mergedLabels.phoneMustBeOnlyDigitsError;
4192
- }
4193
- if (phoneDigits.length < 10) {
4194
- return mergedLabels.phoneMinDigitsError;
5270
+ const phoneDigits = stripNonDigits(stringValue.replace(/^\+/, ""));
5271
+ if (phoneDigits.length > 0 && (phoneDigits.length < PHONE_MIN_DIGITS || phoneDigits.length > PHONE_MAX_DIGITS)) {
5272
+ return mergedLabels.phoneInvalidLengthError;
4195
5273
  }
4196
5274
  } else {
4197
5275
  return mergedLabels.invalidEmailOrPhoneError;
@@ -4208,18 +5286,13 @@ var InputDynamic = ({
4208
5286
  if (!stringValue) return true;
4209
5287
  const detectedType = detectIdentityType(stringValue);
4210
5288
  if (detectedType === "email") {
4211
- if (!/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/i.test(
4212
- stringValue
4213
- )) {
5289
+ if (!EMAIL_REGEX.test(stringValue)) {
4214
5290
  return mergedLabels.invalidEmailFormatError;
4215
5291
  }
4216
5292
  } else if (detectedType === "phone") {
4217
- if (!stringValue.startsWith("+")) {
4218
- return mergedLabels.identityPhoneMustStartWithPlusError;
4219
- }
4220
- const phoneDigits = stringValue.substring(1);
4221
- if (!/^\d+$/.test(phoneDigits)) {
4222
- return mergedLabels.identityPhoneMustBeOnlyDigitsError;
5293
+ const phoneDigits = stripNonDigits(stringValue.replace(/^\+/, ""));
5294
+ if (phoneDigits.length > 0 && (phoneDigits.length < PHONE_MIN_DIGITS || phoneDigits.length > PHONE_MAX_DIGITS)) {
5295
+ return mergedLabels.phoneInvalidLengthError;
4223
5296
  }
4224
5297
  }
4225
5298
  return true;
@@ -4230,6 +5303,13 @@ var InputDynamic = ({
4230
5303
  if (required && !value) {
4231
5304
  return mergedLabels.requiredFieldError;
4232
5305
  }
5306
+ if (value) {
5307
+ const stringValue = typeof value === "string" ? value : String(value);
5308
+ const phoneDigits = stripNonDigits(stringValue.replace(/^\+/, ""));
5309
+ if (phoneDigits.length > 0 && (phoneDigits.length < PHONE_MIN_DIGITS || phoneDigits.length > PHONE_MAX_DIGITS)) {
5310
+ return mergedLabels.phoneInvalidLengthError;
5311
+ }
5312
+ }
4233
5313
  return true;
4234
5314
  };
4235
5315
  }
@@ -4419,15 +5499,26 @@ var useStyles9 = reactComponents.makeStyles({
4419
5499
  borderRadius: reactComponents.tokens.borderRadiusCircular
4420
5500
  },
4421
5501
  serviceMenuCard: {
5502
+ [`@media (min-width: ${extendedTokens.breakpointXs})`]: {
5503
+ margin: reactComponents.tokens.spacingVerticalXL
5504
+ // marginBottom: tokens.spacingVerticalM,
5505
+ },
5506
+ [`@media (min-width: ${extendedTokens.breakpointSm})`]: {
5507
+ margin: reactComponents.tokens.spacingVerticalXL
5508
+ // marginBottom: tokens.spacingVerticalM,
5509
+ },
4422
5510
  [`@media (min-width: ${extendedTokens.breakpointMd})`]: {
4423
- margin: reactComponents.tokens.spacingVerticalM
5511
+ margin: reactComponents.tokens.spacingVerticalXXL
5512
+ // marginBottom: tokens.spacingVerticalM,
4424
5513
  },
4425
5514
  [`@media (min-width: ${extendedTokens.breakpointLg})`]: {
4426
- margin: reactComponents.tokens.spacingVerticalL
5515
+ margin: reactComponents.tokens.spacingVerticalXXL
4427
5516
  },
4428
5517
  [`@media (min-width: ${extendedTokens.breakpointXl})`]: {
4429
- margin: reactComponents.tokens.spacingVerticalXXXL,
4430
- maxWidth: "70%"
5518
+ margin: reactComponents.tokens.spacingVerticalXXL,
5519
+ maxWidth: "70%",
5520
+ marginLeft: "0px !important",
5521
+ marginRight: "0px !important"
4431
5522
  }
4432
5523
  },
4433
5524
  ticketSearchRow: {
@@ -4436,13 +5527,13 @@ var useStyles9 = reactComponents.makeStyles({
4436
5527
  }
4437
5528
  },
4438
5529
  formContainerCol: {
4439
- paddingTop: "1rem !important",
4440
- paddingBottom: "1rem !important",
5530
+ paddingTop: reactComponents.tokens.spacingVerticalXXL,
5531
+ paddingBottom: reactComponents.tokens.spacingVerticalXXL,
4441
5532
  [`@media (max-width: ${extendedTokens.breakpointXl})`]: {
4442
5533
  paddingLeft: "20px !important",
4443
5534
  paddingRight: "20px !important",
4444
- marginBottom: "1rem",
4445
- marginTop: "8rem",
5535
+ // marginBottom: "1rem",
5536
+ marginTop: "4rem",
4446
5537
  paddingTop: "0px !mportant",
4447
5538
  paddingBottom: "0px !mportant"
4448
5539
  }
@@ -4586,7 +5677,7 @@ var CardTicketSearch = ({
4586
5677
  style: {
4587
5678
  display: "flex",
4588
5679
  justifyContent: "center",
4589
- alignItems: "center",
5680
+ // alignItems: "center",
4590
5681
  marginBottom: "0px"
4591
5682
  },
4592
5683
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -5663,7 +6754,8 @@ var useStyles12 = reactComponents.makeStyles({
5663
6754
  cursor: "pointer",
5664
6755
  display: "flex",
5665
6756
  justifyContent: "center",
5666
- alignItems: "center"
6757
+ alignItems: "center",
6758
+ transition: "all 0.2s ease"
5667
6759
  }
5668
6760
  });
5669
6761
  var HarborListItem = ({
@@ -5674,23 +6766,34 @@ var HarborListItem = ({
5674
6766
  containerClassName
5675
6767
  }) => {
5676
6768
  const styles = useStyles12();
6769
+ const [isHovered, setIsHovered] = React__default.default.useState(false);
5677
6770
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5678
6771
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: containerClassName, children: [
5679
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.listContent, onClick: () => onSelect(harbor), children: [
5680
- /* @__PURE__ */ jsxRuntime.jsx(
5681
- react.Icon,
5682
- {
5683
- icon: "fluent:vehicle-ship-24-regular",
5684
- fontSize: 20,
5685
- className: styles.iconMargin
5686
- }
5687
- ),
5688
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "left" }, children: [
5689
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: harbor.portName }),
5690
- /* @__PURE__ */ jsxRuntime.jsx("br", {}),
5691
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: harbor.branchName })
5692
- ] })
5693
- ] }),
6772
+ /* @__PURE__ */ jsxRuntime.jsxs(
6773
+ "div",
6774
+ {
6775
+ className: styles.listContent,
6776
+ onClick: () => onSelect(harbor),
6777
+ onMouseEnter: () => setIsHovered(true),
6778
+ onMouseLeave: () => setIsHovered(false),
6779
+ children: [
6780
+ /* @__PURE__ */ jsxRuntime.jsx(
6781
+ react.Icon,
6782
+ {
6783
+ icon: "fluent:vehicle-ship-24-regular",
6784
+ fontSize: 20,
6785
+ className: styles.iconMargin,
6786
+ color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0
6787
+ }
6788
+ ),
6789
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "left" }, children: [
6790
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { style: { color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0, transition: "color 0.2s ease" }, children: harbor.portName }),
6791
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
6792
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { style: { color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0, transition: "color 0.2s ease" }, children: harbor.branchName })
6793
+ ] })
6794
+ ]
6795
+ }
6796
+ ),
5694
6797
  trailingIcon
5695
6798
  ] }),
5696
6799
  showDivider && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {})
@@ -6385,35 +7488,37 @@ var useStyles14 = reactComponents.makeStyles({
6385
7488
  },
6386
7489
  headerRow: {
6387
7490
  display: "flex",
6388
- justifyContent: "end",
7491
+ justifyContent: "flex-end",
6389
7492
  alignItems: "center",
6390
- borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`
7493
+ marginBottom: "12px",
7494
+ paddingRight: "8px"
6391
7495
  },
6392
7496
  serviceList: {
6393
7497
  display: "flex",
6394
7498
  flexDirection: "column",
6395
- gap: "0px",
6396
- maxHeight: "400px",
7499
+ gap: "12px",
7500
+ // maxHeight: "400px",
6397
7501
  overflowY: "auto",
6398
- paddingLeft: "20px"
7502
+ padding: "2px"
6399
7503
  },
6400
7504
  serviceItem: {
6401
- padding: "16px 0px",
6402
- borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
7505
+ padding: "16px",
7506
+ border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
7507
+ borderRadius: "12px",
6403
7508
  display: "flex",
6404
- alignItems: "flex-start",
6405
- gap: "12px",
7509
+ alignItems: "center",
7510
+ gap: "16px",
6406
7511
  cursor: "pointer",
6407
- transition: "background-color 0.2s ease",
7512
+ transition: "border-color 0.2s ease",
6408
7513
  ":hover": {
6409
- backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover
7514
+ border: `1px solid ${reactComponents.tokens.colorBrandBackground}`
6410
7515
  }
6411
7516
  },
6412
7517
  serviceContent: {
6413
7518
  flex: 1,
6414
7519
  display: "flex",
6415
7520
  flexDirection: "column",
6416
- gap: "4px"
7521
+ gap: "8px"
6417
7522
  },
6418
7523
  serviceName: {
6419
7524
  fontSize: reactComponents.tokens.fontSizeBase300,
@@ -6431,8 +7536,10 @@ var useStyles14 = reactComponents.makeStyles({
6431
7536
  lineHeight: "1.4"
6432
7537
  },
6433
7538
  footer: {
6434
- padding: "16px 20px",
6435
- borderTop: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`
7539
+ marginTop: reactComponents.tokens.spacingVerticalL,
7540
+ display: "flex",
7541
+ gap: reactComponents.tokens.spacingHorizontalM,
7542
+ justifyContent: "flex-end"
6436
7543
  },
6437
7544
  saveButton: {
6438
7545
  width: "100%",
@@ -6450,16 +7557,16 @@ var ServiceListSkeleton = ({
6450
7557
  style: {
6451
7558
  display: "flex",
6452
7559
  flexDirection: "column",
6453
- gap: "4px",
6454
- width: "80%"
7560
+ gap: "8px",
7561
+ width: "100%"
6455
7562
  },
6456
7563
  children: [
6457
7564
  /* @__PURE__ */ jsxRuntime.jsx(
6458
7565
  reactComponents.SkeletonItem,
6459
7566
  {
6460
7567
  style: {
6461
- width: "120px",
6462
- height: "20px",
7568
+ width: "60%",
7569
+ height: "24px",
6463
7570
  borderRadius: "4px"
6464
7571
  }
6465
7572
  }
@@ -6468,7 +7575,17 @@ var ServiceListSkeleton = ({
6468
7575
  reactComponents.SkeletonItem,
6469
7576
  {
6470
7577
  style: {
6471
- width: "80px",
7578
+ width: "100px",
7579
+ height: "24px",
7580
+ borderRadius: "12px"
7581
+ }
7582
+ }
7583
+ ),
7584
+ /* @__PURE__ */ jsxRuntime.jsx(
7585
+ reactComponents.SkeletonItem,
7586
+ {
7587
+ style: {
7588
+ width: "90%",
6472
7589
  height: "16px",
6473
7590
  borderRadius: "4px"
6474
7591
  }
@@ -6478,7 +7595,7 @@ var ServiceListSkeleton = ({
6478
7595
  reactComponents.SkeletonItem,
6479
7596
  {
6480
7597
  style: {
6481
- width: "100%",
7598
+ width: "70%",
6482
7599
  height: "16px",
6483
7600
  borderRadius: "4px"
6484
7601
  }
@@ -6491,8 +7608,8 @@ var ServiceListSkeleton = ({
6491
7608
  reactComponents.SkeletonItem,
6492
7609
  {
6493
7610
  style: {
6494
- width: "20px",
6495
- height: "20px",
7611
+ width: "24px",
7612
+ height: "24px",
6496
7613
  borderRadius: "4px"
6497
7614
  }
6498
7615
  }
@@ -6577,40 +7694,54 @@ var ModalService = ({
6577
7694
  actionButton: reloadButton,
6578
7695
  imageSrc: emptyImageSrc
6579
7696
  }
6580
- ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6581
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
6582
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
6583
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.selectAll }),
6584
- /* @__PURE__ */ jsxRuntime.jsx(
6585
- reactComponents.Checkbox,
6586
- {
6587
- checked: selectedServices.length === services.length,
6588
- onChange: handleToggleAll
6589
- }
6590
- )
6591
- ] }),
6592
- services.map((service) => /* @__PURE__ */ jsxRuntime.jsxs(
6593
- "div",
6594
- {
6595
- className: styles.serviceItem,
6596
- children: [
6597
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceContent, children: [
6598
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.serviceName, children: service.serviceTypeName }),
6599
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceType, children: service.serviceTypeCode }),
6600
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
6601
- ] }),
6602
- /* @__PURE__ */ jsxRuntime.jsx(
6603
- reactComponents.Checkbox,
7697
+ ) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
7698
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.headerRow, children: /* @__PURE__ */ jsxRuntime.jsx(
7699
+ reactComponents.Checkbox,
7700
+ {
7701
+ label: mergedLabels.selectAll,
7702
+ checked: selectedServices.length === services.length,
7703
+ onChange: handleToggleAll
7704
+ }
7705
+ ) }),
7706
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
7707
+ services.map((service) => /* @__PURE__ */ jsxRuntime.jsxs(
7708
+ "div",
7709
+ {
7710
+ className: styles.serviceItem,
7711
+ onClick: () => handleToggleService(service.serviceTypeId),
7712
+ children: [
7713
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceContent, children: [
7714
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.serviceName, children: service.serviceTypeName }),
7715
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { alignSelf: "flex-start" }, children: /* @__PURE__ */ jsxRuntime.jsx(
7716
+ reactComponents.Badge,
6604
7717
  {
6605
- checked: selectedServices.includes(service.serviceTypeId),
6606
- onChange: () => handleToggleService(service.serviceTypeId)
7718
+ appearance: "ghost",
7719
+ style: {
7720
+ backgroundColor: service.serviceTypeColor,
7721
+ color: "#ffffff",
7722
+ border: "none",
7723
+ padding: "4px 10px",
7724
+ height: "auto",
7725
+ borderRadius: "100px"
7726
+ },
7727
+ children: service.serviceTypeCode
6607
7728
  }
6608
- )
6609
- ]
6610
- },
6611
- service.serviceTypeId
6612
- ))
6613
- ] }),
7729
+ ) }),
7730
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
7731
+ ] }),
7732
+ /* @__PURE__ */ jsxRuntime.jsx(
7733
+ reactComponents.Checkbox,
7734
+ {
7735
+ checked: selectedServices.includes(service.serviceTypeId),
7736
+ onChange: () => handleToggleService(service.serviceTypeId),
7737
+ onClick: (e) => e.stopPropagation()
7738
+ }
7739
+ )
7740
+ ]
7741
+ },
7742
+ service.serviceTypeId
7743
+ )),
7744
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
6614
7745
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.footer, children: /* @__PURE__ */ jsxRuntime.jsx(
6615
7746
  reactComponents.Button,
6616
7747
  {
@@ -6622,7 +7753,7 @@ var ModalService = ({
6622
7753
  children: mergedLabels.saveButton
6623
7754
  }
6624
7755
  ) })
6625
- ] }) })
7756
+ ] }) }) })
6626
7757
  ] }) }) });
6627
7758
  };
6628
7759
 
@@ -6662,7 +7793,12 @@ var useStyles15 = reactComponents.makeStyles({
6662
7793
  accordionItem: {
6663
7794
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
6664
7795
  marginBottom: "1rem",
6665
- border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`
7796
+ border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
7797
+ cursor: "pointer",
7798
+ transition: "border-color 0.2s ease",
7799
+ "&:hover": {
7800
+ border: `1px solid ${reactComponents.tokens.colorBrandBackground}`
7801
+ }
6666
7802
  },
6667
7803
  passengerCount: {
6668
7804
  display: "flex",
@@ -7212,6 +8348,111 @@ var TypeOfServiceListSkeleton = ({ count = 3 }) => {
7212
8348
  }
7213
8349
  );
7214
8350
  };
8351
+ var HoverableAccordionHeaderContent = ({
8352
+ item,
8353
+ imageRenderer,
8354
+ styles
8355
+ }) => {
8356
+ const [isHovered, setIsHovered] = React.useState(false);
8357
+ return /* @__PURE__ */ jsxRuntime.jsxs(
8358
+ "div",
8359
+ {
8360
+ style: {
8361
+ display: "flex",
8362
+ alignItems: "center",
8363
+ width: "100%",
8364
+ cursor: "pointer"
8365
+ },
8366
+ onMouseEnter: () => setIsHovered(true),
8367
+ onMouseLeave: () => setIsHovered(false),
8368
+ children: [
8369
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: imageRenderer({
8370
+ src: item.image,
8371
+ alt: item.title,
8372
+ width: 74,
8373
+ height: 74
8374
+ }) }),
8375
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.accordionTitleAndInfo, children: [
8376
+ /* @__PURE__ */ jsxRuntime.jsx(
8377
+ reactComponents.Body1,
8378
+ {
8379
+ style: {
8380
+ color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
8381
+ transition: "color 0.2s ease"
8382
+ },
8383
+ children: item.title
8384
+ }
8385
+ ),
8386
+ /* @__PURE__ */ jsxRuntime.jsx(
8387
+ reactComponents.Caption1,
8388
+ {
8389
+ style: {
8390
+ color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
8391
+ transition: "color 0.2s ease"
8392
+ },
8393
+ children: item.info
8394
+ }
8395
+ )
8396
+ ] })
8397
+ ]
8398
+ }
8399
+ );
8400
+ };
8401
+ var HoverableRadioItem = ({
8402
+ item,
8403
+ imageRenderer,
8404
+ styles,
8405
+ isChild = false
8406
+ }) => {
8407
+ const [isHovered, setIsHovered] = React.useState(false);
8408
+ return /* @__PURE__ */ jsxRuntime.jsxs(
8409
+ "div",
8410
+ {
8411
+ className: reactComponents.mergeClasses(styles.accordionHeader, styles.accordionItem),
8412
+ style: { padding: reactComponents.tokens.spacingHorizontalXS, cursor: "pointer" },
8413
+ onMouseEnter: () => setIsHovered(true),
8414
+ onMouseLeave: () => setIsHovered(false),
8415
+ children: [
8416
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: isChild ? void 0 : { marginLeft: 2 }, children: imageRenderer({
8417
+ src: item.image,
8418
+ alt: item.title,
8419
+ width: isChild ? 48 : 74,
8420
+ height: isChild ? 48 : 74
8421
+ }) }),
8422
+ /* @__PURE__ */ jsxRuntime.jsxs(
8423
+ "div",
8424
+ {
8425
+ className: styles.accordionTitleAndInfo,
8426
+ style: isChild ? void 0 : { marginLeft: 18 },
8427
+ children: [
8428
+ /* @__PURE__ */ jsxRuntime.jsx(
8429
+ reactComponents.Body1,
8430
+ {
8431
+ style: {
8432
+ color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
8433
+ transition: "color 0.2s ease"
8434
+ },
8435
+ children: item.title
8436
+ }
8437
+ ),
8438
+ /* @__PURE__ */ jsxRuntime.jsx(
8439
+ reactComponents.Caption1,
8440
+ {
8441
+ style: {
8442
+ color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
8443
+ transition: "color 0.2s ease"
8444
+ },
8445
+ children: item.info
8446
+ }
8447
+ )
8448
+ ]
8449
+ }
8450
+ ),
8451
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(item.id) })
8452
+ ]
8453
+ }
8454
+ );
8455
+ };
7215
8456
  var ModalTypeOfService = ({
7216
8457
  language = "id",
7217
8458
  labels,
@@ -7370,54 +8611,28 @@ var ModalTypeOfService = ({
7370
8611
  value: item?.id,
7371
8612
  className: styles.accordionItem,
7372
8613
  children: [
7373
- /* @__PURE__ */ jsxRuntime.jsxs(
8614
+ /* @__PURE__ */ jsxRuntime.jsx(
7374
8615
  reactComponents.AccordionHeader,
7375
8616
  {
7376
8617
  className: styles.accordionHeader,
7377
8618
  expandIconPosition: "end",
7378
- children: [
7379
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: imageRenderer({
7380
- src: item.image,
7381
- alt: item.title,
7382
- width: 74,
7383
- height: 74
7384
- }) }),
7385
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.accordionTitleAndInfo, children: [
7386
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: item.title }),
7387
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: item.info })
7388
- ] })
7389
- ]
8619
+ children: /* @__PURE__ */ jsxRuntime.jsx(
8620
+ HoverableAccordionHeaderContent,
8621
+ {
8622
+ item,
8623
+ imageRenderer,
8624
+ styles
8625
+ }
8626
+ )
7390
8627
  }
7391
8628
  ),
7392
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionBody, children: item.children.length > 0 && item.children.map((childItem, childIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
7393
- "div",
8629
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionBody, children: item.children.length > 0 && item.children.map((childItem, childIndex) => /* @__PURE__ */ jsxRuntime.jsx(
8630
+ HoverableRadioItem,
7394
8631
  {
7395
- className: reactComponents.mergeClasses(
7396
- styles.accordionHeader,
7397
- styles.accordionItem
7398
- ),
7399
- style: {
7400
- padding: reactComponents.tokens.spacingHorizontalXS
7401
- },
7402
- children: [
7403
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: imageRenderer({
7404
- src: childItem.image,
7405
- alt: childItem.title,
7406
- width: 48,
7407
- height: 48
7408
- }) }),
7409
- /* @__PURE__ */ jsxRuntime.jsxs(
7410
- "div",
7411
- {
7412
- className: styles.accordionTitleAndInfo,
7413
- children: [
7414
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: childItem.title }),
7415
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: childItem.info })
7416
- ]
7417
- }
7418
- ),
7419
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(childItem.id) })
7420
- ]
8632
+ item: childItem,
8633
+ imageRenderer,
8634
+ styles,
8635
+ isChild: true
7421
8636
  },
7422
8637
  childIndex
7423
8638
  )) })
@@ -7426,34 +8641,13 @@ var ModalTypeOfService = ({
7426
8641
  index
7427
8642
  );
7428
8643
  } else if (item.children.length === 0) {
7429
- return /* @__PURE__ */ jsxRuntime.jsxs(
7430
- "div",
8644
+ return /* @__PURE__ */ jsxRuntime.jsx(
8645
+ HoverableRadioItem,
7431
8646
  {
7432
- className: reactComponents.mergeClasses(
7433
- styles.accordionHeader,
7434
- styles.accordionItem
7435
- ),
7436
- style: { padding: reactComponents.tokens.spacingHorizontalXS },
7437
- children: [
7438
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginLeft: 2 }, children: imageRenderer({
7439
- src: item.image,
7440
- alt: item.title,
7441
- width: 74,
7442
- height: 74
7443
- }) }),
7444
- /* @__PURE__ */ jsxRuntime.jsxs(
7445
- "div",
7446
- {
7447
- className: styles.accordionTitleAndInfo,
7448
- style: { marginLeft: 18 },
7449
- children: [
7450
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: item.title }),
7451
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: item.info })
7452
- ]
7453
- }
7454
- ),
7455
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(item.id) })
7456
- ]
8647
+ item,
8648
+ imageRenderer,
8649
+ styles,
8650
+ isChild: false
7457
8651
  },
7458
8652
  index
7459
8653
  );
@@ -13604,7 +14798,8 @@ var DEFAULT_LABELS36 = {
13604
14798
  totalPayment: "Total Pembayaran",
13605
14799
  checkStatusInfo: "Klik tombol dibawah ini jika sudah melakukan pembayaran",
13606
14800
  checkStatusButton: "Cek Status Pembayaran",
13607
- currencySymbol: "Rp."
14801
+ currencySymbol: "Rp.",
14802
+ changePayment: "Ubah Metode Pembayaran"
13608
14803
  },
13609
14804
  en: {
13610
14805
  expiryPrefix: "Virtual account code valid until",
@@ -13612,7 +14807,8 @@ var DEFAULT_LABELS36 = {
13612
14807
  totalPayment: "Total Payment",
13613
14808
  checkStatusInfo: "Click the button below if you have made the payment",
13614
14809
  checkStatusButton: "Check Payment Status",
13615
- currencySymbol: "Rp."
14810
+ currencySymbol: "Rp.",
14811
+ changePayment: "Change Payment Method"
13616
14812
  }
13617
14813
  };
13618
14814
  var useStyles38 = reactComponents.makeStyles({
@@ -13695,7 +14891,8 @@ var CardPaymentInfo = ({
13695
14891
  totalAmount,
13696
14892
  guides,
13697
14893
  onCopyVA,
13698
- onCheckStatus
14894
+ onCheckStatus,
14895
+ onChangePayment
13699
14896
  }) => {
13700
14897
  const styles = useStyles38();
13701
14898
  const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
@@ -13724,6 +14921,17 @@ var CardPaymentInfo = ({
13724
14921
  )
13725
14922
  ] })
13726
14923
  ] }),
14924
+ /* @__PURE__ */ jsxRuntime.jsx(
14925
+ reactComponents.Button,
14926
+ {
14927
+ appearance: "secondary",
14928
+ size: "large",
14929
+ shape: "circular",
14930
+ className: styles.checkStatusButton,
14931
+ onClick: onChangePayment,
14932
+ children: mergedLabels.changePayment
14933
+ }
14934
+ ),
13727
14935
  /* @__PURE__ */ jsxRuntime.jsx(
13728
14936
  reactComponents.Field,
13729
14937
  {
@@ -13732,7 +14940,9 @@ var CardPaymentInfo = ({
13732
14940
  children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Title2, { children: [
13733
14941
  mergedLabels.currencySymbol,
13734
14942
  " ",
13735
- totalAmount.toLocaleString(language === "id" ? "id-ID" : "en-US")
14943
+ totalAmount.toLocaleString(
14944
+ language === "id" ? "id-ID" : "en-US"
14945
+ )
13736
14946
  ] })
13737
14947
  }
13738
14948
  )