@tuwaio/nova-connect 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +5 -15
  2. package/dist/{ToastError-CaoiEVOK.d.cts → ToastError-C3LvnSma.d.cts} +322 -113
  3. package/dist/{ToastError-BLFMIzVb.d.ts → ToastError-CVhCoryf.d.ts} +322 -113
  4. package/dist/chunk-3BMX6JWH.js +2 -0
  5. package/dist/chunk-3BMX6JWH.js.map +1 -0
  6. package/dist/chunk-4FB4UCVM.js +6 -0
  7. package/dist/chunk-4FB4UCVM.js.map +1 -0
  8. package/dist/chunk-B2NRY4JV.js +2 -0
  9. package/dist/chunk-B2NRY4JV.js.map +1 -0
  10. package/dist/chunk-F2VSTHQ4.js +2 -0
  11. package/dist/chunk-F2VSTHQ4.js.map +1 -0
  12. package/dist/{chunk-OA6MB7CZ.cjs → chunk-FK4AEST5.cjs} +2 -2
  13. package/dist/{chunk-OA6MB7CZ.cjs.map → chunk-FK4AEST5.cjs.map} +1 -1
  14. package/dist/chunk-IMKRWFCZ.cjs +3 -0
  15. package/dist/chunk-IMKRWFCZ.cjs.map +1 -0
  16. package/dist/chunk-L5MEEHVK.cjs +2 -0
  17. package/dist/chunk-L5MEEHVK.cjs.map +1 -0
  18. package/dist/chunk-P5ZBSLGK.js +2 -0
  19. package/dist/{chunk-MPEJHQKC.js.map → chunk-P5ZBSLGK.js.map} +1 -1
  20. package/dist/chunk-PTHXIVB5.cjs +2 -0
  21. package/dist/chunk-PTHXIVB5.cjs.map +1 -0
  22. package/dist/chunk-S6WXKVYP.js +3 -0
  23. package/dist/chunk-S6WXKVYP.js.map +1 -0
  24. package/dist/chunk-UDTWMOQ2.cjs +6 -0
  25. package/dist/chunk-UDTWMOQ2.cjs.map +1 -0
  26. package/dist/chunk-YI7RYSN6.cjs +2 -0
  27. package/dist/chunk-YI7RYSN6.cjs.map +1 -0
  28. package/dist/components/index.cjs +1 -1
  29. package/dist/components/index.d.cts +3 -3
  30. package/dist/components/index.d.ts +3 -3
  31. package/dist/components/index.js +1 -1
  32. package/dist/evm-BVE2G4MP.js +2 -0
  33. package/dist/evm-BVE2G4MP.js.map +1 -0
  34. package/dist/evm-DU3VGIPD.cjs +2 -0
  35. package/dist/evm-DU3VGIPD.cjs.map +1 -0
  36. package/dist/getChainsListByConnectorType-7W3NDNRC.cjs +2 -0
  37. package/dist/{getChainsListByWalletType-VMQ4BO2B.js.map → getChainsListByConnectorType-7W3NDNRC.cjs.map} +1 -1
  38. package/dist/getChainsListByConnectorType-FGTS3CWJ.js +2 -0
  39. package/dist/{getChainsListByWalletType-CDPECVNS.cjs.map → getChainsListByConnectorType-FGTS3CWJ.js.map} +1 -1
  40. package/dist/hooks/index.cjs +1 -1
  41. package/dist/hooks/index.d.cts +23 -4
  42. package/dist/hooks/index.d.ts +23 -4
  43. package/dist/hooks/index.js +1 -1
  44. package/dist/i18n/index.cjs +1 -1
  45. package/dist/i18n/index.d.cts +1 -1
  46. package/dist/i18n/index.d.ts +1 -1
  47. package/dist/i18n/index.js +1 -1
  48. package/dist/index.cjs +1 -1
  49. package/dist/index.cjs.map +1 -1
  50. package/dist/index.css +112 -8
  51. package/dist/index.d.cts +23 -23
  52. package/dist/index.d.ts +23 -23
  53. package/dist/index.js +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/satellite/index.cjs +1 -1
  56. package/dist/satellite/index.d.cts +1 -1
  57. package/dist/satellite/index.d.ts +1 -1
  58. package/dist/satellite/index.js +1 -1
  59. package/dist/solana/index.cjs +1 -1
  60. package/dist/solana/index.js +1 -1
  61. package/dist/solana-CDGGMN74.cjs +2 -0
  62. package/dist/solana-CDGGMN74.cjs.map +1 -0
  63. package/dist/solana-DHXEV2TG.js +2 -0
  64. package/dist/solana-DHXEV2TG.js.map +1 -0
  65. package/dist/{types-D4Vti05g.d.cts → types-eao2UQcC.d.cts} +7 -1
  66. package/dist/{types-D4Vti05g.d.ts → types-eao2UQcC.d.ts} +7 -1
  67. package/dist/{useWalletNativeBalance-CEASeZ6Z.d.ts → useWalletNativeBalance-Cv8QQLQv.d.ts} +2 -2
  68. package/dist/{useWalletNativeBalance-DSt1VUWC.d.cts → useWalletNativeBalance-D49yGzRi.d.cts} +2 -2
  69. package/dist/utils-TF3RVHPT.cjs +2 -0
  70. package/dist/{utils-H5O25MTI.cjs.map → utils-TF3RVHPT.cjs.map} +1 -1
  71. package/dist/utils-YYMTL3XH.js +2 -0
  72. package/dist/{utils-SUIRQJIA.js.map → utils-YYMTL3XH.js.map} +1 -1
  73. package/package.json +38 -43
  74. package/dist/chunk-7F5QM2LC.js +0 -6
  75. package/dist/chunk-7F5QM2LC.js.map +0 -1
  76. package/dist/chunk-7FTV55DQ.cjs +0 -2
  77. package/dist/chunk-7FTV55DQ.cjs.map +0 -1
  78. package/dist/chunk-B26D6OI7.cjs +0 -6
  79. package/dist/chunk-B26D6OI7.cjs.map +0 -1
  80. package/dist/chunk-DYDY3FCT.cjs +0 -2
  81. package/dist/chunk-DYDY3FCT.cjs.map +0 -1
  82. package/dist/chunk-J4TY3CJF.js +0 -2
  83. package/dist/chunk-J4TY3CJF.js.map +0 -1
  84. package/dist/chunk-MPEJHQKC.js +0 -2
  85. package/dist/chunk-MQGDTFY7.js +0 -2
  86. package/dist/chunk-MQGDTFY7.js.map +0 -1
  87. package/dist/chunk-NMQZA377.cjs +0 -2
  88. package/dist/chunk-NMQZA377.cjs.map +0 -1
  89. package/dist/chunk-QERPNHKX.cjs +0 -2
  90. package/dist/chunk-QERPNHKX.cjs.map +0 -1
  91. package/dist/chunk-S5WT3DLF.js +0 -2
  92. package/dist/chunk-S5WT3DLF.js.map +0 -1
  93. package/dist/chunk-TAV7EL23.js +0 -2
  94. package/dist/chunk-TAV7EL23.js.map +0 -1
  95. package/dist/evm-7NHOTSAK.cjs +0 -2
  96. package/dist/evm-7NHOTSAK.cjs.map +0 -1
  97. package/dist/evm-RBGEX4L3.js +0 -2
  98. package/dist/evm-RBGEX4L3.js.map +0 -1
  99. package/dist/getChainsListByWalletType-CDPECVNS.cjs +0 -2
  100. package/dist/getChainsListByWalletType-VMQ4BO2B.js +0 -2
  101. package/dist/solana-GLHHYZDQ.js +0 -2
  102. package/dist/solana-GLHHYZDQ.js.map +0 -1
  103. package/dist/solana-JUU54KQ3.cjs +0 -2
  104. package/dist/solana-JUU54KQ3.cjs.map +0 -1
  105. package/dist/utils-H5O25MTI.cjs +0 -2
  106. package/dist/utils-SUIRQJIA.js +0 -2
package/dist/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -7,8 +7,8 @@
7
7
  monospace;
8
8
  --novacon-color-red-500: oklch(63.7% 0.237 25.331);
9
9
  --novacon-color-red-600: oklch(57.7% 0.245 27.325);
10
+ --novacon-color-green-600: oklch(62.7% 0.194 149.214);
10
11
  --novacon-color-blue-500: oklch(62.3% 0.214 259.815);
11
- --novacon-color-gray-300: oklch(87.2% 0.01 258.338);
12
12
  --novacon-color-white: #fff;
13
13
  --novacon-spacing: 0.25rem;
14
14
  --novacon-container-md: 28rem;
@@ -25,6 +25,7 @@
25
25
  --novacon-font-weight-medium: 500;
26
26
  --novacon-font-weight-semibold: 600;
27
27
  --novacon-font-weight-bold: 700;
28
+ --novacon-tracking-wider: 0.05em;
28
29
  --novacon-leading-relaxed: 1.625;
29
30
  --novacon-radius-md: 0.375rem;
30
31
  --novacon-radius-lg: 0.5rem;
@@ -106,12 +107,18 @@
106
107
  .novacon\:right-0\.5 {
107
108
  right: calc(var(--novacon-spacing) * 0.5);
108
109
  }
110
+ .novacon\:right-2 {
111
+ right: calc(var(--novacon-spacing) * 2);
112
+ }
109
113
  .novacon\:right-5 {
110
114
  right: calc(var(--novacon-spacing) * 5);
111
115
  }
112
116
  .novacon\:right-\[-10px\] {
113
117
  right: -10px;
114
118
  }
119
+ .novacon\:right-\[-30px\] {
120
+ right: -30px;
121
+ }
115
122
  .novacon\:right-\[-40px\] {
116
123
  right: -40px;
117
124
  }
@@ -142,6 +149,9 @@
142
149
  .novacon\:left-1\/2 {
143
150
  left: calc(1/2 * 100%);
144
151
  }
152
+ .novacon\:left-2 {
153
+ left: calc(var(--novacon-spacing) * 2);
154
+ }
145
155
  .novacon\:left-\[-10px\] {
146
156
  left: -10px;
147
157
  }
@@ -193,6 +203,9 @@
193
203
  .novacon\:mt-3 {
194
204
  margin-top: calc(var(--novacon-spacing) * 3);
195
205
  }
206
+ .novacon\:mt-4 {
207
+ margin-top: calc(var(--novacon-spacing) * 4);
208
+ }
196
209
  .novacon\:mt-6 {
197
210
  margin-top: calc(var(--novacon-spacing) * 6);
198
211
  }
@@ -217,6 +230,15 @@
217
230
  .novacon\:-ml-2 {
218
231
  margin-left: calc(var(--novacon-spacing) * -2);
219
232
  }
233
+ .novacon\:ml-0 {
234
+ margin-left: calc(var(--novacon-spacing) * 0);
235
+ }
236
+ .novacon\:ml-2 {
237
+ margin-left: calc(var(--novacon-spacing) * 2);
238
+ }
239
+ .novacon\:ml-4 {
240
+ margin-left: calc(var(--novacon-spacing) * 4);
241
+ }
220
242
  .novacon\:ml-auto {
221
243
  margin-left: auto;
222
244
  }
@@ -292,6 +314,9 @@
292
314
  .novacon\:max-h-32 {
293
315
  max-height: calc(var(--novacon-spacing) * 32);
294
316
  }
317
+ .novacon\:max-h-\[240px\] {
318
+ max-height: 240px;
319
+ }
295
320
  .novacon\:max-h-\[310px\] {
296
321
  max-height: 310px;
297
322
  }
@@ -476,6 +501,9 @@
476
501
  .novacon\:gap-4 {
477
502
  gap: calc(var(--novacon-spacing) * 4);
478
503
  }
504
+ .novacon\:gap-6 {
505
+ gap: calc(var(--novacon-spacing) * 6);
506
+ }
479
507
  .novacon\:space-y-1 {
480
508
  :where(& > :not(:last-child)) {
481
509
  --tw-space-y-reverse: 0;
@@ -531,9 +559,6 @@
531
559
  .novacon\:overflow-y-auto {
532
560
  overflow-y: auto;
533
561
  }
534
- .novacon\:rounded {
535
- border-radius: 0.25rem;
536
- }
537
562
  .novacon\:rounded-full {
538
563
  border-radius: calc(infinity * 1px);
539
564
  }
@@ -562,6 +587,13 @@
562
587
  border-bottom-style: var(--tw-border-style);
563
588
  border-bottom-width: 1px;
564
589
  }
590
+ .novacon\:border-dashed {
591
+ --tw-border-style: dashed;
592
+ border-style: dashed;
593
+ }
594
+ .novacon\:border-\[var\(--tuwa-bg-secondary\)\] {
595
+ border-color: var(--tuwa-bg-secondary);
596
+ }
565
597
  .novacon\:border-\[var\(--tuwa-border-primary\)\] {
566
598
  border-color: var(--tuwa-border-primary);
567
599
  }
@@ -577,6 +609,9 @@
577
609
  .novacon\:border-\[var\(--tuwa-text-accent\)\] {
578
610
  border-color: var(--tuwa-text-accent);
579
611
  }
612
+ .novacon\:border-blue-500 {
613
+ border-color: var(--novacon-color-blue-500);
614
+ }
580
615
  .novacon\:border-red-500 {
581
616
  border-color: var(--novacon-color-red-500);
582
617
  }
@@ -586,6 +621,12 @@
586
621
  .novacon\:border-t-transparent {
587
622
  border-top-color: transparent;
588
623
  }
624
+ .novacon\:bg-\[var\(--tuwa-bg-accent\)\]\/10 {
625
+ background-color: var(--tuwa-bg-accent);
626
+ @supports (color: color-mix(in lab, red, red)) {
627
+ background-color: color-mix(in oklab, var(--tuwa-bg-accent) 10%, transparent);
628
+ }
629
+ }
589
630
  .novacon\:bg-\[var\(--tuwa-bg-muted\)\] {
590
631
  background-color: var(--tuwa-bg-muted);
591
632
  }
@@ -607,6 +648,12 @@
607
648
  .novacon\:bg-\[var\(--tuwa-error-text\)\] {
608
649
  background-color: var(--tuwa-error-text);
609
650
  }
651
+ .novacon\:bg-\[var\(--tuwa-success-bg\)\]\/20 {
652
+ background-color: var(--tuwa-success-bg);
653
+ @supports (color: color-mix(in lab, red, red)) {
654
+ background-color: color-mix(in oklab, var(--tuwa-success-bg) 20%, transparent);
655
+ }
656
+ }
610
657
  .novacon\:bg-\[var\(--tuwa-success-text\)\] {
611
658
  background-color: var(--tuwa-success-text);
612
659
  }
@@ -619,9 +666,6 @@
619
666
  .novacon\:bg-blue-500 {
620
667
  background-color: var(--novacon-color-blue-500);
621
668
  }
622
- .novacon\:bg-gray-300 {
623
- background-color: var(--novacon-color-gray-300);
624
- }
625
669
  .novacon\:bg-red-500 {
626
670
  background-color: var(--novacon-color-red-500);
627
671
  }
@@ -702,6 +746,9 @@
702
746
  .novacon\:py-1 {
703
747
  padding-block: calc(var(--novacon-spacing) * 1);
704
748
  }
749
+ .novacon\:py-1\.5 {
750
+ padding-block: calc(var(--novacon-spacing) * 1.5);
751
+ }
705
752
  .novacon\:py-2 {
706
753
  padding-block: calc(var(--novacon-spacing) * 2);
707
754
  }
@@ -781,6 +828,10 @@
781
828
  --tw-font-weight: var(--novacon-font-weight-semibold);
782
829
  font-weight: var(--novacon-font-weight-semibold);
783
830
  }
831
+ .novacon\:tracking-wider {
832
+ --tw-tracking: var(--novacon-tracking-wider);
833
+ letter-spacing: var(--novacon-tracking-wider);
834
+ }
784
835
  .novacon\:break-words {
785
836
  overflow-wrap: break-word;
786
837
  }
@@ -814,15 +865,27 @@
814
865
  .novacon\:text-\[var\(--tuwa-warning-text\)\] {
815
866
  color: var(--tuwa-warning-text);
816
867
  }
868
+ .novacon\:text-blue-500 {
869
+ color: var(--novacon-color-blue-500);
870
+ }
871
+ .novacon\:text-green-600 {
872
+ color: var(--novacon-color-green-600);
873
+ }
817
874
  .novacon\:text-red-500 {
818
875
  color: var(--novacon-color-red-500);
819
876
  }
820
877
  .novacon\:text-white {
821
878
  color: var(--novacon-color-white);
822
879
  }
880
+ .novacon\:uppercase {
881
+ text-transform: uppercase;
882
+ }
823
883
  .novacon\:opacity-0 {
824
884
  opacity: 0%;
825
885
  }
886
+ .novacon\:opacity-25 {
887
+ opacity: 25%;
888
+ }
826
889
  .novacon\:opacity-50 {
827
890
  opacity: 50%;
828
891
  }
@@ -911,6 +974,13 @@
911
974
  -moz-user-select: none;
912
975
  user-select: none;
913
976
  }
977
+ .novacon\:group-hover\:ml-6 {
978
+ &:is(:where(.novacon\:group):hover *) {
979
+ @media (hover: hover) {
980
+ margin-left: calc(var(--novacon-spacing) * 6);
981
+ }
982
+ }
983
+ }
914
984
  .novacon\:group-hover\:translate-x-0 {
915
985
  &:is(:where(.novacon\:group):hover *) {
916
986
  @media (hover: hover) {
@@ -1073,6 +1143,23 @@
1073
1143
  }
1074
1144
  }
1075
1145
  }
1146
+ .novacon\:hover\:border-\[var\(--tuwa-text-accent\)\] {
1147
+ &:hover {
1148
+ @media (hover: hover) {
1149
+ border-color: var(--tuwa-text-accent);
1150
+ }
1151
+ }
1152
+ }
1153
+ .novacon\:hover\:bg-\[var\(--tuwa-bg-error\)\]\/10 {
1154
+ &:hover {
1155
+ @media (hover: hover) {
1156
+ background-color: var(--tuwa-bg-error);
1157
+ @supports (color: color-mix(in lab, red, red)) {
1158
+ background-color: color-mix(in oklab, var(--tuwa-bg-error) 10%, transparent);
1159
+ }
1160
+ }
1161
+ }
1162
+ }
1076
1163
  .novacon\:hover\:bg-\[var\(--tuwa-bg-muted\)\] {
1077
1164
  &:hover {
1078
1165
  @media (hover: hover) {
@@ -1138,6 +1225,13 @@
1138
1225
  }
1139
1226
  }
1140
1227
  }
1228
+ .novacon\:hover\:text-\[var\(--tuwa-text-accent\)\] {
1229
+ &:hover {
1230
+ @media (hover: hover) {
1231
+ color: var(--tuwa-text-accent);
1232
+ }
1233
+ }
1234
+ }
1141
1235
  .novacon\:hover\:text-\[var\(--tuwa-text-primary\)\] {
1142
1236
  &:hover {
1143
1237
  @media (hover: hover) {
@@ -1191,6 +1285,11 @@
1191
1285
  --tw-ring-color: var(--tuwa-text-secondary);
1192
1286
  }
1193
1287
  }
1288
+ .novacon\:focus\:ring-blue-500 {
1289
+ &:focus {
1290
+ --tw-ring-color: var(--novacon-color-blue-500);
1291
+ }
1292
+ }
1194
1293
  .novacon\:focus\:ring-red-500 {
1195
1294
  &:focus {
1196
1295
  --tw-ring-color: var(--novacon-color-red-500);
@@ -1839,6 +1938,10 @@ div[data-radix-popper-content-wrapper] {
1839
1938
  syntax: "*";
1840
1939
  inherits: false;
1841
1940
  }
1941
+ @property --tw-tracking {
1942
+ syntax: "*";
1943
+ inherits: false;
1944
+ }
1842
1945
  @property --tw-shadow {
1843
1946
  syntax: "*";
1844
1947
  inherits: false;
@@ -2001,6 +2104,7 @@ div[data-radix-popper-content-wrapper] {
2001
2104
  --tw-gradient-to-position: 100%;
2002
2105
  --tw-leading: initial;
2003
2106
  --tw-font-weight: initial;
2107
+ --tw-tracking: initial;
2004
2108
  --tw-shadow: 0 0 #0000;
2005
2109
  --tw-shadow-color: initial;
2006
2110
  --tw-shadow-alpha: 100%;
package/dist/index.d.cts CHANGED
@@ -1,14 +1,14 @@
1
- import { OrbitAdapter, WalletType } from '@tuwaio/orbit-core';
2
- export { WalletNameAndAvatarData, useGetWalletNameAndAvatar } from './hooks/index.cjs';
3
- import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps } from './useWalletNativeBalance-DSt1VUWC.cjs';
4
- export { L as LabelCategory, p as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, o as createLabelsSubset, n as getLabelWithFallback, k as hasLabel, m as isDefaultLabels, e as useHasNovaConnectContext, l as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, q as useWalletNativeBalance } from './useWalletNativeBalance-DSt1VUWC.cjs';
1
+ import { OrbitAdapter, ConnectorType } from '@tuwaio/orbit-core';
2
+ export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.cjs';
3
+ import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps } from './useWalletNativeBalance-D49yGzRi.cjs';
4
+ export { L as LabelCategory, p as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, o as createLabelsSubset, n as getLabelWithFallback, k as hasLabel, m as isDefaultLabels, e as useHasNovaConnectContext, l as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, q as useWalletNativeBalance } from './useWalletNativeBalance-D49yGzRi.cjs';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
7
7
  import { ToastContainer, toast, ToastPosition } from 'react-toastify';
8
- import { at as ToastErrorCustomization, aJ as ConnectModalCustomization, u as ConnectedModalCustomization } from './ToastError-CaoiEVOK.cjs';
9
- export { aK as getNetworkIcon } from './ToastError-CaoiEVOK.cjs';
10
- import { N as NovaConnectLabels } from './types-D4Vti05g.cjs';
11
- import { BaseWallet } from '@tuwaio/satellite-core';
8
+ import { at as ToastErrorCustomization, aJ as ConnectModalCustomization, u as ConnectedModalCustomization } from './ToastError-C3LvnSma.cjs';
9
+ export { aK as getNetworkIcon } from './ToastError-C3LvnSma.cjs';
10
+ import { N as NovaConnectLabels } from './types-eao2UQcC.cjs';
11
+ import { BaseConnector } from '@tuwaio/satellite-core';
12
12
  import { I as InitialChains, C as ChainIdentifierArray } from './types-DGsiEwne.cjs';
13
13
  export { A as AllChainConfigs } from './types-DGsiEwne.cjs';
14
14
  import { Connector } from '@tuwaio/satellite-react';
@@ -158,9 +158,9 @@ type ProviderContext = {
158
158
  /** Current wallet connection state */
159
159
  isConnected: boolean;
160
160
  /** Active wallet instance */
161
- activeWallet: BaseWallet | undefined;
161
+ activeConnection: BaseConnector | undefined;
162
162
  /** Current wallet connection error */
163
- walletConnectionError: string | undefined;
163
+ connectionError: string | undefined;
164
164
  /** All modal and UI states */
165
165
  modalStates: {
166
166
  isConnectModalOpen: boolean;
@@ -307,7 +307,7 @@ declare namespace NovaConnectProvider {
307
307
  * @example
308
308
  * ```typescript
309
309
  * const params: GetChainsListParams = {
310
- * walletType: WalletType.EVM_METAMASK,
310
+ * connectorType: WalletType.EVM_METAMASK,
311
311
  * appChains: [
312
312
  * { id: 1, name: 'Ethereum' },
313
313
  * { id: 137, name: 'Polygon' }
@@ -318,12 +318,12 @@ declare namespace NovaConnectProvider {
318
318
  */
319
319
  interface GetChainsListParams extends InitialChains {
320
320
  /** The wallet type to determine chain compatibility */
321
- walletType: WalletType;
321
+ connectorType: ConnectorType;
322
322
  /** Optional array of specific chain identifiers to filter or validate */
323
323
  chains?: ChainIdentifierArray;
324
324
  }
325
325
  /**
326
- * Retrieves chain list for a specific wallet type with automatic adapter loading.
326
+ * Retrieves chain list for a specific connectorType type with automatic adapter loading.
327
327
  *
328
328
  * This is the primary function for getting blockchain-compatible chains based on
329
329
  * wallet type and configuration. It automatically determines the correct adapter,
@@ -334,14 +334,14 @@ interface GetChainsListParams extends InitialChains {
334
334
  * - Solana clusters: Returns string cluster names from RPC configuration
335
335
  * - Future blockchains: Extensible through the adapter pattern
336
336
  *
337
- * @param params - Configuration object with wallet type and chain data
337
+ * @param params - Configuration object with connectorType type and chain data
338
338
  * @returns Promise resolving to array of chain identifiers
339
339
  *
340
340
  * @example
341
341
  * ```typescript
342
342
  * // Get EVM chains for MetaMask
343
- * const evmChains = await getChainsListByWalletType({
344
- * walletType: WalletType.EVM_METAMASK,
343
+ * const evmChains = await getChainsListByConnectorType({
344
+ * connectorType: ConnectorType.EVM_METAMASK,
345
345
  * appChains: [
346
346
  * { id: 1, name: 'Ethereum' },
347
347
  * { id: 137, name: 'Polygon' }
@@ -350,8 +350,8 @@ interface GetChainsListParams extends InitialChains {
350
350
  * // Returns: [1, 137]
351
351
  *
352
352
  * // Get Solana clusters for Phantom
353
- * const solanaClusters = await getChainsListByWalletType({
354
- * walletType: WalletType.SOLANA_PHANTOM,
353
+ * const solanaClusters = await getChainsListByConnectorType({
354
+ * connectorType: ConnectorType.SOLANA_PHANTOM,
355
355
  * solanaRPCUrls: {
356
356
  * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',
357
357
  * 'devnet': 'https://api.devnet.solana.com'
@@ -362,7 +362,7 @@ interface GetChainsListParams extends InitialChains {
362
362
  *
363
363
  * @since 1.0.0
364
364
  */
365
- declare function getChainsListByWalletType(params: GetChainsListParams): Promise<(string | number)[]>;
365
+ declare function getChainsListByConnectorType(params: GetChainsListParams): Promise<(string | number)[]>;
366
366
  /**
367
367
  * Synchronous version that only works with pre-loaded adapters.
368
368
  *
@@ -386,14 +386,14 @@ declare function getChainsListByWalletType(params: GetChainsListParams): Promise
386
386
  *
387
387
  * // Now safe to use sync version
388
388
  * const chains = getChainsListByWalletTypeSync({
389
- * walletType: WalletType.EVM_METAMASK,
389
+ * connectorType: ConnectorType.EVM_METAMASK,
390
390
  * appChains: evmConfiguration
391
391
  * });
392
392
  * ```
393
393
  *
394
394
  * @since 1.0.0
395
395
  */
396
- declare function getChainsListByWalletTypeSync(params: GetChainsListParams): (string | number)[];
396
+ declare function getChainsListByConnectorTypeSync(params: GetChainsListParams): (string | number)[];
397
397
  /**
398
398
  * Validates if a chain list conforms to EVM format (with adapter loading).
399
399
  *
@@ -918,7 +918,7 @@ declare const networksLinks: Partial<Record<OrbitAdapter, {
918
918
  * @example
919
919
  * ```typescript
920
920
  * // Import synchronous version (backward compatible)
921
- * import { getChainsListByWalletType, isEvmChainList } from './utils';
921
+ * import { getChainsListByConnectorType, isEvmChainList } from './utils';
922
922
  *
923
923
  * // Import asynchronous version (better performance)
924
924
  * import {
@@ -1154,4 +1154,4 @@ declare function initializeBlockchainSupport(): Promise<InitializationResult>;
1154
1154
  */
1155
1155
  declare function isAdapterSupported(adapter: OrbitAdapter): Promise<boolean>;
1156
1156
 
1157
- export { type AdapterInfo, type AdapterLoadStatus, type BlockchainUtilities, type BlockchainUtilityResult, ButtonTxStatus, type ChainAdapter, ChainIdentifierArray, ConnectContentType, ConnectedContentType, ErrorsProvider, type ErrorsProviderCustomization, type ErrorsProviderProps, type GroupedConnector, InitialChains, type InitializationResult, NovaConnectLabelsProvider, NovaConnectProvider, type NovaConnectProviderCustomization, NovaConnectProviderProps, type NovaConnectProviderPropsWithCustomization, NovaConnectProviderType, getAdapterStatus, getAllAdaptersStatus, getAvailableChainIds, getAvailableSolanaClusters, getAvailableSolanaClusters$1 as getAvailableSolanaClustersAsync, getBlockchainUtilities, getChainsListByWalletTypeSync as getChainsListByWalletType, getChainsListByWalletType as getChainsListByWalletTypeAsync, getChainsListByWalletTypeSync, getConnectChainId, getEvmUtils, getFilteredConnectors, getGroupedConnectors, getSolanaUtils, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, initializeBlockchainSupport, isAdapterSupported, isEvmChainListSync as isEvmChainList, isEvmChainList as isEvmChainListAsync, isEvmChainListSync, isSolanaChainListSync as isSolanaChainList, isSolanaChainList as isSolanaChainListAsync, isSolanaChainListSync, isValidSolanaCluster, isValidSolanaCluster$1 as isValidSolanaClusterAsync, networksLinks, preloadChainAdapters };
1157
+ export { type AdapterInfo, type AdapterLoadStatus, type BlockchainUtilities, type BlockchainUtilityResult, ButtonTxStatus, type ChainAdapter, ChainIdentifierArray, ConnectContentType, ConnectedContentType, ErrorsProvider, type ErrorsProviderCustomization, type ErrorsProviderProps, type GroupedConnector, InitialChains, type InitializationResult, NovaConnectLabelsProvider, NovaConnectProvider, type NovaConnectProviderCustomization, NovaConnectProviderProps, type NovaConnectProviderPropsWithCustomization, NovaConnectProviderType, getAdapterStatus, getAllAdaptersStatus, getAvailableChainIds, getAvailableSolanaClusters, getAvailableSolanaClusters$1 as getAvailableSolanaClustersAsync, getBlockchainUtilities, getChainsListByConnectorTypeSync as getChainsListByConnectorType, getChainsListByConnectorType as getChainsListByConnectorTypeAsync, getChainsListByConnectorTypeSync, getConnectChainId, getEvmUtils, getFilteredConnectors, getGroupedConnectors, getSolanaUtils, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, initializeBlockchainSupport, isAdapterSupported, isEvmChainListSync as isEvmChainList, isEvmChainList as isEvmChainListAsync, isEvmChainListSync, isSolanaChainListSync as isSolanaChainList, isSolanaChainList as isSolanaChainListAsync, isSolanaChainListSync, isValidSolanaCluster, isValidSolanaCluster$1 as isValidSolanaClusterAsync, networksLinks, preloadChainAdapters };
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { OrbitAdapter, WalletType } from '@tuwaio/orbit-core';
2
- export { WalletNameAndAvatarData, useGetWalletNameAndAvatar } from './hooks/index.js';
3
- import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps } from './useWalletNativeBalance-CEASeZ6Z.js';
4
- export { L as LabelCategory, p as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, o as createLabelsSubset, n as getLabelWithFallback, k as hasLabel, m as isDefaultLabels, e as useHasNovaConnectContext, l as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, q as useWalletNativeBalance } from './useWalletNativeBalance-CEASeZ6Z.js';
1
+ import { OrbitAdapter, ConnectorType } from '@tuwaio/orbit-core';
2
+ export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.js';
3
+ import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps } from './useWalletNativeBalance-Cv8QQLQv.js';
4
+ export { L as LabelCategory, p as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, o as createLabelsSubset, n as getLabelWithFallback, k as hasLabel, m as isDefaultLabels, e as useHasNovaConnectContext, l as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, q as useWalletNativeBalance } from './useWalletNativeBalance-Cv8QQLQv.js';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
7
7
  import { ToastContainer, toast, ToastPosition } from 'react-toastify';
8
- import { at as ToastErrorCustomization, aJ as ConnectModalCustomization, u as ConnectedModalCustomization } from './ToastError-BLFMIzVb.js';
9
- export { aK as getNetworkIcon } from './ToastError-BLFMIzVb.js';
10
- import { N as NovaConnectLabels } from './types-D4Vti05g.js';
11
- import { BaseWallet } from '@tuwaio/satellite-core';
8
+ import { at as ToastErrorCustomization, aJ as ConnectModalCustomization, u as ConnectedModalCustomization } from './ToastError-CVhCoryf.js';
9
+ export { aK as getNetworkIcon } from './ToastError-CVhCoryf.js';
10
+ import { N as NovaConnectLabels } from './types-eao2UQcC.js';
11
+ import { BaseConnector } from '@tuwaio/satellite-core';
12
12
  import { I as InitialChains, C as ChainIdentifierArray } from './types-DGsiEwne.js';
13
13
  export { A as AllChainConfigs } from './types-DGsiEwne.js';
14
14
  import { Connector } from '@tuwaio/satellite-react';
@@ -158,9 +158,9 @@ type ProviderContext = {
158
158
  /** Current wallet connection state */
159
159
  isConnected: boolean;
160
160
  /** Active wallet instance */
161
- activeWallet: BaseWallet | undefined;
161
+ activeConnection: BaseConnector | undefined;
162
162
  /** Current wallet connection error */
163
- walletConnectionError: string | undefined;
163
+ connectionError: string | undefined;
164
164
  /** All modal and UI states */
165
165
  modalStates: {
166
166
  isConnectModalOpen: boolean;
@@ -307,7 +307,7 @@ declare namespace NovaConnectProvider {
307
307
  * @example
308
308
  * ```typescript
309
309
  * const params: GetChainsListParams = {
310
- * walletType: WalletType.EVM_METAMASK,
310
+ * connectorType: WalletType.EVM_METAMASK,
311
311
  * appChains: [
312
312
  * { id: 1, name: 'Ethereum' },
313
313
  * { id: 137, name: 'Polygon' }
@@ -318,12 +318,12 @@ declare namespace NovaConnectProvider {
318
318
  */
319
319
  interface GetChainsListParams extends InitialChains {
320
320
  /** The wallet type to determine chain compatibility */
321
- walletType: WalletType;
321
+ connectorType: ConnectorType;
322
322
  /** Optional array of specific chain identifiers to filter or validate */
323
323
  chains?: ChainIdentifierArray;
324
324
  }
325
325
  /**
326
- * Retrieves chain list for a specific wallet type with automatic adapter loading.
326
+ * Retrieves chain list for a specific connectorType type with automatic adapter loading.
327
327
  *
328
328
  * This is the primary function for getting blockchain-compatible chains based on
329
329
  * wallet type and configuration. It automatically determines the correct adapter,
@@ -334,14 +334,14 @@ interface GetChainsListParams extends InitialChains {
334
334
  * - Solana clusters: Returns string cluster names from RPC configuration
335
335
  * - Future blockchains: Extensible through the adapter pattern
336
336
  *
337
- * @param params - Configuration object with wallet type and chain data
337
+ * @param params - Configuration object with connectorType type and chain data
338
338
  * @returns Promise resolving to array of chain identifiers
339
339
  *
340
340
  * @example
341
341
  * ```typescript
342
342
  * // Get EVM chains for MetaMask
343
- * const evmChains = await getChainsListByWalletType({
344
- * walletType: WalletType.EVM_METAMASK,
343
+ * const evmChains = await getChainsListByConnectorType({
344
+ * connectorType: ConnectorType.EVM_METAMASK,
345
345
  * appChains: [
346
346
  * { id: 1, name: 'Ethereum' },
347
347
  * { id: 137, name: 'Polygon' }
@@ -350,8 +350,8 @@ interface GetChainsListParams extends InitialChains {
350
350
  * // Returns: [1, 137]
351
351
  *
352
352
  * // Get Solana clusters for Phantom
353
- * const solanaClusters = await getChainsListByWalletType({
354
- * walletType: WalletType.SOLANA_PHANTOM,
353
+ * const solanaClusters = await getChainsListByConnectorType({
354
+ * connectorType: ConnectorType.SOLANA_PHANTOM,
355
355
  * solanaRPCUrls: {
356
356
  * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',
357
357
  * 'devnet': 'https://api.devnet.solana.com'
@@ -362,7 +362,7 @@ interface GetChainsListParams extends InitialChains {
362
362
  *
363
363
  * @since 1.0.0
364
364
  */
365
- declare function getChainsListByWalletType(params: GetChainsListParams): Promise<(string | number)[]>;
365
+ declare function getChainsListByConnectorType(params: GetChainsListParams): Promise<(string | number)[]>;
366
366
  /**
367
367
  * Synchronous version that only works with pre-loaded adapters.
368
368
  *
@@ -386,14 +386,14 @@ declare function getChainsListByWalletType(params: GetChainsListParams): Promise
386
386
  *
387
387
  * // Now safe to use sync version
388
388
  * const chains = getChainsListByWalletTypeSync({
389
- * walletType: WalletType.EVM_METAMASK,
389
+ * connectorType: ConnectorType.EVM_METAMASK,
390
390
  * appChains: evmConfiguration
391
391
  * });
392
392
  * ```
393
393
  *
394
394
  * @since 1.0.0
395
395
  */
396
- declare function getChainsListByWalletTypeSync(params: GetChainsListParams): (string | number)[];
396
+ declare function getChainsListByConnectorTypeSync(params: GetChainsListParams): (string | number)[];
397
397
  /**
398
398
  * Validates if a chain list conforms to EVM format (with adapter loading).
399
399
  *
@@ -918,7 +918,7 @@ declare const networksLinks: Partial<Record<OrbitAdapter, {
918
918
  * @example
919
919
  * ```typescript
920
920
  * // Import synchronous version (backward compatible)
921
- * import { getChainsListByWalletType, isEvmChainList } from './utils';
921
+ * import { getChainsListByConnectorType, isEvmChainList } from './utils';
922
922
  *
923
923
  * // Import asynchronous version (better performance)
924
924
  * import {
@@ -1154,4 +1154,4 @@ declare function initializeBlockchainSupport(): Promise<InitializationResult>;
1154
1154
  */
1155
1155
  declare function isAdapterSupported(adapter: OrbitAdapter): Promise<boolean>;
1156
1156
 
1157
- export { type AdapterInfo, type AdapterLoadStatus, type BlockchainUtilities, type BlockchainUtilityResult, ButtonTxStatus, type ChainAdapter, ChainIdentifierArray, ConnectContentType, ConnectedContentType, ErrorsProvider, type ErrorsProviderCustomization, type ErrorsProviderProps, type GroupedConnector, InitialChains, type InitializationResult, NovaConnectLabelsProvider, NovaConnectProvider, type NovaConnectProviderCustomization, NovaConnectProviderProps, type NovaConnectProviderPropsWithCustomization, NovaConnectProviderType, getAdapterStatus, getAllAdaptersStatus, getAvailableChainIds, getAvailableSolanaClusters, getAvailableSolanaClusters$1 as getAvailableSolanaClustersAsync, getBlockchainUtilities, getChainsListByWalletTypeSync as getChainsListByWalletType, getChainsListByWalletType as getChainsListByWalletTypeAsync, getChainsListByWalletTypeSync, getConnectChainId, getEvmUtils, getFilteredConnectors, getGroupedConnectors, getSolanaUtils, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, initializeBlockchainSupport, isAdapterSupported, isEvmChainListSync as isEvmChainList, isEvmChainList as isEvmChainListAsync, isEvmChainListSync, isSolanaChainListSync as isSolanaChainList, isSolanaChainList as isSolanaChainListAsync, isSolanaChainListSync, isValidSolanaCluster, isValidSolanaCluster$1 as isValidSolanaClusterAsync, networksLinks, preloadChainAdapters };
1157
+ export { type AdapterInfo, type AdapterLoadStatus, type BlockchainUtilities, type BlockchainUtilityResult, ButtonTxStatus, type ChainAdapter, ChainIdentifierArray, ConnectContentType, ConnectedContentType, ErrorsProvider, type ErrorsProviderCustomization, type ErrorsProviderProps, type GroupedConnector, InitialChains, type InitializationResult, NovaConnectLabelsProvider, NovaConnectProvider, type NovaConnectProviderCustomization, NovaConnectProviderProps, type NovaConnectProviderPropsWithCustomization, NovaConnectProviderType, getAdapterStatus, getAllAdaptersStatus, getAvailableChainIds, getAvailableSolanaClusters, getAvailableSolanaClusters$1 as getAvailableSolanaClustersAsync, getBlockchainUtilities, getChainsListByConnectorTypeSync as getChainsListByConnectorType, getChainsListByConnectorType as getChainsListByConnectorTypeAsync, getChainsListByConnectorTypeSync, getConnectChainId, getEvmUtils, getFilteredConnectors, getGroupedConnectors, getSolanaUtils, getWalletChains, hasAvailableConnectors, hasConnectorsForAdapter, initializeBlockchainSupport, isAdapterSupported, isEvmChainListSync as isEvmChainList, isEvmChainList as isEvmChainListAsync, isEvmChainListSync, isSolanaChainListSync as isSolanaChainList, isSolanaChainList as isSolanaChainListAsync, isSolanaChainListSync, isValidSolanaCluster, isValidSolanaCluster$1 as isValidSolanaClusterAsync, networksLinks, preloadChainAdapters };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {f as f$1,b,K,F,J,C,M,I,L,i,B,N}from'./chunk-7F5QM2LC.js';export{c as getAvailableChainIds,j as getAvailableSolanaClusters,b as getConnectChainId,f as getFilteredConnectors,d as getGroupedConnectors,h as getNetworkIcon,e as hasAvailableConnectors,g as hasConnectorsForAdapter,k as isValidSolanaCluster,i as networksLinks}from'./chunk-7F5QM2LC.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByWalletType,a as getChainsListByWalletTypeAsync,b as getChainsListByWalletTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-MQGDTFY7.js';import {d,h as h$1,g,c}from'./chunk-S5WT3DLF.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,n as getLabelWithFallback,k as hasLabel,m as isDefaultLabels,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,p as useWalletNativeBalance}from'./chunk-S5WT3DLF.js';import {a}from'./chunk-TAV7EL23.js';import {h,f}from'./chunk-MPEJHQKC.js';import {waitFor,delay,formatWalletName,getWalletTypeFromConnectorName,impersonatedHelpers,OrbitAdapter}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';import {isAddress}from'gill';var pe=({title:o,rawError:e,onCopyComplete:a,errorType:r,isConnected:t,...f})=>jsx(N,{title:o,rawError:e,onCopyComplete:a,customization:f.customization}),ue=o=>{let e=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ce=(o,e)=>{o(e.title,e.rawError,e.errorKey);},fe=o=>{o();},ve=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},ye=o=>o,ge=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:a=7e3,draggable:r=false,customization:t}){let f=h$1(),u=h(l=>l.switchNetworkError),R=h(l=>l.activeWallet),B=h(l=>l.walletConnectionError),{ToastError:N=pe,Container:y=ue}=t?.components??{},{showError:d=Ce,dismissError:O=fe,onCopyComplete:S=ve}=t?.handlers??{},{errorTitle:D=ye,errorHash:E=ge}=t??{},M=useRef(new Set),x=useRef(null),s=useMemo(()=>{let l=!!B,b=!!u,P=!!R?.isConnected;return {hasWalletError:l,hasSwitchError:b,isConnected:P,hasAnyError:l||b,primaryError:B||u||null,errorType:l?"wallet":b?"switch":null}},[B,u,R?.isConnected]),H=useMemo(()=>{switch(s.errorType){case "wallet":return f.walletConnectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=useMemo(()=>D(H,{errorType:s.errorType}),[D,H,s.errorType]),z=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>E(z,{primaryError:s.primaryError,errorType:s.errorType}),[E,z,s.primaryError,s.errorType]),T=useCallback(()=>{O(()=>{x.current&&(toast.dismiss(x.current),x.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((l,b)=>{S(l,b,s.errorType);},[S,s.errorType]),n=useCallback((l,b,P)=>{if(T(),!M.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{M.current.delete(P),x.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:b,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};toast.error(jsx(N,{title:l,rawError:b,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,b),customization:t?.toastErrorCustomization}),q),M.current.add(P),x.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[T,o,t?.toastOptions?.error,t?.toastErrorCustomization,N,s.errorType,s.isConnected,F]),v=useCallback((l,b,P)=>{d(n,{title:l,rawError:b,errorKey:P,errorType:s.errorType});},[n,d,s.errorType]);useEffect(()=>{let{hasAnyError:l,isConnected:b,primaryError:P}=s;if(b&&!l){T(),M.current.clear();return}if(l&&P&&C){if(b&&s.errorType!=="switch")return;v(m,P,C);}},[s,m,C,v,T]),useEffect(()=>()=>{T(),M.current.clear();},[T]);let g=useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:a,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:Bounce}),[o,e,a,r]),h$2=useMemo(()=>({...p,...t?.containerProps,className:g}),[p,t?.containerProps,g]);return jsx(y,{...h$2})}Mo.displayName="ErrorsProvider";function Po({labels:o,children:e}){let a=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:a,children:e})}Po.displayName="NovaConnectLabelsProvider";function He(o,e){if(!o||!Array.isArray(o)||!e)return;let a=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?formatWalletName(r.name)===e:false);return a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?a.name:void 0}var qo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("div",{ref:t,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));qo.displayName="DefaultModalContainer";var Jo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("div",{ref:t,className:o,...r,children:jsx(DialogHeader,{children:e})}));Jo.displayName="DefaultModalHeader";var Qo=forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsx("button",{ref:t,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...r,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Qo.displayName="DefaultInfoButton";var Xo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx(DialogTitle,{ref:t,className:cn("novacon:flex novacon:items-center",o),...r,children:e}));Xo.displayName="DefaultTitle";var Yo=forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:t,type:"button",onClick:e,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...r,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));Yo.displayName="DefaultCloseButton";var Zo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("main",{ref:t,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...r,children:e}));Zo.displayName="DefaultMainContent";var oe=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("footer",{ref:t,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...r,children:e}));oe.displayName="DefaultFooter";var ee=forwardRef(({className:o,onClick:e,children:a,modalData:r,...t},f)=>jsx("button",{ref:f,type:"button",onClick:e,className:cn(standardButtonClasses,o),...t,children:a}));ee.displayName="DefaultBackButton";var te=forwardRef(({className:o,onClick:e,children:a,disabled:r,loading:t,buttonConfig:f,modalData:u,...R},B)=>jsx("button",{ref:B,type:"button",onClick:e,disabled:r||t,className:cn(standardButtonClasses,o),...R,children:t?"Loading...":a}));te.displayName="DefaultActionButton";var ne=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("span",{ref:t,className:cn("novacon:sr-only",o),...r,children:e}));ne.displayName="DefaultActionDescription";var re=forwardRef(({children:o,className:e,...a},r)=>{let{modalData:t,...f}=a;return jsx("div",{ref:r,className:e,...f,children:o})});re.displayName="DefaultEmptyState";var No=memo(({appChains:o,solanaRPCUrls:e,withImpersonated:a,customization:r={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:f$2,setConnectModalContentType:u,setActiveConnector:R,setImpersonatedAddress:B,setIsConnected:N,connectModalContentType:y,selectedAdapter:d$1,setSelectedAdapter:O,isConnected:S,activeConnector:D,impersonatedAddress:E}=d(),M$1=h(c=>c.walletConnectionError),x=h(c=>c.getConnectors),s=h(c=>c.connect),H=h(c=>c.activeWallet),m=h$1(),z=useContext(f),C$1=useMemo(()=>{if(t)return x()},[t,x]),T=useMemo(()=>f$1({connectors:C$1,selectedAdapter:d$1}),[C$1,d$1]),F$1=useMemo(()=>M$1?typeof M$1=="string"?new Error(M$1):M$1:null,[M$1]),n=useMemo(()=>({contentType:y,selectedAdapter:d$1,activeConnector:D,impersonatedAddress:E,isConnected:S,isOpen:t,error:F$1,connectors:C$1,filteredConnectors:T,labels:m}),[y,d$1,D,E,S,t,F$1,C$1,T,m]);useEffect(()=>{t&&(u("connectors"),O(void 0),R(void 0),B(""),N(false));},[t]);let{components:v={},classNames:g={},handlers:p={},config:h$2={},childComponents:l={}}=r,b$1=v.ModalContainer||qo,P=v.ModalHeader||Jo,V=v.InfoButton||Qo,_=v.Title||Xo,q=v.CloseButton||Yo,J$1=v.MainContent||Zo,Q=v.Footer||oe,so=v.BackButton||ee,X=v.ActionButton||te,io=v.ActionDescription||ne,G=v.EmptyState||re,Co=v.Dialog||Dialog,lo=v.DialogContent||DialogContent,eo=v.MotionDiv||motion.div,to=useCallback(()=>{switch(y){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d$1&&D&&C$1&&He(C$1[d$1],D)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[y,d$1,D,C$1,m]),Y=useCallback(()=>"connectors",[y]),Z=useCallback(c=>{p?.onOpenChange?p.onOpenChange(c,n):f$2(c);},[p?.onOpenChange,n,f$2]),fo=useCallback(()=>{let c=()=>u(Y());p?.onBack?p.onBack(n,c):c();},[p?.onBack,n,u,Y]),vo=useCallback(()=>{p?.onInfoClick?p.onInfoClick(n):u("about");},[p?.onInfoClick,n,u]),$=useCallback(async(c,yo)=>{await s({walletType:c,chainId:b({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await waitFor(()=>z?.getState().activeWallet?.isConnected),N(!0);let go=setTimeout(()=>f$2(!1),400),le=setTimeout(()=>N(!1),500);await delay(null,500),clearTimeout(go),clearTimeout(le);}catch(go){console.error(go);}},[s,o,d$1,e]),j=useCallback(async(c,yo)=>{O(c),u("connecting"),await $(yo,c);},[$]),Bo=useCallback(c=>{R(formatWalletName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(formatWalletName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?u(formatWalletName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):formatWalletName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d$1]),se=useCallback(()=>{switch(y){case "network":return jsx(L,{activeConnector:D,connectors:T,onClick:j,customization:l.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(M,{networks:Object.keys(C$1),selectedAdapter:d$1,onSelect:c=>O(c),customization:l.networkTabs}),jsx(I,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:T,selectedAdapter:d$1,onClick:Bo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:N,setIsOpen:f$2,withImpersonated:a,customization:l.connectorsSelections})]}):jsx(G,{className:g.emptyConnectors?.({modalData:n}),modalData:n,children:"No connectors available"});case "about":return jsx(C,{customization:l.aboutWallets});case "getWallet":return jsx(J,{customization:l.getWallet});case "connecting":return jsx(F,{selectedAdapter:d$1,connectors:T,activeConnector:D,isConnected:S,customization:l.connecting});case "impersonate":return jsx(K,{impersonatedAddress:E,setImpersonatedAddress:B,customization:l.impersonateForm})}},[y,D,T,j,l,C$1,d$1,Bo,S,E]),K$1=useCallback(()=>{switch(y){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p.onActionClick?.connectors?p.onActionClick.connectors(n):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p.onActionClick?.getWallet?p.onActionClick.getWallet(n):window.open(i[d$1??Object.keys(C$1)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p.onActionClick?.about?p.onActionClick.about(n):window.open(i[d$1??Object.keys(C$1)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p.onActionClick?.impersonate)await p.onActionClick.impersonate(n);else {let c=E.trim();if(M$1||!c||isAddress(c)||H?.isConnected)return;impersonatedHelpers.setImpersonated(c),await $(`${d$1??OrbitAdapter.EVM}:impersonatedwallet`,d$1??OrbitAdapter.EVM),u("connecting");}}};case "connecting":return M$1&&d$1&&D?{title:m.tryAgain,onClick:async()=>{p.onActionClick?.connecting?await p.onActionClick.connecting(n):await $(getWalletTypeFromConnectorName(d$1,D),d$1);}}:void 0}},[y,m,p,n,d$1,C$1,E,M$1,$,D])(),ie=useCallback(()=>{switch(y){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[y]);return jsx(Co,{open:t,onOpenChange:Z,children:jsx(lo,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(eo,{layout:true,transition:{layout:{duration:h$2.animation?.disabled?0:h$2.animation?.layoutDuration??1e-4}},children:jsxs(b$1,{className:g.modalContainer?.({modalData:n}),modalData:n,children:[jsxs(P,{className:g.header?.({modalData:n}),modalData:n,children:[jsxs(_,{className:g.title?.({modalData:n}),modalData:n,children:[y==="connectors"&&jsx(V,{className:g.infoButton?.({modalData:n}),onClick:vo,"aria-label":h$2.ariaLabels?.infoButton?.(n)||`${m.learnMore} ${m.aboutWallets}`,modalData:n}),to()]}),jsx(q,{className:g.closeButton?.({modalData:n}),onClick:()=>Z(false),"aria-label":h$2.ariaLabels?.closeButton?.(n)||m.closeModal,modalData:n})]}),jsx(J$1,{className:g.mainContent?.({modalData:n}),modalData:n,children:se()}),jsxs(Q,{className:g.footer?.({modalData:n}),modalData:n,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:y!=="connectors"&&jsx(so,{className:g.backButton?.({modalData:n}),onClick:fo,"aria-label":h$2.ariaLabels?.backButton?.(n)||`${m.back} to previous step`,modalData:n,children:m.back})}),K$1&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(X,{className:g.actionButton?.({modalData:n,buttonConfig:K$1}),onClick:K$1.onClick,disabled:K$1.disabled,loading:K$1.loading,"aria-describedby":"bottom-action-description",modalData:n,buttonConfig:K$1,children:K$1.title}),jsx(io,{id:"bottom-action-description",className:g.actionDescription?.({modalData:n}),modalData:n,children:ie()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsx(Po,{labels:o,children:e}),Ve=({customization:o})=>jsx(Mo,{customization:o}),Ue=(o,e)=>deepMerge(o,e||{}),Ge=o=>o,$e=o=>o,je=(o,e,a)=>o;function Ke({labels:o,children:e,appChains:a$1,solanaRPCUrls:r,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:R,withChain:B$1,customization:N}){let y=h(j=>j.activeWallet),d=h(j=>j.walletConnectionError),{LabelsProvider:O=Fe,ErrorsProvider:S=Ve}=N?.components??{},{merge:D=Ue,transform:E=Ge}=N?.labels??{},{transform:M=$e}=N?.contextValue??{},{providerTree:x=je}=N?.rendering??{},s=useMemo(()=>D(a,o||{}),[o,D]),[H,m]=useState(false),[z,C]=useState(false),[T,F]=useState(false),[n,v]=useState(false),[g,p]=useState("idle"),[h$1,l]=useState("connectors"),[b,P]=useState(void 0),[V,_]=useState(void 0),[q,J]=useState(""),[Q,so]=useState(false),[X,io]=useState("main"),G=useMemo(()=>({isConnected:Q,activeWallet:y,walletConnectionError:d,modalStates:{isConnectModalOpen:H,isConnectedModalOpen:z,isChainsListOpen:T,isChainsListOpenMobile:n},contentTypes:{connectModal:h$1,connectedModal:X},statuses:{connectedButton:g}}),[Q,y,d,H,z,T,n,h$1,X,g]),Co=useMemo(()=>E(s,G),[s,E,G]),lo=useMemo(()=>M({appChains:a$1,solanaRPCUrls:r,withImpersonated:u,withBalance:R,withChain:B$1,isConnectModalOpen:H,setIsConnectModalOpen:m,isConnectedModalOpen:z,setIsConnectedModalOpen:C,isChainsListOpen:T,setIsChainsListOpen:F,isChainsListOpenMobile:n,setIsChainsListOpenMobile:v,connectedButtonStatus:g,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h$1,setConnectModalContentType:l,selectedAdapter:b,setSelectedAdapter:P,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[a$1,r,u,R,B$1,H,m,z,C,T,F,n,v,g,p,X,io,h$1,l,b,P,V,_,q,J,Q,so,M,G]),eo=jsx(S,{customization:N?.errors}),to=jsx(O,{labels:Co,children:e}),Y=a$1||r?jsx(No,{withImpersonated:u,solanaRPCUrls:r,appChains:a$1,customization:N?.modals?.connectModal}):null,Z=a$1||r?jsx(B,{solanaRPCUrls:r,appChains:a$1,transactionPool:t,pulsarAdapter:f,customization:N?.modals?.connectedModal}):null,fo=jsxs(c.Provider,{value:lo,children:[eo,to,Y,Z]}),vo=jsxs(c.Provider,{value:lo,children:[eo,to,Y,Z]}),$=x(vo,{ErrorsProvider:eo,LabelsProvider:to,MainContent:fo,ConnectModal:Y||jsx(Fragment,{}),ConnectedModal:Z||jsx(Fragment,{})},G);return jsx(Fragment,{children:$})}Ke.displayName="NovaConnectProvider";async function qn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByWalletType-VMQ4BO2B.js');return {hasEvmUtils:await ho(),hasSolanaUtils:await wo(),adaptersStatus:o()}}async function ho(){try{return await import('./utils-5KC7QXWB.js'),!0}catch{return false}}async function wo(){try{return await import('./utils-SUIRQJIA.js'),!0}catch{return false}}async function Jn(){try{return {available:!0,...await import('./evm/index.js')}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Qn(){try{return {available:!0,...await import('./solana/index.js')}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Xn(){let o={evm:false,solana:false,errors:[]};try{let{preloadChainAdapters:e}=await import('./getChainsListByWalletType-VMQ4BO2B.js');await e([OrbitAdapter.EVM,OrbitAdapter.SOLANA]),o.evm=await ho(),o.solana=await wo();}catch(e){let a=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(a);}return o}async function Yn(o){switch(o){case OrbitAdapter.EVM:return ho();case OrbitAdapter.SOLANA:return wo();case OrbitAdapter.Starknet:return false;default:return false}}export{Mo as ErrorsProvider,Po as NovaConnectLabelsProvider,Ke as NovaConnectProvider,qn as getBlockchainUtilities,Jn as getEvmUtils,Qn as getSolanaUtils,Xn as initializeBlockchainSupport,Yn as isAdapterSupported};//# sourceMappingURL=index.js.map
1
+ import {A,v,z,s,C,y,B,r,D}from'./chunk-4FB4UCVM.js';import {d,h as h$1,t,p,w,g,c}from'./chunk-S6WXKVYP.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,q as getAvailableChainIds,x as getAvailableSolanaClusters,p as getConnectChainId,t as getFilteredConnectors,r as getGroupedConnectors,n as getLabelWithFallback,v as getNetworkIcon,s as hasAvailableConnectors,u as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,y as isValidSolanaCluster,w as networksLinks,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,z as useWalletChainsList,A as useWalletNativeBalance}from'./chunk-S6WXKVYP.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-B2NRY4JV.js';import {a}from'./chunk-3BMX6JWH.js';import {h,f}from'./chunk-P5ZBSLGK.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,impersonatedHelpers,OrbitAdapter}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';import {isAddress}from'gill';var ue=({title:o,rawError:e,onCopyComplete:a,errorType:r,isConnected:t,...f})=>jsx(D,{title:o,rawError:e,onCopyComplete:a,customization:f.customization}),Ce=o=>{let e=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},fe=(o,e)=>{o(e.title,e.rawError,e.errorKey);},ve=o=>{o();},ye=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},ge=o=>o,be=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:a=7e3,draggable:r=false,customization:t}){let f=h$1(),u=h(c=>c.switchNetworkError),R=h(c=>c.activeConnection),B=h(c=>c.connectionError),{ToastError:N=ue,Container:y=Ce}=t?.components??{},{showError:d=fe,dismissError:S=ve,onCopyComplete:H=ye}=t?.handlers??{},{errorTitle:T=ge,errorHash:E=be}=t??{},M=useRef(new Set),x=useRef(null),s=useMemo(()=>{let c=!!B,b=!!u,P=!!R?.isConnected;return {hasWalletError:c,hasSwitchError:b,isConnected:P,hasAnyError:c||b,primaryError:B||u||null,errorType:c?"wallet":b?"switch":null}},[B,u,R?.isConnected]),z=useMemo(()=>{switch(s.errorType){case "wallet":return f.connectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=useMemo(()=>T(z,{errorType:s.errorType}),[T,z,s.errorType]),W=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>E(W,{primaryError:s.primaryError,errorType:s.errorType}),[E,W,s.primaryError,s.errorType]),D=useCallback(()=>{S(()=>{x.current&&(toast.dismiss(x.current),x.current=null),toast.dismiss({containerId:o});});},[o,S]),F=useCallback((c,b)=>{H(c,b,s.errorType);},[H,s.errorType]),n=useCallback((c,b,P)=>{if(D(),!M.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{M.current.delete(P),x.current=null;}},_=t?.toastOptions?.error?.({title:c,rawError:b,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};toast.error(jsx(N,{title:c,rawError:b,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,b),customization:t?.toastErrorCustomization}),q),M.current.add(P),x.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[D,o,t?.toastOptions?.error,t?.toastErrorCustomization,N,s.errorType,s.isConnected,F]),v=useCallback((c,b,P)=>{d(n,{title:c,rawError:b,errorKey:P,errorType:s.errorType});},[n,d,s.errorType]);useEffect(()=>{let{hasAnyError:c,isConnected:b,primaryError:P}=s;if(b&&!c){D(),M.current.clear();return}if(c&&P&&C){if(b&&s.errorType!=="switch")return;v(m,P,C);}},[s,m,C,v,D]),useEffect(()=>()=>{D(),M.current.clear();},[D]);let g=useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:a,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:Bounce}),[o,e,a,r]),h$2=useMemo(()=>({...p,...t?.containerProps,className:g}),[p,t?.containerProps,g]);return jsx(y,{...h$2})}Mo.displayName="ErrorsProvider";function Po({labels:o,children:e}){let a=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:a,children:e})}Po.displayName="NovaConnectLabelsProvider";function ze(o,e){if(!o||!Array.isArray(o)||!e)return;let a=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?formatConnectorName(r.name)===e:false);return a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?a.name:void 0}var Jo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("div",{ref:t,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));Jo.displayName="DefaultModalContainer";var Qo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("div",{ref:t,className:o,...r,children:jsx(DialogHeader,{children:e})}));Qo.displayName="DefaultModalHeader";var Xo=forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsx("button",{ref:t,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...r,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx(DialogTitle,{ref:t,className:cn("novacon:flex novacon:items-center",o),...r,children:e}));Yo.displayName="DefaultTitle";var Zo=forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:t,type:"button",onClick:e,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...r,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var oe=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("main",{ref:t,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...r,children:e}));oe.displayName="DefaultMainContent";var ee=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("footer",{ref:t,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...r,children:e}));ee.displayName="DefaultFooter";var te=forwardRef(({className:o,onClick:e,children:a,modalData:r,...t},f)=>jsx("button",{ref:f,type:"button",onClick:e,className:cn(standardButtonClasses,o),...t,children:a}));te.displayName="DefaultBackButton";var ne=forwardRef(({className:o,onClick:e,children:a,disabled:r,loading:t,buttonConfig:f,modalData:u,...R},B)=>jsx("button",{ref:B,type:"button",onClick:e,disabled:r||t,className:cn(standardButtonClasses,o),...R,children:t?"Loading...":a}));ne.displayName="DefaultActionButton";var re=forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsx("span",{ref:t,className:cn("novacon:sr-only",o),...r,children:e}));re.displayName="DefaultActionDescription";var ae=forwardRef(({children:o,className:e,...a},r)=>{let{modalData:t,...f}=a;return jsx("div",{ref:r,className:e,...f,children:o})});ae.displayName="DefaultEmptyState";var No=memo(({appChains:o,solanaRPCUrls:e,withImpersonated:a,customization:r={}})=>{let{isConnectModalOpen:t$1,setIsConnectModalOpen:f$1,setConnectModalContentType:u,setActiveConnector:R,setImpersonatedAddress:B$1,setIsConnected:N,connectModalContentType:y$1,selectedAdapter:d$1,setSelectedAdapter:S,isConnected:H,activeConnector:T,impersonatedAddress:E}=d(),M=h(l=>l.connectionError),x=h(l=>l.getConnectors),s$1=h(l=>l.connect),z$1=h(l=>l.activeConnection),m=h$1(),W=useContext(f),C$1=useMemo(()=>{if(t$1)return x()},[t$1,x]),D=useMemo(()=>t({connectors:C$1,selectedAdapter:d$1}),[C$1,d$1]),F=useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),n=useMemo(()=>({contentType:y$1,selectedAdapter:d$1,activeConnector:T,impersonatedAddress:E,isConnected:H,isOpen:t$1,error:F,connectors:C$1,filteredConnectors:D,labels:m}),[y$1,d$1,T,E,H,t$1,F,C$1,D,m]);useEffect(()=>{t$1&&(u("connectors"),S(void 0),R(void 0),B$1(""),N(false));},[t$1]);let{components:v$1={},classNames:g={},handlers:p$1={},config:h$2={},childComponents:c={}}=r,b=v$1.ModalContainer||Jo,P=v$1.ModalHeader||Qo,V=v$1.InfoButton||Xo,_=v$1.Title||Yo,q=v$1.CloseButton||Zo,J=v$1.MainContent||oe,Q=v$1.Footer||ee,so=v$1.BackButton||te,X=v$1.ActionButton||ne,io=v$1.ActionDescription||re,G=v$1.EmptyState||ae,Co=v$1.Dialog||Dialog,co=v$1.DialogContent||DialogContent,eo=v$1.MotionDiv||motion.div,to=useCallback(()=>{switch(y$1){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d$1&&T&&C$1&&ze(C$1[d$1],T)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[y$1,d$1,T,C$1,m]),Y=useCallback(()=>"connectors",[y$1]),Z=useCallback(l=>{p$1?.onOpenChange?p$1.onOpenChange(l,n):f$1(l);},[p$1?.onOpenChange,n,f$1]),fo=useCallback(()=>{let l=()=>u(Y());p$1?.onBack?p$1.onBack(n,l):l();},[p$1?.onBack,n,u,Y]),vo=useCallback(()=>{p$1?.onInfoClick?p$1.onInfoClick(n):u("about");},[p$1?.onInfoClick,n,u]),j=useCallback(async(l,yo)=>{await s$1({connectorType:l,chainId:p({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await waitFor(()=>W?.getState().activeConnection?.isConnected),N(!0);let go=setTimeout(()=>f$1(!1),400),le=setTimeout(()=>N(!1),500);await delay(null,500),clearTimeout(go),clearTimeout(le);}catch(go){console.error(go);}},[s$1,o,d$1,e]),$=useCallback(async(l,yo)=>{S(l),u("connecting"),await j(yo,l);},[j]),Bo=useCallback(l=>{R(formatConnectorName(l.name)),l.adapters.length===1?(S(l.adapters[0]),u(formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?u(formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(l.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d$1]),ie=useCallback(()=>{switch(y$1){case "network":return jsx(B,{activeConnector:T,connectors:D,onClick:$,customization:c.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(C$1),selectedAdapter:d$1,onSelect:l=>S(l),customization:c.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:D,selectedAdapter:d$1,onClick:Bo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:N,setIsOpen:f$1,withImpersonated:a,customization:c.connectorsSelections})]}):jsx(G,{className:g.emptyConnectors?.({modalData:n}),modalData:n,children:"No connectors available"});case "about":return jsx(s,{customization:c.aboutWallets});case "getWallet":return jsx(z,{customization:c.getWallet});case "connecting":return jsx(v,{selectedAdapter:d$1,connectors:D,activeConnector:T,isConnected:H,customization:c.connecting});case "impersonate":return jsx(A,{selectedAdapter:d$1,impersonatedAddress:E,setImpersonatedAddress:B$1,customization:c.impersonateForm})}},[y$1,T,D,$,c,C$1,d$1,Bo,H,E]),K=useCallback(()=>{switch(y$1){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p$1.onActionClick?.connectors?p$1.onActionClick.connectors(n):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p$1.onActionClick?.getWallet?p$1.onActionClick.getWallet(n):window.open(w[d$1??Object.keys(C$1)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p$1.onActionClick?.about?p$1.onActionClick.about(n):window.open(w[d$1??Object.keys(C$1)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p$1.onActionClick?.impersonate)await p$1.onActionClick.impersonate(n);else {let l=E.trim();if(M||!l||isAddress(l)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(l),u("connecting"),await j(getConnectorTypeFromName(d$1??OrbitAdapter.EVM,T??""),d$1??OrbitAdapter.EVM);}}};case "connecting":return M&&d$1&&T?{title:m.tryAgain,onClick:async()=>{p$1.onActionClick?.connecting?await p$1.onActionClick.connecting(n):await j(getConnectorTypeFromName(d$1,T),d$1);}}:void 0}},[y$1,m,p$1,n,d$1,C$1,E,M,j,T])(),ce=useCallback(()=>{switch(y$1){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[y$1]);return jsx(Co,{open:t$1,onOpenChange:Z,children:jsx(co,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(eo,{layout:true,transition:{layout:{duration:h$2.animation?.disabled?0:h$2.animation?.layoutDuration??1e-4}},children:jsxs(b,{className:g.modalContainer?.({modalData:n}),modalData:n,children:[jsxs(P,{className:g.header?.({modalData:n}),modalData:n,children:[jsxs(_,{className:g.title?.({modalData:n}),modalData:n,children:[y$1==="connectors"&&jsx(V,{className:g.infoButton?.({modalData:n}),onClick:vo,"aria-label":h$2.ariaLabels?.infoButton?.(n)||`${m.learnMore} ${m.aboutWallets}`,modalData:n}),to()]}),jsx(q,{className:g.closeButton?.({modalData:n}),onClick:()=>Z(false),"aria-label":h$2.ariaLabels?.closeButton?.(n)||m.closeModal,modalData:n})]}),jsx(J,{className:g.mainContent?.({modalData:n}),modalData:n,children:ie()}),jsxs(Q,{className:g.footer?.({modalData:n}),modalData:n,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:y$1!=="connectors"&&jsx(so,{className:g.backButton?.({modalData:n}),onClick:fo,"aria-label":h$2.ariaLabels?.backButton?.(n)||`${m.back} to previous step`,modalData:n,children:m.back})}),K&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(X,{className:g.actionButton?.({modalData:n,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:n,buttonConfig:K,children:K.title}),jsx(io,{id:"bottom-action-description",className:g.actionDescription?.({modalData:n}),modalData:n,children:ce()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsx(Po,{labels:o,children:e}),Ve=({customization:o})=>jsx(Mo,{customization:o}),Ue=(o,e)=>deepMerge(o,e||{}),Ge=o=>o,je=o=>o,$e=(o,e,a)=>o;function Ke({labels:o,children:e,appChains:a$1,solanaRPCUrls:r$1,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:R,withChain:B,customization:N}){let y=h($=>$.activeConnection),d=h($=>$.connectionError),{LabelsProvider:S=Fe,ErrorsProvider:H=Ve}=N?.components??{},{merge:T=Ue,transform:E=Ge}=N?.labels??{},{transform:M=je}=N?.contextValue??{},{providerTree:x=$e}=N?.rendering??{},s=useMemo(()=>T(a,o||{}),[o,T]),[z,m]=useState(false),[W,C]=useState(false),[D,F]=useState(false),[n,v]=useState(false),[g,p]=useState("idle"),[h$1,c$1]=useState("connectors"),[b,P]=useState(void 0),[V,_]=useState(void 0),[q,J]=useState(""),[Q,so]=useState(false),[X,io]=useState("main"),G=useMemo(()=>({isConnected:Q,activeConnection:y,connectionError:d,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:W,isChainsListOpen:D,isChainsListOpenMobile:n},contentTypes:{connectModal:h$1,connectedModal:X},statuses:{connectedButton:g}}),[Q,y,d,z,W,D,n,h$1,X,g]),Co=useMemo(()=>E(s,G),[s,E,G]),co=useMemo(()=>M({appChains:a$1,solanaRPCUrls:r$1,withImpersonated:u,withBalance:R,withChain:B,isConnectModalOpen:z,setIsConnectModalOpen:m,isConnectedModalOpen:W,setIsConnectedModalOpen:C,isChainsListOpen:D,setIsChainsListOpen:F,isChainsListOpenMobile:n,setIsChainsListOpenMobile:v,connectedButtonStatus:g,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h$1,setConnectModalContentType:c$1,selectedAdapter:b,setSelectedAdapter:P,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[a$1,r$1,u,R,B,z,m,W,C,D,F,n,v,g,p,X,io,h$1,c$1,b,P,V,_,q,J,Q,so,M,G]),eo=jsx(H,{customization:N?.errors}),to=jsx(S,{labels:Co,children:e}),Y=a$1||r$1?jsx(No,{withImpersonated:u,solanaRPCUrls:r$1,appChains:a$1,customization:N?.modals?.connectModal}):null,Z=a$1||r$1?jsx(r,{solanaRPCUrls:r$1,appChains:a$1,transactionPool:t,pulsarAdapter:f,customization:N?.modals?.connectedModal}):null,fo=jsxs(c.Provider,{value:co,children:[eo,to,Y,Z]}),vo=jsxs(c.Provider,{value:co,children:[eo,to,Y,Z]}),j=x(vo,{ErrorsProvider:eo,LabelsProvider:to,MainContent:fo,ConnectModal:Y||jsx(Fragment,{}),ConnectedModal:Z||jsx(Fragment,{})},G);return jsx(Fragment,{children:j})}Ke.displayName="NovaConnectProvider";async function Jn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-FGTS3CWJ.js');return {hasEvmUtils:await ho(),hasSolanaUtils:await wo(),adaptersStatus:o()}}async function ho(){try{return await import('./utils-5KC7QXWB.js'),!0}catch{return false}}async function wo(){try{return await import('./utils-YYMTL3XH.js'),!0}catch{return false}}async function Qn(){try{return {available:!0,...await import('./evm/index.js')}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Xn(){try{return {available:!0,...await import('./solana/index.js')}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Yn(){let o={evm:false,solana:false,errors:[]};try{let{preloadChainAdapters:e}=await import('./getChainsListByConnectorType-FGTS3CWJ.js');await e([OrbitAdapter.EVM,OrbitAdapter.SOLANA]),o.evm=await ho(),o.solana=await wo();}catch(e){let a=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(a);}return o}async function Zn(o){switch(o){case OrbitAdapter.EVM:return ho();case OrbitAdapter.SOLANA:return wo();case OrbitAdapter.Starknet:return false;default:return false}}export{Mo as ErrorsProvider,Po as NovaConnectLabelsProvider,Ke as NovaConnectProvider,Jn as getBlockchainUtilities,Qn as getEvmUtils,Xn as getSolanaUtils,Yn as initializeBlockchainSupport,Zn as isAdapterSupported};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map