@hsuite/native-connect-angular 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/README.md +48 -0
  2. package/USAGE_EXAMPLES.md +476 -0
  3. package/assets/wallets/extension.svg +7 -0
  4. package/assets/wallets/hashpack.svg +6 -0
  5. package/assets/wallets/hsuite.svg +11 -0
  6. package/assets/wallets/kabila.svg +11 -0
  7. package/assets/wallets/walletconnect.svg +13 -0
  8. package/coverage/base.css +224 -0
  9. package/coverage/block-navigation.js +87 -0
  10. package/coverage/coverage-summary.json +50 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/index.html +476 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +476 -0
  17. package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
  18. package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +116 -0
  19. package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
  20. package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +116 -0
  21. package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +685 -0
  22. package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +766 -0
  23. package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
  24. package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +116 -0
  25. package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1495 -0
  26. package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1588 -0
  27. package/coverage/lcov-report/lib/components/account-selector/index.html +161 -0
  28. package/coverage/lcov-report/lib/components/wallet-account-display/index.html +116 -0
  29. package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
  30. package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +116 -0
  31. package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
  32. package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +116 -0
  33. package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
  34. package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +116 -0
  35. package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
  36. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
  37. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
  38. package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +116 -0
  39. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
  40. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
  41. package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
  42. package/coverage/lcov-report/lib/components/wallet-session-display/index.html +116 -0
  43. package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
  44. package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +116 -0
  45. package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
  46. package/coverage/lcov-report/lib/directives/index.html +146 -0
  47. package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +670 -0
  48. package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +547 -0
  49. package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +781 -0
  50. package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +715 -0
  51. package/coverage/lcov-report/lib/index.html +116 -0
  52. package/coverage/lcov-report/lib/models/connection-config.model.ts.html +280 -0
  53. package/coverage/lcov-report/lib/models/index.html +131 -0
  54. package/coverage/lcov-report/lib/models/provider-types.ts.html +577 -0
  55. package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1138 -0
  56. package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
  57. package/coverage/lcov-report/lib/providers/hsuite-native/index.html +116 -0
  58. package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +2347 -0
  59. package/coverage/lcov-report/lib/providers/index.html +146 -0
  60. package/coverage/lcov-report/lib/providers/p2p-native/index.html +131 -0
  61. package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
  62. package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
  63. package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1132 -0
  64. package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +176 -0
  65. package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +673 -0
  66. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
  67. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
  68. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
  69. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
  70. package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
  71. package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +146 -0
  72. package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
  73. package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
  74. package/coverage/lcov-report/lib/services/index.html +191 -0
  75. package/coverage/lcov-report/lib/services/logger.service.ts.html +463 -0
  76. package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
  77. package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
  78. package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
  79. package/coverage/lcov-report/lib/services/transaction-builders/index.html +161 -0
  80. package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
  81. package/coverage/lcov-report/lib/services/transaction.service.ts.html +1123 -0
  82. package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +2641 -0
  83. package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +637 -0
  84. package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +643 -0
  85. package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +496 -0
  86. package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +823 -0
  87. package/coverage/lcov-report/lib/transports/index.html +116 -0
  88. package/coverage/lcov-report/lib/utils/index.html +116 -0
  89. package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +319 -0
  90. package/coverage/lcov-report/prettify.css +1 -0
  91. package/coverage/lcov-report/prettify.js +2 -0
  92. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  93. package/coverage/lcov-report/sorter.js +210 -0
  94. package/coverage/lcov.info +19252 -0
  95. package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
  96. package/coverage/lib/components/account-selector/account-actions/index.html +116 -0
  97. package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
  98. package/coverage/lib/components/account-selector/account-filter/index.html +116 -0
  99. package/coverage/lib/components/account-selector/account-formatting.service.ts.html +685 -0
  100. package/coverage/lib/components/account-selector/account-grouping.service.ts.html +766 -0
  101. package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
  102. package/coverage/lib/components/account-selector/account-list/index.html +116 -0
  103. package/coverage/lib/components/account-selector/account-selector.component.ts.html +1495 -0
  104. package/coverage/lib/components/account-selector/account-selector.service.ts.html +1588 -0
  105. package/coverage/lib/components/account-selector/index.html +161 -0
  106. package/coverage/lib/components/wallet-account-display/index.html +116 -0
  107. package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
  108. package/coverage/lib/components/wallet-connect-button/index.html +116 -0
  109. package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
  110. package/coverage/lib/components/wallet-connect-prompt/index.html +116 -0
  111. package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
  112. package/coverage/lib/components/wallet-connected-guard/index.html +116 -0
  113. package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
  114. package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
  115. package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
  116. package/coverage/lib/components/wallet-connection-modal/index.html +116 -0
  117. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
  118. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
  119. package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
  120. package/coverage/lib/components/wallet-session-display/index.html +116 -0
  121. package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
  122. package/coverage/lib/components/wallet-transaction-status/index.html +116 -0
  123. package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
  124. package/coverage/lib/directives/index.html +146 -0
  125. package/coverage/lib/directives/wallet-connected.directive.ts.html +670 -0
  126. package/coverage/lib/directives/wallet-context.directive.ts.html +547 -0
  127. package/coverage/lib/directives/wallet-events.directive.ts.html +781 -0
  128. package/coverage/lib/hsuite-wallet.module.ts.html +715 -0
  129. package/coverage/lib/index.html +116 -0
  130. package/coverage/lib/models/connection-config.model.ts.html +280 -0
  131. package/coverage/lib/models/index.html +131 -0
  132. package/coverage/lib/models/provider-types.ts.html +577 -0
  133. package/coverage/lib/providers/base-wallet-provider.ts.html +1138 -0
  134. package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
  135. package/coverage/lib/providers/hsuite-native/index.html +116 -0
  136. package/coverage/lib/providers/hsuite-native-provider.ts.html +2347 -0
  137. package/coverage/lib/providers/index.html +146 -0
  138. package/coverage/lib/providers/p2p-native/index.html +131 -0
  139. package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
  140. package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
  141. package/coverage/lib/providers/wallet-error-handler.ts.html +1132 -0
  142. package/coverage/lib/providers/walletconnect/core/index.html +176 -0
  143. package/coverage/lib/providers/walletconnect/core/session-health.ts.html +673 -0
  144. package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
  145. package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
  146. package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
  147. package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
  148. package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
  149. package/coverage/lib/providers/walletconnect/signers/index.html +146 -0
  150. package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
  151. package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
  152. package/coverage/lib/services/index.html +191 -0
  153. package/coverage/lib/services/logger.service.ts.html +463 -0
  154. package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
  155. package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
  156. package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
  157. package/coverage/lib/services/transaction-builders/index.html +161 -0
  158. package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
  159. package/coverage/lib/services/transaction.service.ts.html +1123 -0
  160. package/coverage/lib/services/unified-wallet.service.ts.html +2641 -0
  161. package/coverage/lib/services/wallet-context.service.ts.html +637 -0
  162. package/coverage/lib/services/wallet-event-bus.service.ts.html +643 -0
  163. package/coverage/lib/services/wallet-providers.service.ts.html +496 -0
  164. package/coverage/lib/transports/chrome-extension-transport.ts.html +823 -0
  165. package/coverage/lib/transports/index.html +116 -0
  166. package/coverage/lib/utils/index.html +116 -0
  167. package/coverage/lib/utils/ledger-icons.util.ts.html +319 -0
  168. package/coverage/prettify.css +1 -0
  169. package/coverage/prettify.js +2 -0
  170. package/coverage/sort-arrow-sprite.png +0 -0
  171. package/coverage/sorter.js +210 -0
  172. package/dist/README.md +48 -0
  173. package/dist/fesm2022/hsuite-native-connect-angular.mjs +14592 -0
  174. package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -0
  175. package/dist/index.d.ts +6949 -0
  176. package/examples/minimal-connect.ts +178 -0
  177. package/examples/multi-protocol.ts +495 -0
  178. package/examples/transaction-signing.ts +361 -0
  179. package/jest.config.json +45 -0
  180. package/karma.conf.js +42 -0
  181. package/ng-package.json +20 -0
  182. package/package.json +60 -0
  183. package/src/index.ts +203 -0
  184. package/src/lib/components/account-selector/account-actions/account-actions.component.ts +261 -0
  185. package/src/lib/components/account-selector/account-filter/account-filter.component.ts +401 -0
  186. package/src/lib/components/account-selector/account-formatting.service.ts +200 -0
  187. package/src/lib/components/account-selector/account-grouping.service.ts +227 -0
  188. package/src/lib/components/account-selector/account-list/account-list.component.ts +470 -0
  189. package/src/lib/components/account-selector/account-selector.component.html +135 -0
  190. package/src/lib/components/account-selector/account-selector.component.scss +2039 -0
  191. package/src/lib/components/account-selector/account-selector.component.ts +470 -0
  192. package/src/lib/components/account-selector/account-selector.service.ts +501 -0
  193. package/src/lib/components/wallet-account-display/wallet-account-display.component.html +34 -0
  194. package/src/lib/components/wallet-account-display/wallet-account-display.component.scss +99 -0
  195. package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +140 -0
  196. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.html +14 -0
  197. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.scss +272 -0
  198. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +240 -0
  199. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.html +24 -0
  200. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.scss +50 -0
  201. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts +108 -0
  202. package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.html +24 -0
  203. package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts +73 -0
  204. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.html +56 -0
  205. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.scss +218 -0
  206. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts +117 -0
  207. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.html +94 -0
  208. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.scss +272 -0
  209. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts +734 -0
  210. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +197 -0
  211. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.scss +678 -0
  212. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +730 -0
  213. package/src/lib/components/wallet-session-display/wallet-session-display.component.html +110 -0
  214. package/src/lib/components/wallet-session-display/wallet-session-display.component.scss +179 -0
  215. package/src/lib/components/wallet-session-display/wallet-session-display.component.ts +197 -0
  216. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.html +65 -0
  217. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.scss +254 -0
  218. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts +206 -0
  219. package/src/lib/directives/wallet-connected.directive.ts +195 -0
  220. package/src/lib/directives/wallet-context.directive.ts +154 -0
  221. package/src/lib/directives/wallet-events.directive.ts +232 -0
  222. package/src/lib/hsuite-wallet.module.ts +210 -0
  223. package/src/lib/models/connection-config.model.ts +65 -0
  224. package/src/lib/models/provider-types.ts +164 -0
  225. package/src/lib/models/unified-account.model.ts +76 -0
  226. package/src/lib/models/wallet-context.model.ts +121 -0
  227. package/src/lib/models/wallet-events.model.ts +158 -0
  228. package/src/lib/providers/base-wallet-provider.ts +351 -0
  229. package/src/lib/providers/hsuite-native/channel-client.service.spec.ts +73 -0
  230. package/src/lib/providers/hsuite-native/channel-client.service.ts +862 -0
  231. package/src/lib/providers/hsuite-native/index.ts +8 -0
  232. package/src/lib/providers/hsuite-native-provider.ts +754 -0
  233. package/src/lib/providers/mobile-native/mobile-native.provider.spec.ts +19 -0
  234. package/src/lib/providers/p2p-native/index.ts +30 -0
  235. package/src/lib/providers/p2p-native/p2p-native.provider.spec.ts +523 -0
  236. package/src/lib/providers/p2p-native/p2p-native.provider.ts +723 -0
  237. package/src/lib/providers/p2p-native/p2p-session-manager.ts +695 -0
  238. package/src/lib/providers/wallet-error-handler.ts +349 -0
  239. package/src/lib/providers/walletconnect/core/base-signer.interface.ts +122 -0
  240. package/src/lib/providers/walletconnect/core/session-health.ts +196 -0
  241. package/src/lib/providers/walletconnect/core/walletconnect-client-manager.ts +364 -0
  242. package/src/lib/providers/walletconnect/core/walletconnect-provider.integration.spec.ts +348 -0
  243. package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +826 -0
  244. package/src/lib/providers/walletconnect/core/walletconnect-session-store.ts +273 -0
  245. package/src/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts +299 -0
  246. package/src/lib/providers/walletconnect/core/walletconnect-types.ts +48 -0
  247. package/src/lib/providers/walletconnect/index.ts +33 -0
  248. package/src/lib/providers/walletconnect/signers/hedera-signer.spec.ts +367 -0
  249. package/src/lib/providers/walletconnect/signers/hedera-signer.ts +610 -0
  250. package/src/lib/providers/walletconnect/signers/signer-factory.spec.ts +62 -0
  251. package/src/lib/providers/walletconnect/signers/signer-factory.ts +120 -0
  252. package/src/lib/providers/walletconnect/signers/xrpl-signer.spec.ts +296 -0
  253. package/src/lib/providers/walletconnect/signers/xrpl-signer.ts +478 -0
  254. package/src/lib/services/logger.service.ts +126 -0
  255. package/src/lib/services/transaction-builders/base-transaction-builder.service.ts +585 -0
  256. package/src/lib/services/transaction-builders/hedera-amount-utils.ts +84 -0
  257. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.spec.ts +741 -0
  258. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +1285 -0
  259. package/src/lib/services/transaction-builders/index.ts +54 -0
  260. package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.spec.ts +937 -0
  261. package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.ts +832 -0
  262. package/src/lib/services/transaction.service.ts +346 -0
  263. package/src/lib/services/unified-wallet.service.spec.ts +1382 -0
  264. package/src/lib/services/unified-wallet.service.ts +852 -0
  265. package/src/lib/services/wallet-context.service.ts +184 -0
  266. package/src/lib/services/wallet-event-bus.service.ts +186 -0
  267. package/src/lib/services/wallet-providers.service.ts +137 -0
  268. package/src/lib/transports/chrome-extension-transport.ts +246 -0
  269. package/src/lib/utils/index.ts +14 -0
  270. package/src/lib/utils/ledger-icons.util.ts +78 -0
  271. package/test/test-setup.ts +21 -0
  272. package/test-setup.ts +63 -0
  273. package/tsconfig.build.json +11 -0
  274. package/tsconfig.json +29 -0
  275. package/tsconfig.spec.json +15 -0
  276. package/vitest.config.ts +48 -0
@@ -0,0 +1,678 @@
1
+ /**
2
+ * @file wallet-connection-modal.component.scss
3
+ * @description Component-specific styles for wallet connection modal
4
+ */
5
+
6
+ :host {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ height: 100%;
11
+ width: 100%;
12
+ }
13
+
14
+ ion-content {
15
+ --background: transparent;
16
+ --padding-start: 0;
17
+ --padding-end: 0;
18
+ --padding-top: 0;
19
+ --padding-bottom: 0;
20
+ height: 100vh;
21
+ width: 100%;
22
+ display: flex !important;
23
+ align-items: center !important;
24
+ justify-content: center !important;
25
+
26
+ &::part(scroll) {
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ min-height: 100%;
31
+ width: 100%;
32
+ }
33
+ }
34
+
35
+ /* ============ Modal Container ============ */
36
+ .modal-inner-content {
37
+ width: 90%;
38
+ max-width: 600px;
39
+ max-height: 80vh;
40
+ background: var(--glass-background, rgba(var(--ion-color-dark-rgb), 0.95));
41
+ border-radius: var(--border-radius-xl, 16px);
42
+ padding: 0;
43
+ display: flex;
44
+ flex-direction: column;
45
+ box-shadow: var(--shadow-2xl);
46
+ border: 1px solid var(--border-flat, rgba(var(--ion-color-light-rgb), 0.1));
47
+ overflow: hidden;
48
+ animation: modalFadeIn 0.3s ease;
49
+ }
50
+
51
+ @keyframes modalFadeIn {
52
+ from {
53
+ opacity: 0;
54
+ transform: scale(0.95);
55
+ }
56
+ to {
57
+ opacity: 1;
58
+ transform: scale(1);
59
+ }
60
+ }
61
+
62
+ /* ============ Header ============ */
63
+ .header {
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: space-between;
67
+ padding: var(--space-lg, 16px) var(--space-xl, 20px);
68
+ background: transparent;
69
+ flex-shrink: 0;
70
+
71
+ .title {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: var(--space-sm, 8px);
75
+ flex: 1;
76
+
77
+ p {
78
+ margin: 0;
79
+ font-size: var(--font-size-2xl, 24px);
80
+ font-weight: var(--font-weight-bold, 700);
81
+ color: var(--ion-text-color);
82
+ line-height: 1.2;
83
+ }
84
+ }
85
+
86
+ .back-btn {
87
+ --padding-start: 8px;
88
+ --padding-end: 8px;
89
+ margin: 0;
90
+
91
+ ion-icon {
92
+ font-size: 22px;
93
+ color: var(--ion-color-primary);
94
+ }
95
+ }
96
+
97
+ .close-modal {
98
+ --padding-start: 8px;
99
+ --padding-end: 8px;
100
+ margin: 0;
101
+ cursor: pointer;
102
+
103
+ ion-icon {
104
+ font-size: 24px;
105
+ color: var(--ion-text-color);
106
+ }
107
+
108
+ &:hover:not(:disabled) {
109
+ transform: scale(1.05);
110
+ }
111
+
112
+ &:active:not(:disabled) {
113
+ transform: scale(0.95);
114
+ }
115
+ }
116
+ }
117
+
118
+ /* ============ Form Content Area ============ */
119
+ .form {
120
+ flex: 1;
121
+ overflow-y: auto;
122
+ padding: 0 var(--space-xl, 20px) var(--space-xl, 20px) var(--space-xl, 20px);
123
+ background: transparent;
124
+
125
+ &::-webkit-scrollbar {
126
+ width: 8px;
127
+ }
128
+
129
+ &::-webkit-scrollbar-track {
130
+ background: var(--surface-flat, rgba(var(--ion-color-light-rgb), 0.05));
131
+ border-radius: 4px;
132
+ }
133
+
134
+ &::-webkit-scrollbar-thumb {
135
+ background: rgba(var(--ion-color-light-rgb), 0.2);
136
+ border-radius: 4px;
137
+
138
+ &:hover {
139
+ background: rgba(var(--ion-color-light-rgb), 0.3);
140
+ }
141
+ }
142
+ }
143
+
144
+ /* ============ Responsive Design ============ */
145
+ @media (min-width: 768px) {
146
+ .modal-inner-content {
147
+ width: 80%;
148
+ max-width: 700px;
149
+ border-radius: 20px;
150
+ }
151
+
152
+ .header {
153
+ padding: 20px 24px;
154
+ }
155
+
156
+ .dao-header {
157
+ margin: 0 24px 24px 24px;
158
+ }
159
+
160
+ .form {
161
+ padding: 0 24px 24px 24px;
162
+ }
163
+ }
164
+
165
+ @media (max-width: 480px) {
166
+ .modal-inner-content {
167
+ width: 95%;
168
+ max-height: 85vh;
169
+ }
170
+
171
+ .header {
172
+ padding: 14px 16px;
173
+ }
174
+
175
+ .dao-header {
176
+ margin: 0 16px 20px 16px;
177
+ }
178
+
179
+ .form {
180
+ padding: 0 16px 16px 16px;
181
+ }
182
+ }
183
+
184
+ // DAO Header - Step Progress
185
+ .dao-header {
186
+ margin: 0 var(--space-xl, 20px) var(--token-space-6, 24px) var(--space-xl, 20px);
187
+ padding: var(--token-space-4, 16px);
188
+ background: var(--token-surface-2, var(--surface-flat, rgba(var(--ion-color-light-rgb), 0.05)));
189
+ border: var(--token-border-width-1, 1px) solid
190
+ var(--border-flat, var(--token-border-subtle, rgba(var(--ion-color-light-rgb), 0.1)));
191
+ border-radius: var(--token-radius-3, 12px);
192
+ box-shadow: var(--token-elevation-1, var(--shadow-sm));
193
+ flex-shrink: 0;
194
+ animation: fadeIn var(--token-transition-slow, 0.3s) ease;
195
+
196
+ .step-progress {
197
+ display: flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+
201
+ .step-indicator {
202
+ display: flex;
203
+ align-items: center;
204
+
205
+ .step-circle {
206
+ width: 36px;
207
+ height: 36px;
208
+ border-radius: var(--token-radius-full, 50%);
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ background: var(--token-surface-3, rgba(var(--ion-color-light-rgb), 0.1));
213
+ color: var(--ion-text-color);
214
+ font-weight: var(--token-font-weight-semibold, 600);
215
+ font-size: var(--token-font-size-2, 14px);
216
+ border: var(--token-border-width-1, 1px) solid
217
+ var(--border-flat, var(--token-border-subtle, rgba(var(--ion-color-light-rgb), 0.2)));
218
+ transition: all var(--token-transition-slow, 0.3s)
219
+ var(--token-ease-in-out, cubic-bezier(0.4, 0, 0.2, 1));
220
+
221
+ &.active {
222
+ background: var(--ion-color-primary);
223
+ color: var(--ion-color-primary-contrast);
224
+ border-color: var(--ion-color-primary);
225
+ transform: scale(1.1);
226
+ box-shadow: 0 0 0 4px rgba(var(--ion-color-primary-rgb), 0.2);
227
+ }
228
+
229
+ &.completed {
230
+ background: var(--ion-color-success);
231
+ color: var(--ion-color-success-contrast);
232
+ border-color: var(--ion-color-success);
233
+ transform: scale(1.05);
234
+ }
235
+
236
+ &:hover:not(.active):not(.completed) {
237
+ transform: scale(1.05);
238
+ background: rgba(var(--ion-color-light-rgb), 0.15);
239
+ }
240
+
241
+ ion-icon {
242
+ font-size: 20px;
243
+ }
244
+ }
245
+
246
+ .step-line {
247
+ width: 40px;
248
+ height: var(--token-border-width-2, 2px);
249
+ background: var(
250
+ --border-flat,
251
+ var(--token-border-subtle, rgba(var(--ion-color-light-rgb), 0.2))
252
+ );
253
+ margin: 0 var(--token-space-2, 8px);
254
+ transition: all var(--token-transition-slow, 0.3s) ease;
255
+
256
+ &.active {
257
+ background: var(--ion-color-success);
258
+ box-shadow: 0 0 8px rgba(var(--ion-color-success-rgb), 0.5);
259
+ }
260
+ }
261
+ }
262
+ }
263
+ }
264
+
265
+ .membership-section {
266
+ margin-bottom: var(--token-space-6, 24px);
267
+ animation: fadeIn var(--token-transition-slow, 0.3s) ease;
268
+
269
+ .explanation {
270
+ margin-bottom: var(--token-space-4, 16px);
271
+
272
+ h3 {
273
+ font-size: var(--token-font-size-3, 16px);
274
+ font-weight: var(--token-font-weight-medium, 500);
275
+ color: var(--ion-text-color);
276
+ line-height: var(--token-line-height-tight, 1.3);
277
+ margin: 0 0 var(--token-space-2, 8px) 0;
278
+ }
279
+
280
+ p {
281
+ font-size: var(--token-font-size-2, 14px);
282
+ color: var(--ion-color-medium);
283
+ line-height: var(--token-line-height-normal, 1.4);
284
+ margin: 0;
285
+ }
286
+ }
287
+
288
+ // Options Grid (for networks and ledgers)
289
+ .options-grid {
290
+ display: grid;
291
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
292
+ gap: var(--token-space-3, 12px);
293
+
294
+ ion-card {
295
+ margin: 0;
296
+ background: var(--token-surface-3, rgba(var(--ion-color-light-rgb), 0.05));
297
+ border: 1px solid
298
+ var(--border-flat, var(--token-border-subtle, rgba(var(--ion-color-light-rgb), 0.1)));
299
+ border-radius: var(--token-radius-3, 12px);
300
+ transition: all var(--token-transition-normal, 0.2s) ease;
301
+ cursor: pointer;
302
+ box-shadow: var(--token-elevation-1, var(--shadow-sm));
303
+
304
+ &:hover {
305
+ transform: translateY(-2px);
306
+ background: var(--token-surface-hover, rgba(var(--ion-color-light-rgb), 0.08));
307
+ border-color: var(--border-flat, rgba(var(--ion-color-light-rgb), 0.2));
308
+ box-shadow: var(--token-elevation-2, var(--shadow-md));
309
+ }
310
+
311
+ &:active {
312
+ transform: translateY(0);
313
+ }
314
+
315
+ &.selected {
316
+ border: 2px solid var(--ion-color-primary);
317
+ background: rgba(var(--ion-color-primary-rgb), 0.1);
318
+ box-shadow: 0 0 0 4px rgba(var(--ion-color-primary-rgb), 0.1);
319
+ }
320
+
321
+ ion-card-content {
322
+ text-align: center;
323
+ padding: var(--token-space-5, 20px);
324
+
325
+ .option-icon {
326
+ margin-bottom: var(--token-space-3, 12px);
327
+
328
+ ion-icon {
329
+ font-size: 40px;
330
+ color: var(--ion-color-primary);
331
+ transition: transform var(--token-transition-fast, 0.15s) ease;
332
+ }
333
+ }
334
+
335
+ h3 {
336
+ font-size: var(--token-font-size-3, 16px);
337
+ font-weight: var(--token-font-weight-medium, 500);
338
+ margin: 0 0 var(--token-space-2, 6px) 0;
339
+ color: var(--ion-text-color);
340
+ }
341
+
342
+ p {
343
+ font-size: var(--token-font-size-1, 13px);
344
+ color: var(--ion-color-medium);
345
+ margin: 0 0 var(--token-space-2, 8px) 0;
346
+ line-height: var(--token-line-height-tight, 1.3);
347
+ }
348
+ }
349
+
350
+ &:hover .option-icon ion-icon {
351
+ transform: scale(1.1) rotate(5deg);
352
+ }
353
+ }
354
+ }
355
+
356
+ // Options List (for protocols)
357
+ .options-list {
358
+ display: flex;
359
+ flex-direction: column;
360
+ gap: var(--token-space-3, 12px);
361
+
362
+ ion-card {
363
+ margin: 0;
364
+ background: var(--token-surface-3, rgba(var(--ion-color-light-rgb), 0.05));
365
+ border: 1px solid
366
+ var(--border-flat, var(--token-border-subtle, rgba(var(--ion-color-light-rgb), 0.1)));
367
+ border-radius: var(--token-radius-3, 12px);
368
+ transition: all var(--token-transition-normal, 0.2s) ease;
369
+ cursor: pointer;
370
+ box-shadow: var(--token-elevation-1, var(--shadow-sm));
371
+
372
+ &:hover {
373
+ transform: translateX(4px);
374
+ background: var(--token-surface-hover, rgba(var(--ion-color-light-rgb), 0.08));
375
+ border-color: var(--border-flat, rgba(var(--ion-color-light-rgb), 0.2));
376
+ box-shadow: var(--token-elevation-2, var(--shadow-md));
377
+ }
378
+
379
+ &:active {
380
+ transform: translateX(2px);
381
+ }
382
+
383
+ &.selected {
384
+ border: 2px solid var(--ion-color-primary);
385
+ background: rgba(var(--ion-color-primary-rgb), 0.1);
386
+ box-shadow: 0 0 0 4px rgba(var(--ion-color-primary-rgb), 0.1);
387
+ }
388
+
389
+ ion-card-content {
390
+ padding: var(--token-space-4, 16px);
391
+
392
+ .protocol-header {
393
+ display: flex;
394
+ align-items: center;
395
+ gap: var(--token-space-3, 12px);
396
+ margin-bottom: var(--token-space-3, 12px);
397
+
398
+ .option-icon {
399
+ ion-icon {
400
+ font-size: 36px;
401
+ color: var(--ion-color-primary);
402
+ transition: transform var(--token-transition-fast, 0.15s) ease;
403
+ }
404
+ }
405
+
406
+ .protocol-info {
407
+ flex: 1;
408
+ min-width: 0;
409
+
410
+ h3 {
411
+ font-size: var(--token-font-size-3, 16px);
412
+ font-weight: var(--token-font-weight-medium, 500);
413
+ margin: 0 0 var(--token-space-1, 4px) 0;
414
+ color: var(--ion-text-color);
415
+ }
416
+
417
+ p {
418
+ font-size: var(--token-font-size-1, 13px);
419
+ color: var(--ion-color-medium);
420
+ margin: 0;
421
+ line-height: var(--token-line-height-tight, 1.3);
422
+ }
423
+ }
424
+ }
425
+
426
+ .feature-list {
427
+ list-style: none;
428
+ padding: 0;
429
+ margin: 0;
430
+
431
+ li {
432
+ display: flex;
433
+ align-items: center;
434
+ gap: var(--token-space-2, 8px);
435
+ padding: var(--token-space-1, 4px) 0;
436
+ font-size: var(--token-font-size-1, 13px);
437
+ color: var(--ion-text-color);
438
+ line-height: var(--token-line-height-normal, 1.4);
439
+
440
+ ion-icon {
441
+ font-size: var(--token-space-4, 16px);
442
+ flex-shrink: 0;
443
+ color: var(--ion-color-success);
444
+ }
445
+ }
446
+ }
447
+ }
448
+
449
+ &:hover .protocol-header .option-icon ion-icon {
450
+ transform: scale(1.1) rotate(5deg);
451
+ }
452
+ }
453
+ }
454
+
455
+ // Connection Progress State
456
+ &.connection-progress {
457
+ display: flex;
458
+ justify-content: center;
459
+ align-items: center;
460
+ min-height: 200px;
461
+
462
+ .status-info {
463
+ text-align: center;
464
+ padding: var(--token-space-6, 24px);
465
+
466
+ ion-spinner {
467
+ font-size: 48px;
468
+ margin-bottom: var(--token-space-4, 16px);
469
+ color: var(--ion-color-primary);
470
+ }
471
+
472
+ h3 {
473
+ font-size: var(--token-font-size-4, 18px);
474
+ font-weight: var(--token-font-weight-medium, 500);
475
+ margin: 0 0 var(--token-space-2, 8px) 0;
476
+ color: var(--ion-text-color);
477
+ }
478
+
479
+ p {
480
+ font-size: var(--token-font-size-2, 14px);
481
+ color: var(--ion-color-medium);
482
+ margin: 0;
483
+ max-width: 300px;
484
+ line-height: var(--token-line-height-normal, 1.4);
485
+ }
486
+ }
487
+ }
488
+
489
+ .error-section {
490
+ padding: var(--token-space-3, 12px);
491
+ background: rgba(var(--ion-color-danger-rgb), 0.1);
492
+ border: 1px solid rgba(var(--ion-color-danger-rgb), 0.2);
493
+ border-radius: var(--token-radius-2, 8px);
494
+
495
+ ion-item {
496
+ --background: transparent;
497
+ --padding-start: 0;
498
+ --inner-padding-end: 0;
499
+
500
+ ion-icon {
501
+ font-size: var(--token-space-6, 24px);
502
+ }
503
+
504
+ ion-label {
505
+ h3 {
506
+ font-size: var(--token-font-size-3, 16px);
507
+ font-weight: var(--token-font-weight-medium, 500);
508
+ color: var(--ion-color-danger);
509
+ margin: 0 0 var(--token-space-1, 4px) 0;
510
+ }
511
+
512
+ p {
513
+ font-size: var(--token-font-size-1, 13px);
514
+ color: var(--ion-color-medium);
515
+ margin: 0;
516
+ line-height: var(--token-line-height-tight, 1.3);
517
+ }
518
+ }
519
+ }
520
+ }
521
+ }
522
+
523
+ // Step Content - Smooth Transitions
524
+ .step-content {
525
+ animation: stepFadeIn var(--token-transition-normal, 0.25s)
526
+ var(--token-ease-out, cubic-bezier(0, 0, 0.2, 1));
527
+ }
528
+
529
+ // Direct Selection Enhancement
530
+ // Cards with direct-select class have enhanced visual feedback
531
+ .direct-select {
532
+ ion-card {
533
+ position: relative;
534
+ overflow: hidden;
535
+
536
+ // Subtle arrow indicator showing "click to proceed"
537
+ &::after {
538
+ content: '';
539
+ position: absolute;
540
+ right: 12px;
541
+ top: 50%;
542
+ transform: translateY(-50%) translateX(0);
543
+ width: 0;
544
+ height: 0;
545
+ border-left: 6px solid var(--ion-color-primary);
546
+ border-top: 5px solid transparent;
547
+ border-bottom: 5px solid transparent;
548
+ opacity: 0;
549
+ transition: all var(--token-transition-fast, 0.15s) ease;
550
+ }
551
+
552
+ &:hover::after {
553
+ opacity: 0.6;
554
+ transform: translateY(-50%) translateX(4px);
555
+ }
556
+
557
+ // Enhanced hover state for direct selection
558
+ &:hover {
559
+ border-color: rgba(var(--ion-color-primary-rgb), 0.4);
560
+
561
+ .option-icon ion-icon {
562
+ color: var(--ion-color-primary);
563
+ }
564
+ }
565
+
566
+ // Active/pressed state feedback
567
+ &:active {
568
+ transform: scale(0.98);
569
+ background: rgba(var(--ion-color-primary-rgb), 0.15) !important;
570
+ }
571
+ }
572
+
573
+ // Grid layout cards (Network, Ledger) - position arrow differently
574
+ &.options-grid ion-card::after {
575
+ right: 8px;
576
+ top: 16px;
577
+ transform: translateY(0) translateX(0);
578
+ }
579
+
580
+ &.options-grid ion-card:hover::after {
581
+ transform: translateY(0) translateX(4px);
582
+ }
583
+ }
584
+
585
+ // Animations
586
+ @keyframes fadeIn {
587
+ from {
588
+ opacity: 0;
589
+ transform: translateY(-10px);
590
+ }
591
+ to {
592
+ opacity: 1;
593
+ transform: translateY(0);
594
+ }
595
+ }
596
+
597
+ @keyframes stepFadeIn {
598
+ from {
599
+ opacity: 0;
600
+ transform: translateY(8px);
601
+ }
602
+ to {
603
+ opacity: 1;
604
+ transform: translateY(0);
605
+ }
606
+ }
607
+
608
+ // Step indicator animation for dynamic step changes
609
+ @keyframes stepPulse {
610
+ 0% {
611
+ box-shadow: 0 0 0 0 rgba(var(--ion-color-primary-rgb), 0.4);
612
+ }
613
+ 70% {
614
+ box-shadow: 0 0 0 8px rgba(var(--ion-color-primary-rgb), 0);
615
+ }
616
+ 100% {
617
+ box-shadow: 0 0 0 0 rgba(var(--ion-color-primary-rgb), 0);
618
+ }
619
+ }
620
+
621
+ .step-progress .step-indicator .step-circle.active {
622
+ animation: stepPulse 1.5s ease-out infinite;
623
+ }
624
+
625
+ // Responsive Design
626
+ @media (max-width: 768px) {
627
+ .membership-section {
628
+ .options-grid {
629
+ grid-template-columns: 1fr;
630
+ }
631
+ }
632
+
633
+ // Smaller step indicators on mobile
634
+ .dao-header .step-progress .step-indicator {
635
+ .step-circle {
636
+ width: 28px;
637
+ height: 28px;
638
+ font-size: 12px;
639
+ }
640
+
641
+ .step-line {
642
+ width: 24px;
643
+ }
644
+ }
645
+ }
646
+
647
+ // Reduced Motion Support
648
+ @media (prefers-reduced-motion: reduce) {
649
+ *,
650
+ *::before,
651
+ *::after {
652
+ animation-duration: 0.01ms !important;
653
+ transition-duration: 0.01ms !important;
654
+ }
655
+
656
+ @keyframes fadeIn {
657
+ from,
658
+ to {
659
+ opacity: 1;
660
+ transform: translateY(0);
661
+ }
662
+ }
663
+
664
+ @keyframes stepFadeIn {
665
+ from,
666
+ to {
667
+ opacity: 1;
668
+ transform: translateY(0);
669
+ }
670
+ }
671
+
672
+ @keyframes stepPulse {
673
+ from,
674
+ to {
675
+ box-shadow: none;
676
+ }
677
+ }
678
+ }