@seams/wallet 0.10.2 → 0.12.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 (176) hide show
  1. package/README.md +3 -3
  2. package/THIRD_PARTY_NOTICES.md +33 -1812
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +100 -0
  5. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +236 -97
  6. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +558 -0
  7. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +82 -0
  8. package/dist/esm/core/types/sdkSentEvents.js +9 -0
  9. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonMock.js +189 -0
  10. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +137 -0
  11. package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +39 -0
  12. package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +39 -13
  13. package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +247 -0
  14. package/dist/esm/react/components/AccountMenuButton/AccountMenuScreen.js +41 -0
  15. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +79 -0
  16. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +168 -174
  17. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +19 -0
  18. package/dist/esm/react/components/AccountMenuButton/ExportKeysScreen.js +30 -0
  19. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +148 -87
  20. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +26 -5
  21. package/dist/esm/react/components/AccountMenuButton/MenuItem.js +28 -13
  22. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.css +73 -69
  23. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +56 -68
  24. package/dist/esm/react/components/AccountMenuButton/RecoveryCodeAcknowledgement.js +27 -0
  25. package/dist/esm/react/components/AccountMenuButton/RecoveryCodeActions.js +53 -0
  26. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +3 -1
  27. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +2 -8
  28. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +1 -1
  29. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.js +6 -3
  30. package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +4 -4
  31. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +443 -12
  32. package/dist/esm/react/components/AccountMenuButton/hooks/useProfileState.js +1 -1
  33. package/dist/esm/react/components/AccountMenuButton/icons/LayersIcon.js +8 -0
  34. package/dist/esm/react/components/AccountMenuButton/icons/LockKeyholeIcon.js +22 -0
  35. package/dist/esm/react/components/AccountMenuButton/icons/PlusIcon.js +8 -0
  36. package/dist/esm/react/components/AccountMenuButton/icons/SunIcon.js +2 -2
  37. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.css +0 -8
  38. package/dist/esm/react/components/AccountMenuButton/index.js +135 -115
  39. package/dist/esm/react/components/QRCodeScanner.js +64 -40
  40. package/dist/esm/react/components/QRCodeScannerCamera.js +16 -0
  41. package/dist/esm/react/components/ShowQRCode.js +2 -2
  42. package/dist/esm/react/externalEvm.js +2 -2
  43. package/dist/esm/react/index.js +2 -1
  44. package/dist/esm/react/styles/styles.css +520 -91
  45. package/dist/esm/react/transactionReview/TransactionReviewHost.js +3 -3
  46. package/dist/esm/sdk/{adapters-DYPu0nK9.js → adapters-CGvNLOfZ.js} +1 -1
  47. package/dist/{public/sdk/display-DjoWrSgE.js → esm/sdk/display-DTbGoX4e.js} +1 -1
  48. package/dist/{public/sdk/exportKeypairOperation-DYCzCbqL.js → esm/sdk/exportKeypairOperation-BHXMSA3v.js} +1 -1
  49. package/dist/{public/sdk/host-D5b19B_h.js → esm/sdk/host-CHQwi-Nm.js} +1 -1
  50. package/dist/esm/sdk/{localOnly-KvZeKkH5.js → localOnly-CUVRoMy2.js} +1 -1
  51. package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-BA2ttbTM.js → mountRecoveryCodeBackupSurface-D1G-iCPI.js} +2 -2
  52. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-BkIrbd6Q.js → pendingWalletRecoveryCodeBackup-DMg5U0Fk.js} +1 -1
  53. package/dist/esm/sdk/{recovery-entrypoint-DoXswV9I.js → recovery-entrypoint-EHY_b7Z-.js} +1 -1
  54. package/dist/esm/sdk/registration-CQxxUt5s.js +1 -0
  55. package/dist/esm/sdk/{registration-BFHEYmgh.js → registration-Drtkzrlc.js} +1 -1
  56. package/dist/esm/sdk/{requireStepUpAuth-C67sluoC.js → requireStepUpAuth-FqZSU021.js} +1 -1
  57. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  58. package/dist/esm/sdk/runtime-auth-DtpRz88X.js +1 -0
  59. package/dist/esm/sdk/{runtime-device-link-pf-a_-3u.js → runtime-device-link-DXjabXJb.js} +1 -1
  60. package/dist/esm/sdk/{runtime-ecdsa-tempo-Ddnuti6f.js → runtime-ecdsa-tempo-DlKMIbyP.js} +1 -1
  61. package/dist/esm/sdk/{runtime-email-otp-BAG8ZC1J.js → runtime-email-otp-BBPghU2G.js} +1 -1
  62. package/dist/esm/sdk/{runtime-export-DxL99xfn.js → runtime-export-pw-xJL8o.js} +1 -1
  63. package/dist/esm/sdk/{runtime-near-BrWP4IxC.js → runtime-near-B-vYxGjl.js} +1 -1
  64. package/dist/esm/sdk/{runtime-preferences-BjVdHYL0.js → runtime-preferences-D-hY0RfC.js} +1 -1
  65. package/dist/esm/sdk/{runtime-recovery-BNd_GX5q.js → runtime-recovery-Vg1ND2nl.js} +1 -1
  66. package/dist/esm/sdk/{runtime-recovery-codes-Dn-NccpU.js → runtime-recovery-codes-rLR4Guy4.js} +1 -1
  67. package/dist/esm/sdk/sdkSentEvents-Dl8fOL50.js +1 -0
  68. package/dist/esm/sdk/shared-6bpRPbcM.js +6 -0
  69. package/dist/{public/sdk/signEvmFamily-DjD3tn8e.js → esm/sdk/signEvmFamily-M0trbeZe.js} +1 -1
  70. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-CwRFbaLM.js → signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js} +1 -1
  71. package/dist/esm/sdk/{signEvmWithUiConfirm-BHG0dwVG.js → signEvmWithUiConfirm-CFcqJRj3.js} +1 -1
  72. package/dist/{public/sdk/signNear-D0tlQXb9.js → esm/sdk/signNear-DGUQZ44s.js} +1 -1
  73. package/dist/esm/sdk/{signingFlow-Mym5j6aw.js → signingFlow-DZvV4AgG.js} +1 -1
  74. package/dist/esm/sdk/{transaction-activity-Cb2JyYKv.js → transaction-activity-xfeHKJoq.js} +1 -1
  75. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  76. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  77. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  78. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  79. package/dist/esm/sdk/{wallet-recovery-D7ywcIHw.js → wallet-recovery-LMtGiEL3.js} +1 -1
  80. package/dist/esm/sdk/wallet-ui.css +1 -1
  81. package/dist/{public/sdk/walletCustodyEcdsaContinuity-B8aO2NFb.js → esm/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js} +1 -1
  82. package/dist/{public/sdk/walletRecoveryCommit-C3EgMjo-.js → esm/sdk/walletRecoveryCommit-BYRC_2li.js} +1 -1
  83. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  84. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  85. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  86. package/dist/public/headers.manifest.json +1 -1
  87. package/dist/public/sdk/{adapters-DYPu0nK9.js → adapters-CGvNLOfZ.js} +1 -1
  88. package/dist/{esm/sdk/display-DjoWrSgE.js → public/sdk/display-DTbGoX4e.js} +1 -1
  89. package/dist/{esm/sdk/exportKeypairOperation-DYCzCbqL.js → public/sdk/exportKeypairOperation-BHXMSA3v.js} +1 -1
  90. package/dist/{esm/sdk/host-D5b19B_h.js → public/sdk/host-CHQwi-Nm.js} +1 -1
  91. package/dist/public/sdk/{localOnly-KvZeKkH5.js → localOnly-CUVRoMy2.js} +1 -1
  92. package/dist/public/sdk/{mountRecoveryCodeBackupSurface-BA2ttbTM.js → mountRecoveryCodeBackupSurface-D1G-iCPI.js} +2 -2
  93. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-BkIrbd6Q.js → pendingWalletRecoveryCodeBackup-DMg5U0Fk.js} +1 -1
  94. package/dist/public/sdk/{recovery-entrypoint-DoXswV9I.js → recovery-entrypoint-EHY_b7Z-.js} +1 -1
  95. package/dist/public/sdk/registration-CQxxUt5s.js +1 -0
  96. package/dist/public/sdk/{registration-BFHEYmgh.js → registration-Drtkzrlc.js} +1 -1
  97. package/dist/public/sdk/{requireStepUpAuth-C67sluoC.js → requireStepUpAuth-FqZSU021.js} +1 -1
  98. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  99. package/dist/public/sdk/runtime-auth-DtpRz88X.js +1 -0
  100. package/dist/public/sdk/{runtime-device-link-pf-a_-3u.js → runtime-device-link-DXjabXJb.js} +1 -1
  101. package/dist/public/sdk/{runtime-ecdsa-tempo-Ddnuti6f.js → runtime-ecdsa-tempo-DlKMIbyP.js} +1 -1
  102. package/dist/public/sdk/{runtime-email-otp-BAG8ZC1J.js → runtime-email-otp-BBPghU2G.js} +1 -1
  103. package/dist/public/sdk/{runtime-export-DxL99xfn.js → runtime-export-pw-xJL8o.js} +1 -1
  104. package/dist/public/sdk/{runtime-near-BrWP4IxC.js → runtime-near-B-vYxGjl.js} +1 -1
  105. package/dist/public/sdk/{runtime-preferences-BjVdHYL0.js → runtime-preferences-D-hY0RfC.js} +1 -1
  106. package/dist/public/sdk/{runtime-recovery-BNd_GX5q.js → runtime-recovery-Vg1ND2nl.js} +1 -1
  107. package/dist/public/sdk/{runtime-recovery-codes-Dn-NccpU.js → runtime-recovery-codes-rLR4Guy4.js} +1 -1
  108. package/dist/public/sdk/sdkSentEvents-Dl8fOL50.js +1 -0
  109. package/dist/public/sdk/shared-6bpRPbcM.js +6 -0
  110. package/dist/{esm/sdk/signEvmFamily-DjD3tn8e.js → public/sdk/signEvmFamily-M0trbeZe.js} +1 -1
  111. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-CwRFbaLM.js → signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js} +1 -1
  112. package/dist/public/sdk/{signEvmWithUiConfirm-BHG0dwVG.js → signEvmWithUiConfirm-CFcqJRj3.js} +1 -1
  113. package/dist/{esm/sdk/signNear-D0tlQXb9.js → public/sdk/signNear-DGUQZ44s.js} +1 -1
  114. package/dist/public/sdk/{signingFlow-Mym5j6aw.js → signingFlow-DZvV4AgG.js} +1 -1
  115. package/dist/public/sdk/{transaction-activity-Cb2JyYKv.js → transaction-activity-xfeHKJoq.js} +1 -1
  116. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  117. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  118. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  119. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  120. package/dist/public/sdk/{wallet-recovery-D7ywcIHw.js → wallet-recovery-LMtGiEL3.js} +1 -1
  121. package/dist/public/sdk/wallet-ui.css +1 -1
  122. package/dist/{esm/sdk/walletCustodyEcdsaContinuity-B8aO2NFb.js → public/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js} +1 -1
  123. package/dist/{esm/sdk/walletRecoveryCommit-C3EgMjo-.js → public/sdk/walletRecoveryCommit-BYRC_2li.js} +1 -1
  124. package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
  125. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  126. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  127. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  128. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  129. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  130. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  131. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  132. package/dist/public/wallet-assets.manifest.json +64 -64
  133. package/dist/public/wallet-service/index.html +4 -4
  134. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -1
  135. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +7 -3
  136. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +8 -5
  137. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +4 -0
  138. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonMock.d.ts +17 -0
  139. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +17 -0
  140. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuDeviceDetails.d.ts +13 -0
  141. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuDialog.d.ts +1 -1
  142. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuMockScreens.d.ts +43 -0
  143. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuScreen.d.ts +9 -0
  144. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodRow.d.ts +14 -0
  145. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +1 -1
  146. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsView.d.ts +8 -0
  147. package/dist/types/wallet/src/react/components/AccountMenuButton/ExportKeysScreen.d.ts +7 -0
  148. package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +1 -1
  149. package/dist/types/wallet/src/react/components/AccountMenuButton/ProfileDropdown.d.ts +2 -14
  150. package/dist/types/wallet/src/react/components/AccountMenuButton/RecoveryCodeAcknowledgement.d.ts +5 -0
  151. package/dist/types/wallet/src/react/components/AccountMenuButton/RecoveryCodeActions.d.ts +5 -0
  152. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LayersIcon.d.ts +2 -0
  153. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockKeyholeIcon.d.ts +2 -0
  154. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +2 -0
  155. package/dist/types/wallet/src/react/components/AccountMenuButton/index.d.ts +2 -0
  156. package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +1 -14
  157. package/dist/types/wallet/src/react/components/QRCodeScanner.d.ts +1 -0
  158. package/dist/types/wallet/src/react/components/QRCodeScannerCamera.d.ts +5 -0
  159. package/dist/types/wallet/src/react/index.d.ts +2 -1
  160. package/dist/workers/email_otp_runtime_bg.wasm +0 -0
  161. package/dist/workers/evm_crypto_bg.wasm +0 -0
  162. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  163. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  164. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  165. package/dist/workers/tempo_signer_bg.wasm +0 -0
  166. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  167. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  168. package/package.json +1 -3
  169. package/dist/esm/sdk/registration-Cx_f58rb.js +0 -1
  170. package/dist/esm/sdk/runtime-auth-CKUleRYA.js +0 -1
  171. package/dist/esm/sdk/sdkSentEvents-DiQ3YVlj.js +0 -1
  172. package/dist/esm/sdk/shared-CSfgTVcf.js +0 -6
  173. package/dist/public/sdk/registration-Cx_f58rb.js +0 -1
  174. package/dist/public/sdk/runtime-auth-CKUleRYA.js +0 -1
  175. package/dist/public/sdk/sdkSentEvents-DiQ3YVlj.js +0 -1
  176. package/dist/public/sdk/shared-CSfgTVcf.js +0 -6
@@ -0,0 +1,247 @@
1
+ import { AccountMenuScreen } from "./AccountMenuScreen.js";
2
+ import { QRCodeScannerCamera } from "../QRCodeScannerCamera.js";
3
+ import { AccountMenuDeviceDetails } from "./AccountMenuDeviceDetails.js";
4
+ import { MailIcon } from "./icons/MailIcon.js";
5
+ import { AuthenticationMethodRow } from "./AuthenticationMethodRow.js";
6
+ import { AuthenticationMethodsView } from "./AuthenticationMethodsView.js";
7
+ import { AccountsSection } from "./AccountsSection.js";
8
+ import { ExportKeysScreen } from "./ExportKeysScreen.js";
9
+ import { RecoveryCodeAcknowledgement } from "./RecoveryCodeAcknowledgement.js";
10
+ import { RecoveryCodeActions } from "./RecoveryCodeActions.js";
11
+ import "react";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ //#region src/react/components/AccountMenuButton/AccountMenuMockScreens.tsx
14
+ const devices = [
15
+ {
16
+ id: "macbook",
17
+ name: "MacBook Pro",
18
+ lastUsed: "Now",
19
+ methods: "both"
20
+ },
21
+ {
22
+ id: "iphone",
23
+ name: "iPhone",
24
+ lastUsed: "Today, 09:41",
25
+ methods: "passkey"
26
+ },
27
+ {
28
+ id: "pixel",
29
+ name: "Pixel 9",
30
+ lastUsed: "Yesterday",
31
+ methods: "email_otp"
32
+ }
33
+ ];
34
+ function selectDevice(setScreen, parent, device) {
35
+ setScreen({
36
+ kind: "device",
37
+ device,
38
+ parent
39
+ });
40
+ }
41
+ function methodLabel(choice) {
42
+ switch (choice) {
43
+ case "passkey": return "Passkey";
44
+ case "email_otp": return "Email OTP";
45
+ case "both": return "Passkey + Email OTP";
46
+ default: return assertNever(choice);
47
+ }
48
+ }
49
+ function deviceRow(setScreen, parent, device) {
50
+ return /* @__PURE__ */ jsx(AuthenticationMethodRow, {
51
+ kind: device.methods === "email_otp" ? "email_otp" : "passkey",
52
+ title: device.name,
53
+ description: methodLabel(device.methods),
54
+ onSelect: selectDevice.bind(null, setScreen, parent, device)
55
+ }, device.id);
56
+ }
57
+ function MethodTiles({ methods }) {
58
+ return /* @__PURE__ */ jsxs("ul", {
59
+ className: "seams-account-method-tiles",
60
+ "aria-label": "Authentication methods",
61
+ children: [methods !== "email_otp" ? /* @__PURE__ */ jsx(AuthenticationMethodRow, {
62
+ kind: "passkey",
63
+ title: "Passkey",
64
+ description: "Touch ID · This device"
65
+ }) : null, methods !== "passkey" ? /* @__PURE__ */ jsx(AuthenticationMethodRow, {
66
+ kind: "email_otp",
67
+ title: "Email OTP",
68
+ description: "alex@example.com"
69
+ }) : null]
70
+ });
71
+ }
72
+ function selectExportKey(setScreen, chain) {
73
+ setScreen({
74
+ kind: "export-key",
75
+ chain
76
+ });
77
+ }
78
+ const recoveryCodes = [
79
+ "4821–7396–2058–1643",
80
+ "9164–3082–7541–6290",
81
+ "3579–1468–8023–5916",
82
+ "6208–9531–4672–1805"
83
+ ];
84
+ function recoveryCodeRow(code, index) {
85
+ return /* @__PURE__ */ jsxs("li", {
86
+ "aria-label": `Recovery code ${index + 1}`,
87
+ children: [/* @__PURE__ */ jsx("span", {
88
+ "aria-hidden": "true",
89
+ children: String(index + 1).padStart(2, "0")
90
+ }), /* @__PURE__ */ jsx("code", { children: code })]
91
+ }, code);
92
+ }
93
+ function assertNever(value) {
94
+ throw new Error(`Unknown account preview screen: ${String(value)}`);
95
+ }
96
+ function AccountMenuMockScreens({ screen, setScreen, accounts, transactionSettings, walletId }) {
97
+ const back = setScreen.bind(null, { kind: "overview" });
98
+ switch (screen.kind) {
99
+ case "overview": return null;
100
+ case "transactions": return /* @__PURE__ */ jsx(AccountMenuScreen, {
101
+ title: "Transaction settings",
102
+ onBack: back,
103
+ children: transactionSettings
104
+ });
105
+ case "export-keys": return /* @__PURE__ */ jsx(ExportKeysScreen, {
106
+ onBack: back,
107
+ loadingChain: null,
108
+ canExportNearKey: true,
109
+ canExportEvmKeys: true,
110
+ onSelectChain: selectExportKey.bind(null, setScreen)
111
+ });
112
+ case "export-key": return /* @__PURE__ */ jsxs(AccountMenuScreen, {
113
+ title: screen.chain === "near" ? "Export NEAR key" : "Export EVM keys",
114
+ onBack: setScreen.bind(null, { kind: "export-keys" }),
115
+ children: [/* @__PURE__ */ jsx("p", {
116
+ className: "seams-account-description",
117
+ children: "Your wallet requires authentication before revealing this signing key."
118
+ }), /* @__PURE__ */ jsxs("dl", {
119
+ className: "seams-account-inset",
120
+ children: [
121
+ /* @__PURE__ */ jsxs("div", {
122
+ className: "seams-account-detail-row",
123
+ children: [/* @__PURE__ */ jsx("dt", { children: "Wallet" }), /* @__PURE__ */ jsx("dd", { children: walletId })]
124
+ }),
125
+ /* @__PURE__ */ jsxs("div", {
126
+ className: "seams-account-detail-row",
127
+ children: [/* @__PURE__ */ jsx("dt", { children: "Key type" }), /* @__PURE__ */ jsx("dd", { children: screen.chain === "near" ? "Ed25519" : "ECDSA" })]
128
+ }),
129
+ /* @__PURE__ */ jsxs("div", {
130
+ className: "seams-account-detail-row",
131
+ children: [/* @__PURE__ */ jsx("dt", { children: "Protection" }), /* @__PURE__ */ jsx("dd", { children: "Authentication required" })]
132
+ })
133
+ ]
134
+ })]
135
+ });
136
+ case "accounts": return /* @__PURE__ */ jsxs(AccountMenuScreen, {
137
+ title: "Accounts",
138
+ onBack: back,
139
+ children: [/* @__PURE__ */ jsx("p", {
140
+ className: "seams-account-description",
141
+ children: "Your addresses across networks."
142
+ }), /* @__PURE__ */ jsx(AccountsSection, { rows: accounts })]
143
+ });
144
+ case "methods": return /* @__PURE__ */ jsx(AccountMenuScreen, {
145
+ title: "Authentication methods",
146
+ onBack: back,
147
+ children: /* @__PURE__ */ jsx(AuthenticationMethodsView, {
148
+ walletLabel: walletId,
149
+ status: "Active",
150
+ children: /* @__PURE__ */ jsx(MethodTiles, { methods: "both" })
151
+ })
152
+ });
153
+ case "linked": return /* @__PURE__ */ jsxs(AccountMenuScreen, {
154
+ title: "Linked devices",
155
+ onBack: back,
156
+ children: [
157
+ /* @__PURE__ */ jsx("p", {
158
+ className: "seams-account-description",
159
+ children: "Manage how your devices unlock your wallet."
160
+ }),
161
+ /* @__PURE__ */ jsx("ul", { children: devices.map(deviceRow.bind(null, setScreen, screen.kind)) }),
162
+ /* @__PURE__ */ jsx("button", {
163
+ type: "button",
164
+ className: "seams-account-action primary",
165
+ onClick: setScreen.bind(null, { kind: "scanner" }),
166
+ children: "Link a device"
167
+ })
168
+ ]
169
+ });
170
+ case "device": return /* @__PURE__ */ jsx(AccountMenuScreen, {
171
+ title: "Device details",
172
+ onBack: setScreen.bind(null, { kind: screen.parent }),
173
+ children: /* @__PURE__ */ jsx(AccountMenuDeviceDetails, {
174
+ icon: screen.device.methods === "email_otp" ? /* @__PURE__ */ jsx(MailIcon, {
175
+ size: 30,
176
+ strokeWidth: 1.5
177
+ }) : void 0,
178
+ title: screen.device.name,
179
+ description: methodLabel(screen.device.methods),
180
+ details: [{
181
+ label: "Status",
182
+ value: "Active"
183
+ }, {
184
+ label: "Last used",
185
+ value: screen.device.lastUsed
186
+ }],
187
+ children: /* @__PURE__ */ jsx(MethodTiles, { methods: screen.device.methods })
188
+ })
189
+ });
190
+ case "scanner": return /* @__PURE__ */ jsxs(AccountMenuScreen, {
191
+ title: "Link a device",
192
+ onBack: back,
193
+ children: [
194
+ /* @__PURE__ */ jsx("p", {
195
+ className: "seams-account-description",
196
+ children: "Open your wallet on the other device, then scan its pairing code."
197
+ }),
198
+ /* @__PURE__ */ jsx(QRCodeScannerCamera, { children: /* @__PURE__ */ jsx("div", {
199
+ className: "qr-scanner-video is-ready",
200
+ "aria-hidden": "true",
201
+ style: { background: "radial-gradient(ellipse at 50% 48%, #3e403f, #222423 75%)" }
202
+ }) }),
203
+ /* @__PURE__ */ jsx("p", {
204
+ className: "seams-account-note",
205
+ children: "Position the QR code inside the frame."
206
+ })
207
+ ]
208
+ });
209
+ case "recovery": return /* @__PURE__ */ jsxs(AccountMenuScreen, {
210
+ title: screen.revealed ? "Your recovery codes" : "Recovery codes",
211
+ onBack: screen.revealed ? setScreen.bind(null, {
212
+ kind: "recovery",
213
+ revealed: false
214
+ }) : back,
215
+ children: [
216
+ /* @__PURE__ */ jsx("p", {
217
+ className: "seams-account-description",
218
+ children: screen.revealed ? "Save these codes in your password manager or another secure place." : "Keep your recovery codes somewhere safe. Use a code to restore access to your wallet."
219
+ }),
220
+ screen.revealed ? /* @__PURE__ */ jsx("ol", {
221
+ className: "seams-account-recovery-codes",
222
+ "aria-label": "Recovery codes",
223
+ children: recoveryCodes.map(recoveryCodeRow)
224
+ }) : null,
225
+ screen.revealed ? /* @__PURE__ */ jsx(RecoveryCodeActions, { codes: recoveryCodes }) : null,
226
+ !screen.revealed ? /* @__PURE__ */ jsx("div", {
227
+ className: "seams-account-inset",
228
+ children: "Keep these codes private. Anyone with a code can start recovering your wallet."
229
+ }) : null,
230
+ screen.revealed ? /* @__PURE__ */ jsx(RecoveryCodeAcknowledgement, { onDone: back }) : /* @__PURE__ */ jsx("button", {
231
+ type: "button",
232
+ className: "seams-account-action primary",
233
+ onClick: setScreen.bind(null, {
234
+ kind: "recovery",
235
+ revealed: true
236
+ }),
237
+ children: "Reveal with passkey"
238
+ })
239
+ ]
240
+ });
241
+ default: return assertNever(screen);
242
+ }
243
+ }
244
+ //#endregion
245
+ export { AccountMenuMockScreens };
246
+
247
+ //# sourceMappingURL=AccountMenuMockScreens.js.map
@@ -0,0 +1,41 @@
1
+ import { useLayoutEffect, useRef } from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/react/components/AccountMenuButton/AccountMenuScreen.tsx
4
+ function focusHeading(heading) {
5
+ heading.current?.focus({ preventScroll: true });
6
+ }
7
+ /** One navigation level inside the account panel. Focus follows the screen title. */
8
+ function AccountMenuScreen({ title, onBack, children, className }) {
9
+ const heading = useRef(null);
10
+ useLayoutEffect(focusHeading.bind(null, heading), [title]);
11
+ return /* @__PURE__ */ jsxs("section", {
12
+ className: `seams-account-screen ${className ?? ""}`,
13
+ "aria-label": title,
14
+ children: [/* @__PURE__ */ jsxs("div", {
15
+ className: "seams-account-heading",
16
+ children: [/* @__PURE__ */ jsx("button", {
17
+ type: "button",
18
+ className: "seams-account-back",
19
+ "aria-label": "Back",
20
+ onClick: onBack,
21
+ children: /* @__PURE__ */ jsx("svg", {
22
+ width: "18",
23
+ height: "18",
24
+ viewBox: "0 0 24 24",
25
+ fill: "none",
26
+ stroke: "currentColor",
27
+ strokeWidth: "1.75",
28
+ children: /* @__PURE__ */ jsx("path", { d: "m14 6-6 6 6 6" })
29
+ })
30
+ }), /* @__PURE__ */ jsx("h2", {
31
+ ref: heading,
32
+ tabIndex: -1,
33
+ children: title
34
+ })]
35
+ }), children]
36
+ }, title);
37
+ }
38
+ //#endregion
39
+ export { AccountMenuScreen };
40
+
41
+ //# sourceMappingURL=AccountMenuScreen.js.map
@@ -0,0 +1,79 @@
1
+ import TouchIcon from "./icons/TouchIcon.js";
2
+ import { MailIcon } from "./icons/MailIcon.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/react/components/AccountMenuButton/AuthenticationMethodRow.tsx
6
+ function AuthenticationMethodRow({ kind, title, description, icon, action, onSelect, children }) {
7
+ if (onSelect) return /* @__PURE__ */ jsx("li", {
8
+ className: "seams-account-method-list-item",
9
+ children: /* @__PURE__ */ jsxs("button", {
10
+ type: "button",
11
+ className: "seams-account-method-button",
12
+ onClick: onSelect,
13
+ children: [
14
+ /* @__PURE__ */ jsx("span", {
15
+ className: "seams-account-avatar",
16
+ children: icon ?? (kind === "passkey" ? /* @__PURE__ */ jsx(TouchIcon, {
17
+ width: 20,
18
+ height: 20,
19
+ strokeWidth: 1.5
20
+ }) : /* @__PURE__ */ jsx(MailIcon, {
21
+ size: 20,
22
+ strokeWidth: 1.5
23
+ }))
24
+ }),
25
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("strong", { children: title }), /* @__PURE__ */ jsx("small", { children: description })] }),
26
+ /* @__PURE__ */ jsx("svg", {
27
+ viewBox: "0 0 24 24",
28
+ fill: "none",
29
+ stroke: "currentColor",
30
+ strokeWidth: "1.5",
31
+ "aria-hidden": "true",
32
+ children: /* @__PURE__ */ jsx("path", { d: "m9 6 6 6-6 6" })
33
+ })
34
+ ]
35
+ })
36
+ });
37
+ return /* @__PURE__ */ jsxs("li", {
38
+ className: "seams-linked-devices-modal-item seams-linked-devices-modal-item--row",
39
+ children: [
40
+ /* @__PURE__ */ jsx("span", {
41
+ className: "seams-linked-devices-modal-item-icon",
42
+ "aria-hidden": "true",
43
+ children: kind === "passkey" ? /* @__PURE__ */ jsx(TouchIcon, {
44
+ width: 20,
45
+ height: 20,
46
+ strokeWidth: 1.5
47
+ }) : /* @__PURE__ */ jsx(MailIcon, {
48
+ size: 20,
49
+ strokeWidth: 1.75
50
+ })
51
+ }),
52
+ /* @__PURE__ */ jsxs("div", {
53
+ className: "seams-linked-devices-modal-item-content",
54
+ children: [
55
+ /* @__PURE__ */ jsxs("div", {
56
+ className: "seams-linked-devices-modal-item-main",
57
+ children: [/* @__PURE__ */ jsx("span", {
58
+ className: "seams-linked-devices-modal-item-name",
59
+ children: title
60
+ }), /* @__PURE__ */ jsx("span", {
61
+ className: "seams-linked-devices-modal-standing tone-active",
62
+ children: "Active"
63
+ })]
64
+ }),
65
+ /* @__PURE__ */ jsx("div", {
66
+ className: "seams-linked-devices-modal-item-detail",
67
+ children: description
68
+ }),
69
+ children
70
+ ]
71
+ }),
72
+ action
73
+ ]
74
+ });
75
+ }
76
+ //#endregion
77
+ export { AuthenticationMethodRow };
78
+
79
+ //# sourceMappingURL=AuthenticationMethodRow.js.map