@mysten-incubation/dev-wallet 0.0.1 → 0.3.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 (182) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/LICENSE +189 -0
  3. package/dist/_virtual/{_@oxc-project_runtime@0.107.0 → _@oxc-project_runtime@0.127.0}/helpers/decorate.mjs +2 -3
  4. package/dist/adapters/base-adapter.mjs +6 -7
  5. package/dist/adapters/base-adapter.mjs.map +1 -1
  6. package/dist/adapters/browser.d.mts +4 -1
  7. package/dist/adapters/browser.mjs +4 -2
  8. package/dist/adapters/build-managed-account.mjs +8 -10
  9. package/dist/adapters/build-managed-account.mjs.map +1 -1
  10. package/dist/adapters/devstack-adapter.d.mts +111 -0
  11. package/dist/adapters/devstack-adapter.d.mts.map +1 -0
  12. package/dist/adapters/devstack-adapter.mjs +224 -0
  13. package/dist/adapters/devstack-adapter.mjs.map +1 -0
  14. package/dist/adapters/devstack-paths.d.mts +11 -0
  15. package/dist/adapters/devstack-paths.d.mts.map +1 -0
  16. package/dist/adapters/devstack-paths.mjs +11 -0
  17. package/dist/adapters/devstack-paths.mjs.map +1 -0
  18. package/dist/adapters/fork-relay.d.mts +109 -0
  19. package/dist/adapters/fork-relay.d.mts.map +1 -0
  20. package/dist/adapters/fork-relay.mjs +208 -0
  21. package/dist/adapters/fork-relay.mjs.map +1 -0
  22. package/dist/adapters/idb-store.mjs +12 -16
  23. package/dist/adapters/idb-store.mjs.map +1 -1
  24. package/dist/adapters/in-memory-adapter.mjs +4 -10
  25. package/dist/adapters/in-memory-adapter.mjs.map +1 -1
  26. package/dist/adapters/passkey-adapter.mjs +4 -12
  27. package/dist/adapters/passkey-adapter.mjs.map +1 -1
  28. package/dist/adapters/remote-cli-adapter.mjs +37 -72
  29. package/dist/adapters/remote-cli-adapter.mjs.map +1 -1
  30. package/dist/adapters/webcrypto-adapter.mjs +2 -4
  31. package/dist/adapters/webcrypto-adapter.mjs.map +1 -1
  32. package/dist/bin/cli.mjs +9 -22
  33. package/dist/bin/cli.mjs.map +1 -1
  34. package/dist/client/dev-wallet-client.mjs +13 -28
  35. package/dist/client/dev-wallet-client.mjs.map +1 -1
  36. package/dist/client/index.mjs +1 -2
  37. package/dist/client/request-handler.mjs +36 -42
  38. package/dist/client/request-handler.mjs.map +1 -1
  39. package/dist/index.mjs +1 -2
  40. package/dist/react/components.d.mts +9 -9
  41. package/dist/react/components.d.mts.map +1 -1
  42. package/dist/react/components.mjs +2 -5
  43. package/dist/react/components.mjs.map +1 -1
  44. package/dist/react/context.d.mts +3 -3
  45. package/dist/react/context.d.mts.map +1 -1
  46. package/dist/react/context.mjs +3 -8
  47. package/dist/react/context.mjs.map +1 -1
  48. package/dist/react/index.mjs +1 -2
  49. package/dist/react/useDevWallet.d.mts +3 -0
  50. package/dist/react/useDevWallet.d.mts.map +1 -1
  51. package/dist/react/useDevWallet.mjs +9 -14
  52. package/dist/react/useDevWallet.mjs.map +1 -1
  53. package/dist/server/cli-signing-middleware.mjs +7 -20
  54. package/dist/server/cli-signing-middleware.mjs.map +1 -1
  55. package/dist/server/index.mjs +1 -2
  56. package/dist/standalone/assets/{in-memory-adapter-CBF4h2KD.js → in-memory-adapter-qRkNfj9O.js} +1 -1
  57. package/dist/standalone/assets/main-DDltQnzR.js +3954 -0
  58. package/dist/standalone/assets/{webcrypto-adapter-DysAubFb.js → webcrypto-adapter-FejcrL9x.js} +1 -1
  59. package/dist/standalone/index.html +11 -12
  60. package/dist/ui/copy-controller.mjs +3 -3
  61. package/dist/ui/copy-controller.mjs.map +1 -1
  62. package/dist/ui/dev-wallet-account-selector.d.mts +3 -4
  63. package/dist/ui/dev-wallet-account-selector.d.mts.map +1 -1
  64. package/dist/ui/dev-wallet-account-selector.mjs +48 -25
  65. package/dist/ui/dev-wallet-account-selector.mjs.map +1 -1
  66. package/dist/ui/dev-wallet-accounts.d.mts +9 -4
  67. package/dist/ui/dev-wallet-accounts.d.mts.map +1 -1
  68. package/dist/ui/dev-wallet-accounts.mjs +62 -140
  69. package/dist/ui/dev-wallet-accounts.mjs.map +1 -1
  70. package/dist/ui/dev-wallet-balances.d.mts +10 -3
  71. package/dist/ui/dev-wallet-balances.d.mts.map +1 -1
  72. package/dist/ui/dev-wallet-balances.mjs +241 -43
  73. package/dist/ui/dev-wallet-balances.mjs.map +1 -1
  74. package/dist/ui/dev-wallet-connect.d.mts +3 -3
  75. package/dist/ui/dev-wallet-connect.d.mts.map +1 -1
  76. package/dist/ui/dev-wallet-connect.mjs +24 -16
  77. package/dist/ui/dev-wallet-connect.mjs.map +1 -1
  78. package/dist/ui/dev-wallet-dropdown.d.mts +3 -3
  79. package/dist/ui/dev-wallet-dropdown.d.mts.map +1 -1
  80. package/dist/ui/dev-wallet-dropdown.mjs +37 -47
  81. package/dist/ui/dev-wallet-dropdown.mjs.map +1 -1
  82. package/dist/ui/dev-wallet-fork-panel.d.mts +43 -0
  83. package/dist/ui/dev-wallet-fork-panel.d.mts.map +1 -0
  84. package/dist/ui/dev-wallet-fork-panel.mjs +500 -0
  85. package/dist/ui/dev-wallet-fork-panel.mjs.map +1 -0
  86. package/dist/ui/dev-wallet-network-badge.d.mts +3 -4
  87. package/dist/ui/dev-wallet-network-badge.d.mts.map +1 -1
  88. package/dist/ui/dev-wallet-network-badge.mjs +52 -21
  89. package/dist/ui/dev-wallet-network-badge.mjs.map +1 -1
  90. package/dist/ui/dev-wallet-new-account.d.mts +3 -4
  91. package/dist/ui/dev-wallet-new-account.d.mts.map +1 -1
  92. package/dist/ui/dev-wallet-new-account.mjs +31 -105
  93. package/dist/ui/dev-wallet-new-account.mjs.map +1 -1
  94. package/dist/ui/dev-wallet-objects.d.mts +3 -3
  95. package/dist/ui/dev-wallet-objects.d.mts.map +1 -1
  96. package/dist/ui/dev-wallet-objects.mjs +76 -39
  97. package/dist/ui/dev-wallet-objects.mjs.map +1 -1
  98. package/dist/ui/dev-wallet-panel.d.mts +24 -4
  99. package/dist/ui/dev-wallet-panel.d.mts.map +1 -1
  100. package/dist/ui/dev-wallet-panel.mjs +247 -64
  101. package/dist/ui/dev-wallet-panel.mjs.map +1 -1
  102. package/dist/ui/dev-wallet-popup.d.mts +3 -5
  103. package/dist/ui/dev-wallet-popup.d.mts.map +1 -1
  104. package/dist/ui/dev-wallet-popup.mjs +19 -15
  105. package/dist/ui/dev-wallet-popup.mjs.map +1 -1
  106. package/dist/ui/dev-wallet-settings.d.mts +3 -4
  107. package/dist/ui/dev-wallet-settings.d.mts.map +1 -1
  108. package/dist/ui/dev-wallet-settings.mjs +149 -97
  109. package/dist/ui/dev-wallet-settings.mjs.map +1 -1
  110. package/dist/ui/dev-wallet-signing-modal.d.mts +11 -4
  111. package/dist/ui/dev-wallet-signing-modal.d.mts.map +1 -1
  112. package/dist/ui/dev-wallet-signing-modal.mjs +46 -18
  113. package/dist/ui/dev-wallet-signing-modal.mjs.map +1 -1
  114. package/dist/ui/dev-wallet-signing.d.mts +9 -3
  115. package/dist/ui/dev-wallet-signing.d.mts.map +1 -1
  116. package/dist/ui/dev-wallet-signing.mjs +119 -130
  117. package/dist/ui/dev-wallet-signing.mjs.map +1 -1
  118. package/dist/ui/dev-wallet-standalone.d.mts +8 -3
  119. package/dist/ui/dev-wallet-standalone.d.mts.map +1 -1
  120. package/dist/ui/dev-wallet-standalone.mjs +303 -38
  121. package/dist/ui/dev-wallet-standalone.mjs.map +1 -1
  122. package/dist/ui/dev-wallet-tab-bar.d.mts +13 -5
  123. package/dist/ui/dev-wallet-tab-bar.d.mts.map +1 -1
  124. package/dist/ui/dev-wallet-tab-bar.mjs +143 -82
  125. package/dist/ui/dev-wallet-tab-bar.mjs.map +1 -1
  126. package/dist/ui/index.d.mts +3 -2
  127. package/dist/ui/index.mjs +2 -2
  128. package/dist/ui/mount.d.mts +14 -1
  129. package/dist/ui/mount.d.mts.map +1 -1
  130. package/dist/ui/mount.mjs +5 -2
  131. package/dist/ui/mount.mjs.map +1 -1
  132. package/dist/ui/styles.mjs +428 -66
  133. package/dist/ui/styles.mjs.map +1 -1
  134. package/dist/ui/transaction-analyzer.mjs +19 -30
  135. package/dist/ui/transaction-analyzer.mjs.map +1 -1
  136. package/dist/ui/utils.d.mts +59 -0
  137. package/dist/ui/utils.d.mts.map +1 -0
  138. package/dist/ui/utils.mjs +42 -15
  139. package/dist/ui/utils.mjs.map +1 -1
  140. package/dist/ui/wallet-controller.mjs +89 -20
  141. package/dist/ui/wallet-controller.mjs.map +1 -1
  142. package/dist/wallet/constants.d.mts +9 -0
  143. package/dist/wallet/constants.d.mts.map +1 -0
  144. package/dist/wallet/constants.mjs +1 -1
  145. package/dist/wallet/dev-wallet.mjs +42 -99
  146. package/dist/wallet/dev-wallet.mjs.map +1 -1
  147. package/dist/wallet/initializer.d.mts +3 -0
  148. package/dist/wallet/initializer.d.mts.map +1 -1
  149. package/dist/wallet/initializer.mjs +9 -14
  150. package/dist/wallet/initializer.mjs.map +1 -1
  151. package/dist/wallet/signing.mjs +8 -21
  152. package/dist/wallet/signing.mjs.map +1 -1
  153. package/package.json +8 -6
  154. package/src/adapters/browser.ts +21 -0
  155. package/src/adapters/devstack-adapter.ts +342 -0
  156. package/src/adapters/devstack-paths.ts +15 -0
  157. package/src/adapters/fork-relay.ts +321 -0
  158. package/src/app/index.html +10 -11
  159. package/src/react/useDevWallet.ts +5 -1
  160. package/src/ui/dev-wallet-account-selector.ts +44 -17
  161. package/src/ui/dev-wallet-accounts.ts +87 -124
  162. package/src/ui/dev-wallet-balances.ts +248 -27
  163. package/src/ui/dev-wallet-connect.ts +19 -8
  164. package/src/ui/dev-wallet-dropdown.ts +7 -5
  165. package/src/ui/dev-wallet-fork-panel.ts +591 -0
  166. package/src/ui/dev-wallet-network-badge.ts +49 -10
  167. package/src/ui/dev-wallet-new-account.ts +21 -62
  168. package/src/ui/dev-wallet-objects.ts +59 -19
  169. package/src/ui/dev-wallet-panel.ts +261 -42
  170. package/src/ui/dev-wallet-popup.ts +12 -6
  171. package/src/ui/dev-wallet-settings.ts +159 -94
  172. package/src/ui/dev-wallet-signing-modal.ts +47 -7
  173. package/src/ui/dev-wallet-signing.ts +124 -97
  174. package/src/ui/dev-wallet-standalone.ts +310 -22
  175. package/src/ui/dev-wallet-tab-bar.ts +132 -70
  176. package/src/ui/index.ts +3 -0
  177. package/src/ui/mount.ts +23 -1
  178. package/src/ui/styles.ts +434 -58
  179. package/src/ui/utils.ts +66 -0
  180. package/src/ui/wallet-controller.ts +103 -5
  181. package/src/wallet/initializer.ts +7 -1
  182. package/dist/standalone/assets/main-VE4olb-Q.js +0 -2841
@@ -1 +1 @@
1
- import{S as g,a as d,p as u,B as m,b as h}from"./main-VE4olb-Q.js";function S(c){const e=new Uint8Array(c),t=e.slice(1,33),r=(e.slice(33,65)[31]&1)===0?2:3,s=new Uint8Array(d.SIZE);return s[0]=r,s.set(t,1),s}var y=class p extends g{#e;static async generate({extractable:e=!1}={}){const t=await globalThis.crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},e,["sign","verify"]),r=await globalThis.crypto.subtle.exportKey("raw",t.publicKey);return new p(t.privateKey,S(new Uint8Array(r)))}static import(e){return new p(e.privateKey,e.publicKey)}getKeyScheme(){return"Secp256r1"}constructor(e,t){super(),this.privateKey=e,this.#e=new d(t)}export(){const e={privateKey:this.privateKey,publicKey:this.#e.toRawBytes()};return Object.defineProperty(e,"toJSON",{enumerable:!1,value:()=>{throw new Error("The exported keypair must not be serialized. It must be stored in IndexedDB directly.")}}),e}getPublicKey(){return this.#e}async sign(e){const t=await globalThis.crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},this.privateKey,e),r=u.Signature.fromBytes(new Uint8Array(t));return(r.hasHighS()?new u.Signature(r.r,u.Point.Fn.neg(r.s)):r).toBytes("compact")}};class A{#e;#t;#r=null;constructor(e,t){this.#e=e,this.#t=t}get(e){return this.#s("readonly",t=>t.get(e))}async set(e,t){await this.#s("readwrite",r=>r.put(t,e))}del(e){return this.#s("readwrite",t=>t.delete(e))}entries(){return this.#n().then(e=>new Promise((t,r)=>{const s=e.transaction(this.#t,"readonly"),o=s.objectStore(this.#t),n=[],a=o.openCursor();a.onsuccess=()=>{const i=a.result;i&&(n.push([i.key,i.value]),i.continue())},s.oncomplete=()=>t(n),s.onerror=()=>r(s.error)}))}#n(){return this.#r||(this.#r=new Promise((e,t)=>{const r=indexedDB.open(this.#e);r.onupgradeneeded=()=>{r.result.objectStoreNames.contains(this.#t)||r.result.createObjectStore(this.#t)},r.onsuccess=()=>e(r.result),r.onerror=()=>{this.#r=null,t(r.error)}})),this.#r}#s(e,t){return this.#n().then(r=>new Promise((s,o)=>{const n=r.transaction(this.#t,e),a=t(n.objectStore(this.#t));n.oncomplete=()=>s(a.result),n.onerror=()=>o(n.error),n.onabort=()=>o(n.error)}))}}const f="dev-wallet-webcrypto",K="accounts",l="__account_meta__";class x extends m{constructor(e){super(),this.id="webcrypto",this.name="WebCrypto Signer",this.#e=new A(e?.dbName??f,e?.storeName??K)}#e;async initialize(){const e=await this.#e.entries(),t=await this.#e.get(l)??[],r=[];for(const[s,o]of e){if(s===l)continue;const n=s;try{const a=o,i=y.import(a),b=t.find(w=>w.address===n);r.push(h(i,n,b?.label??"Account"))}catch(a){console.warn(`[dev-wallet] Failed to load account ${n}, skipping:`,a)}}this.setInitialAccounts(r)}async createAccount(e){const t=await y.generate(),r=t.getPublicKey().toSuiAddress(),s=e?.label??this.getDefaultLabel(),o=h(t,r,s);return await this.#e.set(r,t.export()),this.addAccount(o),await this.#t(),o}async renameAccount(e,t){return this._performRename(e,t)?(await this.#t(),!0):!1}async removeAccount(e){return this.removeAccountByAddress(e)?(await this.#e.del(e),await this.#t(),!0):!1}async#t(){const e=this.getAccounts().map(t=>({address:t.address,label:t.label}));await this.#e.set(l,e)}}export{x as WebCryptoSignerAdapter};
1
+ import{S as g,a as d,p as u,B as m,b as h}from"./main-DDltQnzR.js";function S(c){const e=new Uint8Array(c),t=e.slice(1,33),r=(e.slice(33,65)[31]&1)===0?2:3,s=new Uint8Array(d.SIZE);return s[0]=r,s.set(t,1),s}var y=class p extends g{#e;static async generate({extractable:e=!1}={}){const t=await globalThis.crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},e,["sign","verify"]),r=await globalThis.crypto.subtle.exportKey("raw",t.publicKey);return new p(t.privateKey,S(new Uint8Array(r)))}static import(e){return new p(e.privateKey,e.publicKey)}getKeyScheme(){return"Secp256r1"}constructor(e,t){super(),this.privateKey=e,this.#e=new d(t)}export(){const e={privateKey:this.privateKey,publicKey:this.#e.toRawBytes()};return Object.defineProperty(e,"toJSON",{enumerable:!1,value:()=>{throw new Error("The exported keypair must not be serialized. It must be stored in IndexedDB directly.")}}),e}getPublicKey(){return this.#e}async sign(e){const t=await globalThis.crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},this.privateKey,e),r=u.Signature.fromBytes(new Uint8Array(t));return(r.hasHighS()?new u.Signature(r.r,u.Point.Fn.neg(r.s)):r).toBytes("compact")}};class A{#e;#t;#r=null;constructor(e,t){this.#e=e,this.#t=t}get(e){return this.#s("readonly",t=>t.get(e))}async set(e,t){await this.#s("readwrite",r=>r.put(t,e))}del(e){return this.#s("readwrite",t=>t.delete(e))}entries(){return this.#n().then(e=>new Promise((t,r)=>{const s=e.transaction(this.#t,"readonly"),o=s.objectStore(this.#t),n=[],a=o.openCursor();a.onsuccess=()=>{const i=a.result;i&&(n.push([i.key,i.value]),i.continue())},s.oncomplete=()=>t(n),s.onerror=()=>r(s.error)}))}#n(){return this.#r||(this.#r=new Promise((e,t)=>{const r=indexedDB.open(this.#e);r.onupgradeneeded=()=>{r.result.objectStoreNames.contains(this.#t)||r.result.createObjectStore(this.#t)},r.onsuccess=()=>e(r.result),r.onerror=()=>{this.#r=null,t(r.error)}})),this.#r}#s(e,t){return this.#n().then(r=>new Promise((s,o)=>{const n=r.transaction(this.#t,e),a=t(n.objectStore(this.#t));n.oncomplete=()=>s(a.result),n.onerror=()=>o(n.error),n.onabort=()=>o(n.error)}))}}const f="dev-wallet-webcrypto",K="accounts",l="__account_meta__";class x extends m{constructor(e){super(),this.id="webcrypto",this.name="WebCrypto Signer",this.#e=new A(e?.dbName??f,e?.storeName??K)}#e;async initialize(){const e=await this.#e.entries(),t=await this.#e.get(l)??[],r=[];for(const[s,o]of e){if(s===l)continue;const n=s;try{const a=o,i=y.import(a),b=t.find(w=>w.address===n);r.push(h(i,n,b?.label??"Account"))}catch(a){console.warn(`[dev-wallet] Failed to load account ${n}, skipping:`,a)}}this.setInitialAccounts(r)}async createAccount(e){const t=await y.generate(),r=t.getPublicKey().toSuiAddress(),s=e?.label??this.getDefaultLabel(),o=h(t,r,s);return await this.#e.set(r,t.export()),this.addAccount(o),await this.#t(),o}async renameAccount(e,t){return this._performRename(e,t)?(await this.#t(),!0):!1}async removeAccount(e){return this.removeAccountByAddress(e)?(await this.#e.del(e),await this.#t(),!0):!1}async#t(){const e=this.getAccounts().map(t=>({address:t.address,label:t.label}));await this.#e.set(l,e)}}export{x as WebCryptoSignerAdapter};
@@ -4,6 +4,12 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Dev Wallet</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link
10
+ href="https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap"
11
+ rel="stylesheet"
12
+ />
7
13
  <style>
8
14
  * {
9
15
  margin: 0;
@@ -12,33 +18,26 @@
12
18
  }
13
19
  body {
14
20
  font-family:
21
+ 'Geist',
15
22
  ui-sans-serif,
16
23
  system-ui,
17
24
  -apple-system,
18
25
  BlinkMacSystemFont,
19
26
  'Segoe UI',
20
- Roboto,
21
- 'Helvetica Neue',
22
- Arial,
23
27
  sans-serif;
24
- background: oklch(0.175 0.028 283);
25
- color: oklch(0.91 0 0);
28
+ background: #05080f;
29
+ color: #e6eefb;
26
30
  min-height: 100vh;
27
31
  }
28
32
  #app {
29
- display: flex;
30
- flex-direction: column;
31
- align-items: center;
32
- justify-content: center;
33
33
  min-height: 100vh;
34
- padding: 20px;
35
34
  }
36
35
  .loading {
37
- color: oklch(0.62 0.04 280);
36
+ color: #94a6c2;
38
37
  font-size: 14px;
39
38
  }
40
39
  </style>
41
- <script type="module" crossorigin src="/assets/main-VE4olb-Q.js"></script>
40
+ <script type="module" crossorigin src="/assets/main-DDltQnzR.js"></script>
42
41
  </head>
43
42
  <body>
44
43
  <div id="app">
@@ -1,12 +1,12 @@
1
1
  import { copyToClipboard } from "./utils.mjs";
2
-
3
2
  //#region src/ui/copy-controller.ts
4
3
  var CopyController = class {
5
- #timeout = null;
4
+ #timeout;
6
5
  #duration;
7
6
  constructor(host, duration = 1500) {
8
7
  this.copied = false;
9
8
  this.copiedValue = null;
9
+ this.#timeout = null;
10
10
  this.#duration = duration;
11
11
  this.host = host;
12
12
  host.addController(this);
@@ -37,7 +37,7 @@ var CopyController = class {
37
37
  return this.copied && this.copiedValue === text;
38
38
  }
39
39
  };
40
-
41
40
  //#endregion
42
41
  export { CopyController };
42
+
43
43
  //# sourceMappingURL=copy-controller.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-controller.mjs","names":["#duration","#timeout"],"sources":["../../src/ui/copy-controller.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\n\nimport { copyToClipboard } from './utils.js';\n\nexport class CopyController implements ReactiveController {\n\thost: ReactiveControllerHost;\n\tcopied = false;\n\tcopiedValue: string | null = null;\n\t#timeout: ReturnType<typeof setTimeout> | null = null;\n\t#duration: number;\n\n\tconstructor(host: ReactiveControllerHost, duration = 1500) {\n\t\tthis.#duration = duration;\n\t\tthis.host = host;\n\t\thost.addController(this);\n\t}\n\n\thostConnected(): void {}\n\n\thostDisconnected(): void {\n\t\tif (this.#timeout) {\n\t\t\tclearTimeout(this.#timeout);\n\t\t\tthis.#timeout = null;\n\t\t}\n\t}\n\n\tasync copy(text: string): Promise<boolean> {\n\t\tconst ok = await copyToClipboard(text);\n\t\tif (ok) {\n\t\t\tthis.copied = true;\n\t\t\tthis.copiedValue = text;\n\t\t\tif (this.#timeout) clearTimeout(this.#timeout);\n\t\t\tthis.#timeout = setTimeout(() => {\n\t\t\t\tthis.copied = false;\n\t\t\t\tthis.copiedValue = null;\n\t\t\t\tthis.host.requestUpdate();\n\t\t\t}, this.#duration);\n\t\t\tthis.host.requestUpdate();\n\t\t}\n\t\treturn ok;\n\t}\n\n\tisCopied(text: string): boolean {\n\t\treturn this.copied && this.copiedValue === text;\n\t}\n}\n"],"mappings":";;;AAOA,IAAa,iBAAb,MAA0D;CAIzD,WAAiD;CACjD;CAEA,YAAY,MAA8B,WAAW,MAAM;gBALlD;qBACoB;AAK5B,QAAKA,WAAY;AACjB,OAAK,OAAO;AACZ,OAAK,cAAc,KAAK;;CAGzB,gBAAsB;CAEtB,mBAAyB;AACxB,MAAI,MAAKC,SAAU;AAClB,gBAAa,MAAKA,QAAS;AAC3B,SAAKA,UAAW;;;CAIlB,MAAM,KAAK,MAAgC;EAC1C,MAAM,KAAK,MAAM,gBAAgB,KAAK;AACtC,MAAI,IAAI;AACP,QAAK,SAAS;AACd,QAAK,cAAc;AACnB,OAAI,MAAKA,QAAU,cAAa,MAAKA,QAAS;AAC9C,SAAKA,UAAW,iBAAiB;AAChC,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,KAAK,eAAe;MACvB,MAAKD,SAAU;AAClB,QAAK,KAAK,eAAe;;AAE1B,SAAO;;CAGR,SAAS,MAAuB;AAC/B,SAAO,KAAK,UAAU,KAAK,gBAAgB"}
1
+ {"version":3,"file":"copy-controller.mjs","names":["#duration","#timeout"],"sources":["../../src/ui/copy-controller.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\n\nimport { copyToClipboard } from './utils.js';\n\nexport class CopyController implements ReactiveController {\n\thost: ReactiveControllerHost;\n\tcopied = false;\n\tcopiedValue: string | null = null;\n\t#timeout: ReturnType<typeof setTimeout> | null = null;\n\t#duration: number;\n\n\tconstructor(host: ReactiveControllerHost, duration = 1500) {\n\t\tthis.#duration = duration;\n\t\tthis.host = host;\n\t\thost.addController(this);\n\t}\n\n\thostConnected(): void {}\n\n\thostDisconnected(): void {\n\t\tif (this.#timeout) {\n\t\t\tclearTimeout(this.#timeout);\n\t\t\tthis.#timeout = null;\n\t\t}\n\t}\n\n\tasync copy(text: string): Promise<boolean> {\n\t\tconst ok = await copyToClipboard(text);\n\t\tif (ok) {\n\t\t\tthis.copied = true;\n\t\t\tthis.copiedValue = text;\n\t\t\tif (this.#timeout) clearTimeout(this.#timeout);\n\t\t\tthis.#timeout = setTimeout(() => {\n\t\t\t\tthis.copied = false;\n\t\t\t\tthis.copiedValue = null;\n\t\t\t\tthis.host.requestUpdate();\n\t\t\t}, this.#duration);\n\t\t\tthis.host.requestUpdate();\n\t\t}\n\t\treturn ok;\n\t}\n\n\tisCopied(text: string): boolean {\n\t\treturn this.copied && this.copiedValue === text;\n\t}\n}\n"],"mappings":";;AAOA,IAAa,iBAAb,MAA0D;CAIzD;CACA;CAEA,YAAY,MAA8B,WAAW,MAAM;gBALlD;qBACoB;kBACoB;AAIhD,QAAA,WAAiB;AACjB,OAAK,OAAO;AACZ,OAAK,cAAc,KAAK;;CAGzB,gBAAsB;CAEtB,mBAAyB;AACxB,MAAI,MAAA,SAAe;AAClB,gBAAa,MAAA,QAAc;AAC3B,SAAA,UAAgB;;;CAIlB,MAAM,KAAK,MAAgC;EAC1C,MAAM,KAAK,MAAM,gBAAgB,KAAK;AACtC,MAAI,IAAI;AACP,QAAK,SAAS;AACd,QAAK,cAAc;AACnB,OAAI,MAAA,QAAe,cAAa,MAAA,QAAc;AAC9C,SAAA,UAAgB,iBAAiB;AAChC,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,KAAK,eAAe;MACvB,MAAA,SAAe;AAClB,QAAK,KAAK,eAAe;;AAE1B,SAAO;;CAGR,SAAS,MAAuB;AAC/B,SAAO,KAAK,UAAU,KAAK,gBAAgB"}
@@ -1,18 +1,17 @@
1
1
  import { SignerAdapter } from "../types.mjs";
2
- import "./dev-wallet-dropdown.mjs";
3
2
  import { ReadonlyWalletAccount } from "@mysten/wallet-standard";
4
- import * as lit26 from "lit";
3
+ import * as _$lit from "lit";
5
4
  import { LitElement } from "lit";
6
5
 
7
6
  //#region src/ui/dev-wallet-account-selector.d.ts
8
7
  declare class DevWalletAccountSelector extends LitElement {
9
8
  #private;
10
- static styles: (lit26.CSSResult | lit26.CSSResult[])[];
9
+ static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
11
10
  accounts: ReadonlyWalletAccount[];
12
11
  adapters: SignerAdapter[];
13
12
  activeAddress: string;
14
13
  private _open;
15
- render(): lit26.TemplateResult<1>;
14
+ render(): _$lit.TemplateResult<1>;
16
15
  }
17
16
  declare global {
18
17
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-account-selector.d.mts","names":[],"sources":["../../src/ui/dev-wallet-account-selector.ts"],"mappings":";;;;;;;cAsBa,wBAAA,SAAiC,UAAA;EAAA;SAC7B,MAAA,GADqB,KAAA,CACf,SAAA,GAAA,KAAA,CAAA,SAAA;EAiJtB,QAAA,EAAU,qBAAA;EAGV,QAAA,EAAU,aAAA;EAGV,aAAA;EAAA,QAGQ,KAAA;EAIC,MAAA,CAAA,GAVc,KAAA,CAUR,cAAA;AAAA;AAAA,QAiGR,MAAA;EAAA,UACG,qBAAA;IACT,6BAAA,EAA+B,wBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"dev-wallet-account-selector.d.mts","names":[],"sources":["../../src/ui/dev-wallet-account-selector.ts"],"mappings":";;;;;;cAsBa,wBAAA,SAAiC,UAAA;EAAA;SAC7B,MAAA,GADqB,KAAA,CACf,SAAA,GAAA,KAAA,CAAA,SAAA;EAsKtB,QAAA,EAAU,qBAAA;EAGV,QAAA,EAAU,aAAA;EAGV,aAAA;EAAA,QAGQ,KAAA;EAIC,MAAA,CAAA,GAVc,KAAA,CAUR,cAAA;AAAA;AAAA,QAuGR,MAAA;EAAA,UACG,qBAAA;IACT,6BAAA,EAA+B,wBAAA;EAAA;AAAA"}
@@ -1,11 +1,10 @@
1
1
  import { dropdownItemStyles, sharedStyles } from "./styles.mjs";
2
2
  import { emitEvent, findAdapterForAddress, formatAddress } from "./utils.mjs";
3
3
  import { CopyController } from "./copy-controller.mjs";
4
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.107.0/helpers/decorate.mjs";
4
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.mjs";
5
5
  import "./dev-wallet-dropdown.mjs";
6
6
  import { LitElement, css, html, nothing } from "lit";
7
7
  import { customElement, property, state } from "lit/decorators.js";
8
-
9
8
  //#region src/ui/dev-wallet-account-selector.ts
10
9
  /** Short display names for adapter badges. */
11
10
  const ADAPTER_SHORT_NAMES = {
@@ -14,13 +13,14 @@ const ADAPTER_SHORT_NAMES = {
14
13
  "In-Memory Signer": "Memory",
15
14
  "Passkey Signer": "Passkey"
16
15
  };
17
- let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitElement {
16
+ let DevWalletAccountSelector = class DevWalletAccountSelector extends LitElement {
18
17
  constructor(..._args) {
19
18
  super(..._args);
20
19
  this.accounts = [];
21
20
  this.adapters = [];
22
21
  this.activeAddress = "";
23
22
  this._open = false;
23
+ this.#copy = new CopyController(this);
24
24
  }
25
25
  static {
26
26
  this.styles = [
@@ -34,17 +34,22 @@ let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitEleme
34
34
  .active-account {
35
35
  display: flex;
36
36
  align-items: center;
37
- gap: 8px;
37
+ gap: 10px;
38
38
  width: 100%;
39
- padding: 8px 10px;
40
- border-radius: var(--dev-wallet-radius-md);
41
- background: var(--dev-wallet-secondary);
39
+ min-height: 54px;
40
+ padding: 10px 12px;
41
+ border-radius: var(--dev-wallet-radius-lg);
42
+ border: 1px solid var(--dev-wallet-border);
43
+ background: var(--dev-wallet-surface);
42
44
  cursor: pointer;
43
- transition: background 0.15s;
45
+ transition:
46
+ background 120ms,
47
+ border-color 120ms;
44
48
  }
45
49
 
46
50
  .active-account:hover {
47
- background: var(--dev-wallet-border);
51
+ background: var(--dev-wallet-bg-hover);
52
+ border-color: var(--dev-wallet-border-strong);
48
53
  }
49
54
 
50
55
  .avatar {
@@ -75,26 +80,36 @@ let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitEleme
75
80
  text-overflow: ellipsis;
76
81
  }
77
82
 
83
+ .account-label-row {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 6px;
87
+ min-width: 0;
88
+ }
89
+
78
90
  .account-address {
79
91
  font-size: 11px;
80
92
  font-family: var(--dev-wallet-font-mono);
81
- color: var(--dev-wallet-muted-foreground);
93
+ color: var(--dev-wallet-text-3);
82
94
  }
83
95
 
84
96
  .copy-btn {
85
- width: 22px;
86
- height: 22px;
97
+ width: 36px;
98
+ height: 54px;
87
99
  display: flex;
88
100
  align-items: center;
89
101
  justify-content: center;
90
- border-radius: var(--dev-wallet-radius-xs);
102
+ border-radius: var(--dev-wallet-radius);
103
+ border: 1px solid var(--dev-wallet-border);
104
+ background: transparent;
91
105
  color: var(--dev-wallet-muted-foreground);
92
106
  flex-shrink: 0;
93
107
  font-size: 12px;
94
108
  }
95
109
 
96
110
  .copy-btn:hover {
97
- background: var(--dev-wallet-border);
111
+ background: var(--dev-wallet-bg-hover);
112
+ border-color: var(--dev-wallet-border-strong);
98
113
  color: var(--dev-wallet-foreground);
99
114
  }
100
115
 
@@ -110,7 +125,8 @@ let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitEleme
110
125
  }
111
126
 
112
127
  .dropdown-item[aria-selected='true'] {
113
- background: color-mix(in oklab, var(--dev-wallet-primary) 10%, transparent);
128
+ background: var(--dev-wallet-accent-fade);
129
+ border-color: var(--dev-wallet-border-strong);
114
130
  }
115
131
 
116
132
  .dropdown-item .avatar {
@@ -138,11 +154,16 @@ let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitEleme
138
154
  }
139
155
 
140
156
  .adapter-badge {
157
+ height: 16px;
158
+ display: inline-flex;
159
+ align-items: center;
160
+ padding: 0 5px;
161
+ border-radius: 999px;
162
+ border: 1px solid var(--dev-wallet-border);
163
+ background: var(--dev-wallet-bg-3);
164
+ color: var(--dev-wallet-text-3);
165
+ font-family: var(--dev-wallet-font-mono);
141
166
  font-size: 9px;
142
- padding: 1px 4px;
143
- border-radius: var(--dev-wallet-radius-2xs);
144
- background: var(--dev-wallet-secondary);
145
- color: var(--dev-wallet-muted-foreground);
146
167
  white-space: nowrap;
147
168
  }
148
169
 
@@ -167,14 +188,13 @@ let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitEleme
167
188
  `
168
189
  ];
169
190
  }
170
- #copy = new CopyController(this);
191
+ #copy;
171
192
  render() {
172
193
  const active = this.accounts.find((a) => a.address === this.activeAddress);
173
- if (!active) {
174
- return html`<div class="empty-state" part="empty-state">No account selected</div>`;
175
- }
194
+ if (!active) return html`<div class="empty-state" part="empty-state">No account selected</div>`;
176
195
  const label = this.#getLabel(active);
177
196
  const initial = (label[0] ?? "?").toUpperCase();
197
+ const activeAdapterName = this.#getAdapterName(active.address);
178
198
  return html`
179
199
  <div class="selector-row">
180
200
  <dev-wallet-dropdown
@@ -193,7 +213,10 @@ let DevWalletAccountSelector = class DevWalletAccountSelector$1 extends LitEleme
193
213
  >
194
214
  <span class="avatar">${initial}</span>
195
215
  <div class="account-info">
196
- <div class="account-label">${label}</div>
216
+ <div class="account-label-row">
217
+ <div class="account-label">${label}</div>
218
+ ${activeAdapterName ? html`<span class="adapter-badge">${activeAdapterName}</span>` : nothing}
219
+ </div>
197
220
  <div class="account-address">${formatAddress(active.address)}</div>
198
221
  </div>
199
222
  <svg
@@ -262,7 +285,7 @@ __decorate([property({ attribute: false })], DevWalletAccountSelector.prototype,
262
285
  __decorate([property({ type: String })], DevWalletAccountSelector.prototype, "activeAddress", void 0);
263
286
  __decorate([state()], DevWalletAccountSelector.prototype, "_open", void 0);
264
287
  DevWalletAccountSelector = __decorate([customElement("dev-wallet-account-selector")], DevWalletAccountSelector);
265
-
266
288
  //#endregion
267
289
  export { DevWalletAccountSelector };
290
+
268
291
  //# sourceMappingURL=dev-wallet-account-selector.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-account-selector.mjs","names":["DevWalletAccountSelector","#getLabel","#getAdapterName","#select","#copy"],"sources":["../../src/ui/dev-wallet-account-selector.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReadonlyWalletAccount } from '@mysten/wallet-standard';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { SignerAdapter } from '../types.js';\nimport { dropdownItemStyles, sharedStyles } from './styles.js';\nimport { CopyController } from './copy-controller.js';\nimport { emitEvent, findAdapterForAddress, formatAddress } from './utils.js';\nimport './dev-wallet-dropdown.js';\n\n/** Short display names for adapter badges. */\nconst ADAPTER_SHORT_NAMES: Record<string, string> = {\n\t'WebCrypto Signer': 'WebCrypto',\n\t'Remote CLI Signer': 'CLI',\n\t'In-Memory Signer': 'Memory',\n\t'Passkey Signer': 'Passkey',\n};\n\n@customElement('dev-wallet-account-selector')\nexport class DevWalletAccountSelector extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tdropdownItemStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t.active-account {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 8px;\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-md);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition: background 0.15s;\n\t\t\t}\n\n\t\t\t.active-account:hover {\n\t\t\t\tbackground: var(--dev-wallet-border);\n\t\t\t}\n\n\t\t\t.avatar {\n\t\t\t\twidth: 28px;\n\t\t\t\theight: 28px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-semibold);\n\t\t\t\tcolor: var(--dev-wallet-primary-foreground);\n\t\t\t\tbackground: var(--dev-wallet-primary);\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.account-info {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.account-label {\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-semibold);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t.account-address {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t}\n\n\t\t\t.copy-btn {\n\t\t\t\twidth: 22px;\n\t\t\t\theight: 22px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tfont-size: 12px;\n\t\t\t}\n\n\t\t\t.copy-btn:hover {\n\t\t\t\tbackground: var(--dev-wallet-border);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.copy-btn.copied {\n\t\t\t\tcolor: var(--dev-wallet-positive);\n\t\t\t}\n\n\t\t\t.chevron {\n\t\t\t\twidth: 14px;\n\t\t\t\theight: 14px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.dropdown-item[aria-selected='true'] {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 10%, transparent);\n\t\t\t}\n\n\t\t\t.dropdown-item .avatar {\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tfont-size: 10px;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-label {\n\t\t\t\tfont-size: 12px;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-address {\n\t\t\t\tfont-size: 10px;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-info {\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-label {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t\t.adapter-badge {\n\t\t\t\tfont-size: 9px;\n\t\t\t\tpadding: 1px 4px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t\t.selector-row {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.selector-wrapper {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t\t--dropdown-max-height: 240px;\n\t\t\t}\n\n\t\t\t.empty-state {\n\t\t\t\tpadding: 16px;\n\t\t\t\ttext-align: center;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\taccounts: ReadonlyWalletAccount[] = [];\n\n\t@property({ attribute: false })\n\tadapters: SignerAdapter[] = [];\n\n\t@property({ type: String })\n\tactiveAddress = '';\n\n\t@state()\n\tprivate _open = false;\n\n\t#copy = new CopyController(this);\n\n\toverride render() {\n\t\tconst active = this.accounts.find((a) => a.address === this.activeAddress);\n\n\t\tif (!active) {\n\t\t\treturn html`<div class=\"empty-state\" part=\"empty-state\">No account selected</div>`;\n\t\t}\n\n\t\tconst label = this.#getLabel(active);\n\t\tconst initial = (label[0] ?? '?').toUpperCase();\n\n\t\treturn html`\n\t\t\t<div class=\"selector-row\">\n\t\t\t\t<dev-wallet-dropdown\n\t\t\t\t\tfull-width\n\t\t\t\t\tclass=\"selector-wrapper\"\n\t\t\t\t\t.open=${this._open}\n\t\t\t\t\t@close=${() => (this._open = false)}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\tclass=\"active-account\"\n\t\t\t\t\t\tpart=\"trigger\"\n\t\t\t\t\t\taria-expanded=${this._open}\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t@click=${() => (this._open = !this._open)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"avatar\">${initial}</span>\n\t\t\t\t\t\t<div class=\"account-info\">\n\t\t\t\t\t\t\t<div class=\"account-label\">${label}</div>\n\t\t\t\t\t\t\t<div class=\"account-address\">${formatAddress(active.address)}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclass=\"chevron\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M6 9l6 6 6-6\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div slot=\"popover\" role=\"listbox\" aria-label=\"Select account\">\n\t\t\t\t\t\t${this.accounts.map((account) => {\n\t\t\t\t\t\t\tconst accountLabel = this.#getLabel(account);\n\t\t\t\t\t\t\tconst accountInitial = (accountLabel[0] ?? '?').toUpperCase();\n\t\t\t\t\t\t\tconst adapterName = this.#getAdapterName(account.address);\n\n\t\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"dropdown-item\"\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\taria-selected=${account.address === this.activeAddress}\n\t\t\t\t\t\t\t\t\t@click=${() => this.#select(account)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span class=\"avatar\">${accountInitial}</span>\n\t\t\t\t\t\t\t\t\t<div class=\"account-info\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"account-label\">${accountLabel}</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"account-address\">${formatAddress(account.address)}</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t${adapterName ? html`<span class=\"adapter-badge\">${adapterName}</span>` : nothing}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</dev-wallet-dropdown>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"copy-btn ${this.#copy.isCopied(active.address) ? 'copied' : ''}\"\n\t\t\t\t\tpart=\"copy-button\"\n\t\t\t\t\ttitle=\"Copy address\"\n\t\t\t\t\taria-label=\"Copy address\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tthis.#copy.copy(active.address);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${this.#copy.isCopied(active.address) ? '\\u2713' : '\\u2398'}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#getLabel(account: ReadonlyWalletAccount): string {\n\t\treturn account.label ?? `Account ${account.address.slice(0, 8)}`;\n\t}\n\n\t#getAdapterName(address: string): string | null {\n\t\tconst adapter = findAdapterForAddress(this.adapters, address);\n\t\tif (!adapter) return null;\n\t\treturn ADAPTER_SHORT_NAMES[adapter.name] ?? adapter.name;\n\t}\n\n\t#select(account: ReadonlyWalletAccount) {\n\t\tthis._open = false;\n\t\temitEvent(this, 'account-selected', { account });\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-account-selector': DevWalletAccountSelector;\n\t}\n}\n"],"mappings":";;;;;;;;;;AAcA,MAAM,sBAA8C;CACnD,oBAAoB;CACpB,qBAAqB;CACrB,oBAAoB;CACpB,kBAAkB;CAClB;AAGM,qCAAMA,mCAAiC,WAAW;;;kBAkJpB,EAAE;kBAGV,EAAE;uBAGd;eAGA;;;gBA1JS;GACxB;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2IH;;CAcD,QAAQ,IAAI,eAAe,KAAK;CAEhC,AAAS,SAAS;EACjB,MAAM,SAAS,KAAK,SAAS,MAAM,MAAM,EAAE,YAAY,KAAK,cAAc;AAE1E,MAAI,CAAC,QAAQ;AACZ,UAAO,IAAI;;EAGZ,MAAM,QAAQ,MAAKC,SAAU,OAAO;EACpC,MAAM,WAAW,MAAM,MAAM,KAAK,aAAa;AAE/C,SAAO,IAAI;;;;;aAKA,KAAK,MAAM;oBACH,KAAK,QAAQ,MAAO;;;;;;sBAMnB,KAAK,MAAM;;qBAEX,KAAK,QAAQ,CAAC,KAAK,MAAO;;6BAEnB,QAAQ;;oCAED,MAAM;sCACJ,cAAc,OAAO,QAAQ,CAAC;;;;;;;;;;;;;QAa5D,KAAK,SAAS,KAAK,YAAY;GAChC,MAAM,eAAe,MAAKA,SAAU,QAAQ;GAC5C,MAAM,kBAAkB,aAAa,MAAM,KAAK,aAAa;GAC7D,MAAM,cAAc,MAAKC,eAAgB,QAAQ,QAAQ;AAEzD,UAAO,IAAI;;;;yBAIO,QAAQ,YAAY,KAAK,cAAc;wBACxC,MAAKC,OAAQ,QAAQ,CAAC;;gCAEd,eAAe;;uCAER,aAAa;yCACX,cAAc,QAAQ,QAAQ,CAAC;;WAE7D,cAAc,IAAI,+BAA+B,YAAY,WAAW,QAAQ;;;IAGnF,CAAC;;;;uBAIc,MAAKC,KAAM,SAAS,OAAO,QAAQ,GAAG,WAAW,GAAG;;;;eAI5D,MAAa;AACtB,KAAE,iBAAiB;AACnB,SAAKA,KAAM,KAAK,OAAO,QAAQ;IAC9B;;OAEA,MAAKA,KAAM,SAAS,OAAO,QAAQ,GAAG,MAAW,IAAS;;;;;CAMhE,UAAU,SAAwC;AACjD,SAAO,QAAQ,SAAS,WAAW,QAAQ,QAAQ,MAAM,GAAG,EAAE;;CAG/D,gBAAgB,SAAgC;EAC/C,MAAM,UAAU,sBAAsB,KAAK,UAAU,QAAQ;AAC7D,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,oBAAoB,QAAQ,SAAS,QAAQ;;CAGrD,QAAQ,SAAgC;AACvC,OAAK,QAAQ;AACb,YAAU,MAAM,oBAAoB,EAAE,SAAS,CAAC;;;YA3GhD,SAAS,EAAE,WAAW,OAAO,CAAC;YAG9B,SAAS,EAAE,WAAW,OAAO,CAAC;YAG9B,SAAS,EAAE,MAAM,QAAQ,CAAC;YAG1B,OAAO;uCA3JR,cAAc,8BAA8B"}
1
+ {"version":3,"file":"dev-wallet-account-selector.mjs","names":["#getLabel","#getAdapterName","#select","#copy"],"sources":["../../src/ui/dev-wallet-account-selector.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReadonlyWalletAccount } from '@mysten/wallet-standard';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { SignerAdapter } from '../types.js';\nimport { dropdownItemStyles, sharedStyles } from './styles.js';\nimport { CopyController } from './copy-controller.js';\nimport { emitEvent, findAdapterForAddress, formatAddress } from './utils.js';\nimport './dev-wallet-dropdown.js';\n\n/** Short display names for adapter badges. */\nconst ADAPTER_SHORT_NAMES: Record<string, string> = {\n\t'WebCrypto Signer': 'WebCrypto',\n\t'Remote CLI Signer': 'CLI',\n\t'In-Memory Signer': 'Memory',\n\t'Passkey Signer': 'Passkey',\n};\n\n@customElement('dev-wallet-account-selector')\nexport class DevWalletAccountSelector extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tdropdownItemStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t.active-account {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 10px;\n\t\t\t\twidth: 100%;\n\t\t\t\tmin-height: 54px;\n\t\t\t\tpadding: 10px 12px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-lg);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: var(--dev-wallet-surface);\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition:\n\t\t\t\t\tbackground 120ms,\n\t\t\t\t\tborder-color 120ms;\n\t\t\t}\n\n\t\t\t.active-account:hover {\n\t\t\t\tbackground: var(--dev-wallet-bg-hover);\n\t\t\t\tborder-color: var(--dev-wallet-border-strong);\n\t\t\t}\n\n\t\t\t.avatar {\n\t\t\t\twidth: 28px;\n\t\t\t\theight: 28px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-semibold);\n\t\t\t\tcolor: var(--dev-wallet-primary-foreground);\n\t\t\t\tbackground: var(--dev-wallet-primary);\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.account-info {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.account-label {\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-semibold);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t.account-label-row {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 6px;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.account-address {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tcolor: var(--dev-wallet-text-3);\n\t\t\t}\n\n\t\t\t.copy-btn {\n\t\t\t\twidth: 36px;\n\t\t\t\theight: 54px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tborder-radius: var(--dev-wallet-radius);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: transparent;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tfont-size: 12px;\n\t\t\t}\n\n\t\t\t.copy-btn:hover {\n\t\t\t\tbackground: var(--dev-wallet-bg-hover);\n\t\t\t\tborder-color: var(--dev-wallet-border-strong);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.copy-btn.copied {\n\t\t\t\tcolor: var(--dev-wallet-positive);\n\t\t\t}\n\n\t\t\t.chevron {\n\t\t\t\twidth: 14px;\n\t\t\t\theight: 14px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.dropdown-item[aria-selected='true'] {\n\t\t\t\tbackground: var(--dev-wallet-accent-fade);\n\t\t\t\tborder-color: var(--dev-wallet-border-strong);\n\t\t\t}\n\n\t\t\t.dropdown-item .avatar {\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tfont-size: 10px;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-label {\n\t\t\t\tfont-size: 12px;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-address {\n\t\t\t\tfont-size: 10px;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-info {\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.dropdown-item .account-label {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t\t.adapter-badge {\n\t\t\t\theight: 16px;\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\talign-items: center;\n\t\t\t\tpadding: 0 5px;\n\t\t\t\tborder-radius: 999px;\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: var(--dev-wallet-bg-3);\n\t\t\t\tcolor: var(--dev-wallet-text-3);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tfont-size: 9px;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t\t.selector-row {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.selector-wrapper {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t\t--dropdown-max-height: 240px;\n\t\t\t}\n\n\t\t\t.empty-state {\n\t\t\t\tpadding: 16px;\n\t\t\t\ttext-align: center;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\taccounts: ReadonlyWalletAccount[] = [];\n\n\t@property({ attribute: false })\n\tadapters: SignerAdapter[] = [];\n\n\t@property({ type: String })\n\tactiveAddress = '';\n\n\t@state()\n\tprivate _open = false;\n\n\t#copy = new CopyController(this);\n\n\toverride render() {\n\t\tconst active = this.accounts.find((a) => a.address === this.activeAddress);\n\n\t\tif (!active) {\n\t\t\treturn html`<div class=\"empty-state\" part=\"empty-state\">No account selected</div>`;\n\t\t}\n\n\t\tconst label = this.#getLabel(active);\n\t\tconst initial = (label[0] ?? '?').toUpperCase();\n\t\tconst activeAdapterName = this.#getAdapterName(active.address);\n\n\t\treturn html`\n\t\t\t<div class=\"selector-row\">\n\t\t\t\t<dev-wallet-dropdown\n\t\t\t\t\tfull-width\n\t\t\t\t\tclass=\"selector-wrapper\"\n\t\t\t\t\t.open=${this._open}\n\t\t\t\t\t@close=${() => (this._open = false)}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\tclass=\"active-account\"\n\t\t\t\t\t\tpart=\"trigger\"\n\t\t\t\t\t\taria-expanded=${this._open}\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t@click=${() => (this._open = !this._open)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"avatar\">${initial}</span>\n\t\t\t\t\t\t<div class=\"account-info\">\n\t\t\t\t\t\t\t<div class=\"account-label-row\">\n\t\t\t\t\t\t\t\t<div class=\"account-label\">${label}</div>\n\t\t\t\t\t\t\t\t${activeAdapterName\n\t\t\t\t\t\t\t\t\t? html`<span class=\"adapter-badge\">${activeAdapterName}</span>`\n\t\t\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"account-address\">${formatAddress(active.address)}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclass=\"chevron\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M6 9l6 6 6-6\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div slot=\"popover\" role=\"listbox\" aria-label=\"Select account\">\n\t\t\t\t\t\t${this.accounts.map((account) => {\n\t\t\t\t\t\t\tconst accountLabel = this.#getLabel(account);\n\t\t\t\t\t\t\tconst accountInitial = (accountLabel[0] ?? '?').toUpperCase();\n\t\t\t\t\t\t\tconst adapterName = this.#getAdapterName(account.address);\n\n\t\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"dropdown-item\"\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\taria-selected=${account.address === this.activeAddress}\n\t\t\t\t\t\t\t\t\t@click=${() => this.#select(account)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span class=\"avatar\">${accountInitial}</span>\n\t\t\t\t\t\t\t\t\t<div class=\"account-info\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"account-label\">${accountLabel}</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"account-address\">${formatAddress(account.address)}</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t${adapterName ? html`<span class=\"adapter-badge\">${adapterName}</span>` : nothing}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</dev-wallet-dropdown>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"copy-btn ${this.#copy.isCopied(active.address) ? 'copied' : ''}\"\n\t\t\t\t\tpart=\"copy-button\"\n\t\t\t\t\ttitle=\"Copy address\"\n\t\t\t\t\taria-label=\"Copy address\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tthis.#copy.copy(active.address);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${this.#copy.isCopied(active.address) ? '\\u2713' : '\\u2398'}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#getLabel(account: ReadonlyWalletAccount): string {\n\t\treturn account.label ?? `Account ${account.address.slice(0, 8)}`;\n\t}\n\n\t#getAdapterName(address: string): string | null {\n\t\tconst adapter = findAdapterForAddress(this.adapters, address);\n\t\tif (!adapter) return null;\n\t\treturn ADAPTER_SHORT_NAMES[adapter.name] ?? adapter.name;\n\t}\n\n\t#select(account: ReadonlyWalletAccount) {\n\t\tthis._open = false;\n\t\temitEvent(this, 'account-selected', { account });\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-account-selector': DevWalletAccountSelector;\n\t}\n}\n"],"mappings":";;;;;;;;;AAcA,MAAM,sBAA8C;CACnD,oBAAoB;CACpB,qBAAqB;CACrB,oBAAoB;CACpB,kBAAkB;CAClB;AAGM,IAAA,2BAAA,MAAM,iCAAiC,WAAW;;;kBAuKpB,EAAE;kBAGV,EAAE;uBAGd;eAGA;eAER,IAAI,eAAe,KAAK;;;gBAjLP;GACxB;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgKH;;CAcD;CAEA,SAAkB;EACjB,MAAM,SAAS,KAAK,SAAS,MAAM,MAAM,EAAE,YAAY,KAAK,cAAc;AAE1E,MAAI,CAAC,OACJ,QAAO,IAAI;EAGZ,MAAM,QAAQ,MAAA,SAAe,OAAO;EACpC,MAAM,WAAW,MAAM,MAAM,KAAK,aAAa;EAC/C,MAAM,oBAAoB,MAAA,eAAqB,OAAO,QAAQ;AAE9D,SAAO,IAAI;;;;;aAKA,KAAK,MAAM;oBACH,KAAK,QAAQ,MAAO;;;;;;sBAMnB,KAAK,MAAM;;qBAEX,KAAK,QAAQ,CAAC,KAAK,MAAO;;6BAEnB,QAAQ;;;qCAGA,MAAM;UACjC,oBACC,IAAI,+BAA+B,kBAAkB,WACrD,QAAQ;;sCAEmB,cAAc,OAAO,QAAQ,CAAC;;;;;;;;;;;;;QAa5D,KAAK,SAAS,KAAK,YAAY;GAChC,MAAM,eAAe,MAAA,SAAe,QAAQ;GAC5C,MAAM,kBAAkB,aAAa,MAAM,KAAK,aAAa;GAC7D,MAAM,cAAc,MAAA,eAAqB,QAAQ,QAAQ;AAEzD,UAAO,IAAI;;;;yBAIO,QAAQ,YAAY,KAAK,cAAc;wBACxC,MAAA,OAAa,QAAQ,CAAC;;gCAEd,eAAe;;uCAER,aAAa;yCACX,cAAc,QAAQ,QAAQ,CAAC;;WAE7D,cAAc,IAAI,+BAA+B,YAAY,WAAW,QAAQ;;;IAGnF,CAAC;;;;uBAIc,MAAA,KAAW,SAAS,OAAO,QAAQ,GAAG,WAAW,GAAG;;;;eAI5D,MAAa;AACtB,KAAE,iBAAiB;AACnB,SAAA,KAAW,KAAK,OAAO,QAAQ;IAC9B;;OAEA,MAAA,KAAW,SAAS,OAAO,QAAQ,GAAG,MAAW,IAAS;;;;;CAMhE,UAAU,SAAwC;AACjD,SAAO,QAAQ,SAAS,WAAW,QAAQ,QAAQ,MAAM,GAAG,EAAE;;CAG/D,gBAAgB,SAAgC;EAC/C,MAAM,UAAU,sBAAsB,KAAK,UAAU,QAAQ;AAC7D,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,oBAAoB,QAAQ,SAAS,QAAQ;;CAGrD,QAAQ,SAAgC;AACvC,OAAK,QAAQ;AACb,YAAU,MAAM,oBAAoB,EAAE,SAAS,CAAC;;;YAjHhD,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,yBAAA,WAAA,YAAA,KAAA,EAAA;YAG9B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,yBAAA,WAAA,YAAA,KAAA,EAAA;YAG9B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,yBAAA,WAAA,iBAAA,KAAA,EAAA;YAG1B,OAAO,CAAA,EAAA,yBAAA,WAAA,SAAA,KAAA,EAAA;uCAhLR,cAAc,8BAA8B,CAAA,EAAA,yBAAA"}
@@ -1,23 +1,28 @@
1
1
  import { SignerAdapter } from "../types.mjs";
2
- import "./dev-wallet-new-account.mjs";
3
2
  import { ReadonlyWalletAccount } from "@mysten/wallet-standard";
4
- import * as lit2 from "lit";
3
+ import * as _$lit from "lit";
5
4
  import { LitElement } from "lit";
6
5
 
7
6
  //#region src/ui/dev-wallet-accounts.d.ts
8
7
  declare class DevWalletAccounts extends LitElement {
9
8
  #private;
10
- static styles: (lit2.CSSResult | lit2.CSSResult[])[];
9
+ static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
11
10
  accounts: readonly ReadonlyWalletAccount[];
12
11
  adapters: SignerAdapter[];
13
12
  activeAddress: string;
13
+ /** Phase 4 P4.20 — when set to a `*-fork` literal, the panel
14
+ * surfaces a warning on the "+ Add" button (or hides it outright
15
+ * when no fork-compatible funding path exists). Fork stacks have
16
+ * no faucet; arbitrary fresh accounts can't be funded without an
17
+ * impersonation seed already configured at the supervisor level. */
18
+ network: string;
14
19
  private _dialogOpen;
15
20
  private _editingAddress;
16
21
  private _editingLabel;
17
22
  private _confirmDeleteAddress;
18
23
  private _deleting;
19
24
  private _deleteError;
20
- render(): lit2.TemplateResult<1>;
25
+ render(): _$lit.TemplateResult<1>;
21
26
  }
22
27
  declare global {
23
28
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-accounts.d.mts","names":[],"sources":["../../src/ui/dev-wallet-accounts.ts"],"mappings":";;;;;;;cAca,iBAAA,SAA0B,UAAA;EAAA;SACtB,MAAA,GADc,IAAA,CACR,SAAA,GAAA,IAAA,CAAA,SAAA;EAgQtB,QAAA,WAAmB,qBAAA;EAGnB,QAAA,EAAU,aAAA;EAGV,aAAA;EAAA,QAGQ,WAAA;EAAA,QAKA,eAAA;EAAA,QAGA,aAAA;EAAA,QAGA,qBAAA;EAAA,QAGA,SAAA;EAAA,QAGA,YAAA;EAEC,MAAA,CAAA,GAzBc,IAAA,CAyBR,cAAA;AAAA;AAAA,QAkRR,MAAA;EAAA,UACG,qBAAA;IACT,qBAAA,EAAuB,iBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"dev-wallet-accounts.d.mts","names":[],"sources":["../../src/ui/dev-wallet-accounts.ts"],"mappings":";;;;;;cAkCa,iBAAA,SAA0B,UAAA;EAAA;SACtB,MAAA,GADc,KAAA,CACR,SAAA,GAAA,KAAA,CAAA,SAAA;EA8KtB,QAAA,WAAmB,qBAAA;EAGnB,QAAA,EAAU,aAAA;EAGV,aAAA;EArL8B;;;;;EA6L9B,OAAA;EAAA,QAGQ,WAAA;EAAA,QAKA,eAAA;EAAA,QAGA,aAAA;EAAA,QAGA,qBAAA;EAAA,QAGA,SAAA;EAAA,QAGA,YAAA;EAEC,MAAA,CAAA,GAjCc,KAAA,CAiCR,cAAA;AAAA;AAAA,QAmSR,MAAA;EAAA,UACG,qBAAA;IACT,qBAAA,EAAuB,iBAAA;EAAA;AAAA"}