@mysten-incubation/dev-wallet 0.0.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CHANGELOG.md +25 -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 +12 -0
  15. package/dist/adapters/devstack-paths.d.mts.map +1 -0
  16. package/dist/adapters/devstack-paths.mjs +12 -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 +16 -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,12 +1,11 @@
1
1
  import { dropdownItemStyles, sharedStyles } from "./styles.mjs";
2
- import { NETWORK_COLORS } from "./utils.mjs";
3
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.107.0/helpers/decorate.mjs";
2
+ import { NETWORK_COLORS, isForkNetwork } from "./utils.mjs";
3
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.mjs";
4
4
  import "./dev-wallet-dropdown.mjs";
5
5
  import { LitElement, css, html } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
7
-
8
7
  //#region src/ui/dev-wallet-network-badge.ts
9
- let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
8
+ let DevWalletNetworkBadge = class DevWalletNetworkBadge extends LitElement {
10
9
  constructor(..._args) {
11
10
  super(..._args);
12
11
  this.active = "";
@@ -25,19 +24,50 @@ let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
25
24
  .badge {
26
25
  display: flex;
27
26
  align-items: center;
28
- gap: 4px;
29
- padding: 3px 8px;
27
+ gap: 6px;
28
+ height: 26px;
29
+ padding: 0 8px;
30
30
  border-radius: 999px;
31
- font-size: 11px;
31
+ border: 1px solid var(--dev-wallet-border);
32
+ font-family: var(--dev-wallet-font-mono);
33
+ font-size: 10.5px;
32
34
  font-weight: var(--dev-wallet-font-weight-medium);
33
- color: var(--dev-wallet-foreground);
34
- background: var(--dev-wallet-secondary);
35
+ color: var(--dev-wallet-text-2);
36
+ background: var(--dev-wallet-bg-3);
35
37
  cursor: pointer;
36
- transition: background 0.15s;
38
+ transition:
39
+ background 120ms,
40
+ border-color 120ms,
41
+ color 120ms;
42
+ }
43
+
44
+ /* Phase 4 P4.17 — amber stripe + fork label when the
45
+ active network is a *-fork variant. The stripe is
46
+ diagonal-hatched so it survives dark + light themes
47
+ without depending on a separate badge background. */
48
+ .badge.fork {
49
+ background-image: repeating-linear-gradient(
50
+ 45deg,
51
+ rgba(234, 179, 8, 0.18),
52
+ rgba(234, 179, 8, 0.18) 4px,
53
+ transparent 4px,
54
+ transparent 8px
55
+ );
56
+ }
57
+
58
+ .fork-tag {
59
+ color: #92400e;
60
+ font-weight: var(--dev-wallet-font-weight-bold);
61
+ font-size: 10px;
62
+ margin-left: 4px;
63
+ text-transform: uppercase;
64
+ letter-spacing: 0.5px;
37
65
  }
38
66
 
39
67
  .badge:hover {
40
- background: var(--dev-wallet-border);
68
+ background: var(--dev-wallet-bg-4);
69
+ border-color: var(--dev-wallet-border-strong);
70
+ color: var(--dev-wallet-foreground);
41
71
  }
42
72
 
43
73
  .dot {
@@ -60,18 +90,21 @@ let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
60
90
  }
61
91
  render() {
62
92
  const color = NETWORK_COLORS[this.active] ?? NETWORK_COLORS["localnet"];
93
+ const fork = isForkNetwork(this.active);
94
+ const baseLabel = fork ? this.active.replace(/-fork$/, "") : this.active;
63
95
  return html`
64
96
  <dev-wallet-dropdown .open=${this._open} @close=${() => this._open = false}>
65
97
  <button
66
98
  slot="trigger"
67
- class="badge"
99
+ class=${fork ? "badge fork" : "badge"}
68
100
  part="trigger"
69
101
  aria-expanded=${this._open}
70
102
  aria-haspopup="listbox"
103
+ title=${fork ? `sui-fork stack — no real ${baseLabel} funds at risk` : ""}
71
104
  @click=${() => this._open = !this._open}
72
105
  >
73
106
  <span class="dot" style="background: ${color}"></span>
74
- ${this.active}
107
+ ${baseLabel} ${fork ? html`<span class="fork-tag">fork</span>` : ""}
75
108
  <svg
76
109
  class="chevron"
77
110
  viewBox="0 0 24 24"
@@ -102,20 +135,18 @@ let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
102
135
  }
103
136
  #select(network) {
104
137
  this._open = false;
105
- if (network !== this.active) {
106
- this.dispatchEvent(new CustomEvent("network-changed", {
107
- bubbles: true,
108
- composed: true,
109
- detail: { network }
110
- }));
111
- }
138
+ if (network !== this.active) this.dispatchEvent(new CustomEvent("network-changed", {
139
+ bubbles: true,
140
+ composed: true,
141
+ detail: { network }
142
+ }));
112
143
  }
113
144
  };
114
145
  __decorate([property({ type: String })], DevWalletNetworkBadge.prototype, "active", void 0);
115
146
  __decorate([property({ attribute: false })], DevWalletNetworkBadge.prototype, "networks", void 0);
116
147
  __decorate([state()], DevWalletNetworkBadge.prototype, "_open", void 0);
117
148
  DevWalletNetworkBadge = __decorate([customElement("dev-wallet-network-badge")], DevWalletNetworkBadge);
118
-
119
149
  //#endregion
120
150
  export { DevWalletNetworkBadge };
151
+
121
152
  //# sourceMappingURL=dev-wallet-network-badge.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-network-badge.mjs","names":["DevWalletNetworkBadge","#select"],"sources":["../../src/ui/dev-wallet-network-badge.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { dropdownItemStyles, sharedStyles } from './styles.js';\nimport { NETWORK_COLORS } from './utils.js';\nimport './dev-wallet-dropdown.js';\n\n@customElement('dev-wallet-network-badge')\nexport class DevWalletNetworkBadge 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: inline-block;\n\t\t\t}\n\n\t\t\t.badge {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 4px;\n\t\t\t\tpadding: 3px 8px;\n\t\t\t\tborder-radius: 999px;\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\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.badge:hover {\n\t\t\t\tbackground: var(--dev-wallet-border);\n\t\t\t}\n\n\t\t\t.dot {\n\t\t\t\twidth: 6px;\n\t\t\t\theight: 6px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t}\n\n\t\t\t.chevron {\n\t\t\t\twidth: 10px;\n\t\t\t\theight: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t}\n\n\t\t\t.dropdown-item {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ type: String })\n\tactive = '';\n\n\t@property({ attribute: false })\n\tnetworks: string[] = [];\n\n\t@state()\n\tprivate _open = false;\n\n\toverride render() {\n\t\tconst color = NETWORK_COLORS[this.active] ?? NETWORK_COLORS['localnet'];\n\n\t\treturn html`\n\t\t\t<dev-wallet-dropdown .open=${this._open} @close=${() => (this._open = false)}>\n\t\t\t\t<button\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tclass=\"badge\"\n\t\t\t\t\tpart=\"trigger\"\n\t\t\t\t\taria-expanded=${this._open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t@click=${() => (this._open = !this._open)}\n\t\t\t\t>\n\t\t\t\t\t<span class=\"dot\" style=\"background: ${color}\"></span>\n\t\t\t\t\t${this.active}\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclass=\"chevron\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M6 9l6 6 6-6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t${this.networks.map((network) => {\n\t\t\t\t\t\tconst dotColor = NETWORK_COLORS[network] ?? NETWORK_COLORS['localnet'];\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"dropdown-item\"\n\t\t\t\t\t\t\t\taria-selected=${network === this.active}\n\t\t\t\t\t\t\t\t@click=${() => this.#select(network)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span class=\"dot\" style=\"background: ${dotColor}\"></span>\n\t\t\t\t\t\t\t\t${network}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t`;\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</dev-wallet-dropdown>\n\t\t`;\n\t}\n\n\t#select(network: string) {\n\t\tthis._open = false;\n\t\tif (network !== this.active) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('network-changed', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t\tdetail: { network },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-network-badge': DevWalletNetworkBadge;\n\t}\n}\n"],"mappings":";;;;;;;;AAWO,kCAAMA,gCAA8B,WAAW;;;gBA8C5C;kBAGY,EAAE;eAGP;;;gBAnDS;GACxB;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCH;;CAWD,AAAS,SAAS;EACjB,MAAM,QAAQ,eAAe,KAAK,WAAW,eAAe;AAE5D,SAAO,IAAI;gCACmB,KAAK,MAAM,gBAAiB,KAAK,QAAQ,MAAO;;;;;qBAK3D,KAAK,MAAM;;oBAEX,KAAK,QAAQ,CAAC,KAAK,MAAO;;4CAEH,MAAM;OAC3C,KAAK,OAAO;;;;;;;;;;;;OAYZ,KAAK,SAAS,KAAK,YAAY;GAChC,MAAM,WAAW,eAAe,YAAY,eAAe;AAC3D,UAAO,IAAI;;;wBAGO,YAAY,KAAK,OAAO;uBACzB,MAAKC,OAAQ,QAAQ,CAAC;;+CAEE,SAAS;UAC9C,QAAQ;;;IAGX,CAAC;;;;;CAMP,QAAQ,SAAiB;AACxB,OAAK,QAAQ;AACb,MAAI,YAAY,KAAK,QAAQ;AAC5B,QAAK,cACJ,IAAI,YAAY,mBAAmB;IAClC,SAAS;IACT,UAAU;IACV,QAAQ,EAAE,SAAS;IACnB,CAAC,CACF;;;;YA9DF,SAAS,EAAE,MAAM,QAAQ,CAAC;YAG1B,SAAS,EAAE,WAAW,OAAO,CAAC;YAG9B,OAAO;oCApDR,cAAc,2BAA2B"}
1
+ {"version":3,"file":"dev-wallet-network-badge.mjs","names":["#select"],"sources":["../../src/ui/dev-wallet-network-badge.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { dropdownItemStyles, sharedStyles } from './styles.js';\nimport { isForkNetwork, NETWORK_COLORS } from './utils.js';\nimport './dev-wallet-dropdown.js';\n\n@customElement('dev-wallet-network-badge')\nexport class DevWalletNetworkBadge 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: inline-block;\n\t\t\t}\n\n\t\t\t.badge {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 6px;\n\t\t\t\theight: 26px;\n\t\t\t\tpadding: 0 8px;\n\t\t\t\tborder-radius: 999px;\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tfont-size: 10.5px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-text-2);\n\t\t\t\tbackground: var(--dev-wallet-bg-3);\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\t\tcolor 120ms;\n\t\t\t}\n\n\t\t\t/* Phase 4 P4.17 — amber stripe + fork label when the\n\t\t\t active network is a *-fork variant. The stripe is\n\t\t\t diagonal-hatched so it survives dark + light themes\n\t\t\t without depending on a separate badge background. */\n\t\t\t.badge.fork {\n\t\t\t\tbackground-image: repeating-linear-gradient(\n\t\t\t\t\t45deg,\n\t\t\t\t\trgba(234, 179, 8, 0.18),\n\t\t\t\t\trgba(234, 179, 8, 0.18) 4px,\n\t\t\t\t\ttransparent 4px,\n\t\t\t\t\ttransparent 8px\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t.fork-tag {\n\t\t\t\tcolor: #92400e;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-bold);\n\t\t\t\tfont-size: 10px;\n\t\t\t\tmargin-left: 4px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tletter-spacing: 0.5px;\n\t\t\t}\n\n\t\t\t.badge:hover {\n\t\t\t\tbackground: var(--dev-wallet-bg-4);\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.dot {\n\t\t\t\twidth: 6px;\n\t\t\t\theight: 6px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t}\n\n\t\t\t.chevron {\n\t\t\t\twidth: 10px;\n\t\t\t\theight: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t}\n\n\t\t\t.dropdown-item {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ type: String })\n\tactive = '';\n\n\t@property({ attribute: false })\n\tnetworks: string[] = [];\n\n\t@state()\n\tprivate _open = false;\n\n\toverride render() {\n\t\tconst color = NETWORK_COLORS[this.active] ?? NETWORK_COLORS['localnet'];\n\t\tconst fork = isForkNetwork(this.active);\n\t\t// Phase 4 P4.17 — when `meta.runtime: 'forked'` flows through\n\t\t// (codegen emits the network literal as e.g. `'mainnet-fork'`),\n\t\t// the badge surfaces an amber-hatched stripe + a `(fork)`\n\t\t// label so the user can't mistake the wallet panel for one\n\t\t// pointed at real upstream funds.\n\t\tconst baseLabel = fork ? this.active.replace(/-fork$/, '') : this.active;\n\n\t\treturn html`\n\t\t\t<dev-wallet-dropdown .open=${this._open} @close=${() => (this._open = false)}>\n\t\t\t\t<button\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tclass=${fork ? 'badge fork' : 'badge'}\n\t\t\t\t\tpart=\"trigger\"\n\t\t\t\t\taria-expanded=${this._open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\ttitle=${fork ? `sui-fork stack — no real ${baseLabel} funds at risk` : ''}\n\t\t\t\t\t@click=${() => (this._open = !this._open)}\n\t\t\t\t>\n\t\t\t\t\t<span class=\"dot\" style=\"background: ${color}\"></span>\n\t\t\t\t\t${baseLabel} ${fork ? html`<span class=\"fork-tag\">fork</span>` : ''}\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclass=\"chevron\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M6 9l6 6 6-6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t${this.networks.map((network) => {\n\t\t\t\t\t\tconst dotColor = NETWORK_COLORS[network] ?? NETWORK_COLORS['localnet'];\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"dropdown-item\"\n\t\t\t\t\t\t\t\taria-selected=${network === this.active}\n\t\t\t\t\t\t\t\t@click=${() => this.#select(network)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span class=\"dot\" style=\"background: ${dotColor}\"></span>\n\t\t\t\t\t\t\t\t${network}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t`;\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</dev-wallet-dropdown>\n\t\t`;\n\t}\n\n\t#select(network: string) {\n\t\tthis._open = false;\n\t\tif (network !== this.active) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('network-changed', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t\tdetail: { network },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-network-badge': DevWalletNetworkBadge;\n\t}\n}\n"],"mappings":";;;;;;;AAWO,IAAA,wBAAA,MAAM,8BAA8B,WAAW;;;gBA6E5C;kBAGY,EAAE;eAGP;;;gBAlFS;GACxB;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEH;;CAWD,SAAkB;EACjB,MAAM,QAAQ,eAAe,KAAK,WAAW,eAAe;EAC5D,MAAM,OAAO,cAAc,KAAK,OAAO;EAMvC,MAAM,YAAY,OAAO,KAAK,OAAO,QAAQ,UAAU,GAAG,GAAG,KAAK;AAElE,SAAO,IAAI;gCACmB,KAAK,MAAM,gBAAiB,KAAK,QAAQ,MAAO;;;aAGnE,OAAO,eAAe,QAAQ;;qBAEtB,KAAK,MAAM;;aAEnB,OAAO,4BAA4B,UAAU,kBAAkB,GAAG;oBAC1D,KAAK,QAAQ,CAAC,KAAK,MAAO;;4CAEH,MAAM;OAC3C,UAAU,GAAG,OAAO,IAAI,uCAAuC,GAAG;;;;;;;;;;;;OAYlE,KAAK,SAAS,KAAK,YAAY;GAChC,MAAM,WAAW,eAAe,YAAY,eAAe;AAC3D,UAAO,IAAI;;;wBAGO,YAAY,KAAK,OAAO;uBACzB,MAAA,OAAa,QAAQ,CAAC;;+CAEE,SAAS;UAC9C,QAAQ;;;IAGX,CAAC;;;;;CAMP,QAAQ,SAAiB;AACxB,OAAK,QAAQ;AACb,MAAI,YAAY,KAAK,OACpB,MAAK,cACJ,IAAI,YAAY,mBAAmB;GAClC,SAAS;GACT,UAAU;GACV,QAAQ,EAAE,SAAS;GACnB,CAAC,CACF;;;YAtEF,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,sBAAA,WAAA,UAAA,KAAA,EAAA;YAG1B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,sBAAA,WAAA,YAAA,KAAA,EAAA;YAG9B,OAAO,CAAA,EAAA,sBAAA,WAAA,SAAA,KAAA,EAAA;oCAnFR,cAAc,2BAA2B,CAAA,EAAA,sBAAA"}
@@ -1,12 +1,11 @@
1
1
  import { SignerAdapter } from "../types.mjs";
2
- import "./dev-wallet-dropdown.mjs";
3
- import * as lit11 from "lit";
2
+ import * as _$lit from "lit";
4
3
  import { LitElement } from "lit";
5
4
 
6
5
  //#region src/ui/dev-wallet-new-account.d.ts
7
6
  declare class DevWalletNewAccount extends LitElement {
8
7
  #private;
9
- static styles: (lit11.CSSResult | lit11.CSSResult[])[];
8
+ static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
10
9
  adapters: SignerAdapter[];
11
10
  open: boolean;
12
11
  private _mode;
@@ -19,7 +18,7 @@ declare class DevWalletNewAccount extends LitElement {
19
18
  private _dropdownOpen;
20
19
  private _selectedImports;
21
20
  updated(changed: Map<string, unknown>): void;
22
- render(): lit11.TemplateResult<1>;
21
+ render(): _$lit.TemplateResult<1>;
23
22
  }
24
23
  declare global {
25
24
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-new-account.d.mts","names":[],"sources":["../../src/ui/dev-wallet-new-account.ts"],"mappings":";;;;;;cA0Ba,mBAAA,SAA4B,UAAA;EAAA;SACxB,MAAA,GADgB,KAAA,CACV,SAAA,GAAA,KAAA,CAAA,SAAA;EAkQtB,QAAA,EAAU,aAAA;EAGV,IAAA;EAAA,QAGQ,KAAA;EAAA,QAGA,MAAA;EAAA,QAGA,kBAAA;EAAA,QAGA,SAAA;EAAA,QAGA,MAAA;EAAA,QAGA,kBAAA;EAAA,QAGA,eAAA;EAAA,QAGA,aAAA;EAAA,QAGA,gBAAA;EA8BC,OAAA,CAAQ,OAAA,EAAS,GAAA;EAqBjB,MAAA,CAAA,GArBoB,KAAA,CAqBd,cAAA;AAAA;AAAA,QAmSR,MAAA;EAAA,UACG,qBAAA;IACT,wBAAA,EAA0B,mBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"dev-wallet-new-account.d.mts","names":[],"sources":["../../src/ui/dev-wallet-new-account.ts"],"mappings":";;;;;cAsCa,mBAAA,SAA4B,UAAA;EAAA;SACxB,MAAA,GADgB,KAAA,CACV,SAAA,GAAA,KAAA,CAAA,SAAA;EA6MtB,QAAA,EAAU,aAAA;EAGV,IAAA;EAAA,QAGQ,KAAA;EAAA,QAGA,MAAA;EAAA,QAGA,kBAAA;EAAA,QAGA,SAAA;EAAA,QAGA,MAAA;EAAA,QAGA,kBAAA;EAAA,QAGA,eAAA;EAAA,QAGA,aAAA;EAAA,QAGA,gBAAA;EA8BC,OAAA,CAAQ,OAAA,EAAS,GAAA;EAqBjB,MAAA,CAAA,GArBoB,KAAA,CAqBd,cAAA;AAAA;AAAA,QAmSR,MAAA;EAAA,UACG,qBAAA;IACT,wBAAA,EAA0B,mBAAA;EAAA;AAAA"}
@@ -1,12 +1,11 @@
1
- import { actionButtonStyles, sharedStyles, stateStyles } from "./styles.mjs";
1
+ import { actionButtonStyles, badgeStyles, cardItemStyles, dialogStyles, formInputStyles, inlineErrorStyles, listContainerStyles, monoTruncateStyles, sharedStyles, stateStyles, subLabelStyles } from "./styles.mjs";
2
2
  import { emitEvent, formatAddress, getErrorMessage, isPairableAdapter, toggleSetItem } from "./utils.mjs";
3
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.107.0/helpers/decorate.mjs";
3
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.mjs";
4
4
  import "./dev-wallet-dropdown.mjs";
5
5
  import { LitElement, css, html, nothing } from "lit";
6
6
  import { customElement, property, state } from "lit/decorators.js";
7
-
8
7
  //#region src/ui/dev-wallet-new-account.ts
9
- let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
8
+ let DevWalletNewAccount = class DevWalletNewAccount extends LitElement {
10
9
  constructor(..._args) {
11
10
  super(..._args);
12
11
  this.adapters = [];
@@ -19,45 +18,26 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
19
18
  this._availableAccounts = [];
20
19
  this._loadingImports = false;
21
20
  this._dropdownOpen = false;
22
- this._selectedImports = new Set();
21
+ this._selectedImports = /* @__PURE__ */ new Set();
23
22
  }
24
23
  static {
25
24
  this.styles = [
26
25
  sharedStyles,
27
26
  actionButtonStyles,
28
27
  stateStyles,
28
+ dialogStyles,
29
+ cardItemStyles,
30
+ listContainerStyles,
31
+ formInputStyles,
32
+ monoTruncateStyles,
33
+ badgeStyles,
34
+ inlineErrorStyles,
35
+ subLabelStyles,
29
36
  css`
30
- :host {
31
- display: block;
32
- }
33
-
34
- dialog:not([open]) {
35
- display: none;
36
- }
37
-
38
37
  dialog {
39
38
  width: 320px;
40
- max-width: calc(100vw - 32px);
41
39
  max-height: min(420px, 80vh);
42
- border-radius: var(--dev-wallet-radius-xl);
43
- background: var(--dev-wallet-background);
44
- border: 1px solid var(--dev-wallet-border);
45
- box-shadow: var(--dev-wallet-shadow-lg);
46
40
  padding: 20px;
47
- display: flex;
48
- flex-direction: column;
49
- color: inherit;
50
- }
51
-
52
- dialog::backdrop {
53
- background: color-mix(in oklab, oklch(0 0 0) 50%, transparent);
54
- }
55
-
56
- .dialog-title {
57
- font-size: 16px;
58
- font-weight: var(--dev-wallet-font-weight-semibold);
59
- color: var(--dev-wallet-foreground);
60
- margin-bottom: 16px;
61
41
  }
62
42
 
63
43
  .tabs {
@@ -94,29 +74,15 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
94
74
  margin-bottom: 12px;
95
75
  }
96
76
 
97
- .field-label {
98
- display: block;
99
- font-size: 12px;
100
- font-weight: var(--dev-wallet-font-weight-medium);
101
- color: var(--dev-wallet-muted-foreground);
102
- margin-bottom: 4px;
103
- }
104
-
105
77
  .field-input {
106
- width: 100%;
107
78
  padding: 8px 10px;
108
79
  border-radius: var(--dev-wallet-radius-sm);
109
80
  border: 1px solid var(--dev-wallet-input);
110
81
  background: var(--dev-wallet-secondary);
111
- color: var(--dev-wallet-foreground);
112
82
  font-size: 14px;
113
- font-family: inherit;
114
- outline: none;
115
- box-sizing: border-box;
116
83
  }
117
84
 
118
85
  .field-input:focus {
119
- border-color: var(--dev-wallet-primary);
120
86
  outline: 2px solid color-mix(in oklab, var(--dev-wallet-ring) 50%, transparent);
121
87
  outline-offset: -1px;
122
88
  }
@@ -174,22 +140,14 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
174
140
  }
175
141
 
176
142
  .import-list {
177
- display: flex;
178
- flex-direction: column;
179
- gap: 4px;
180
143
  overflow-y: auto;
181
144
  max-height: 240px;
182
145
  min-height: 60px;
183
146
  }
184
147
 
185
148
  .import-item {
186
- display: flex;
187
- align-items: center;
188
149
  gap: 10px;
189
150
  padding: 8px 10px;
190
- border-radius: var(--dev-wallet-radius-sm);
191
- border: 1px solid var(--dev-wallet-border);
192
- background: var(--dev-wallet-secondary);
193
151
  width: 100%;
194
152
  text-align: left;
195
153
  transition: border-color 0.15s;
@@ -200,7 +158,6 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
200
158
  }
201
159
 
202
160
  .import-item.selected {
203
- border-color: var(--dev-wallet-primary);
204
161
  background: color-mix(in oklab, var(--dev-wallet-primary) 10%, var(--dev-wallet-secondary));
205
162
  }
206
163
 
@@ -241,24 +198,15 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
241
198
 
242
199
  .import-item-address {
243
200
  font-size: 11px;
244
- color: var(--dev-wallet-muted-foreground);
245
- font-family: var(--dev-wallet-font-mono);
246
- overflow: hidden;
247
- text-overflow: ellipsis;
248
- white-space: nowrap;
249
201
  }
250
202
 
251
203
  .import-item-badge {
252
- font-size: 10px;
253
204
  padding: 1px 6px;
254
205
  border-radius: var(--dev-wallet-radius-xs);
255
206
  background: var(--dev-wallet-background);
256
207
  border: 1px solid var(--dev-wallet-border);
257
208
  color: var(--dev-wallet-muted-foreground);
258
- font-weight: var(--dev-wallet-font-weight-medium);
259
- text-transform: uppercase;
260
209
  letter-spacing: 0.3px;
261
- white-space: nowrap;
262
210
  flex-shrink: 0;
263
211
  }
264
212
 
@@ -272,8 +220,6 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
272
220
  }
273
221
 
274
222
  .error {
275
- color: var(--dev-wallet-destructive);
276
- font-size: 12px;
277
223
  margin-top: 8px;
278
224
  }
279
225
  `
@@ -294,18 +240,11 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
294
240
  if (this.open && dialog && !dialog.open) {
295
241
  const canCreate = this.#creatableAdapters.length > 0;
296
242
  const canImport = this.#importableAdapters.length > 0;
297
- if (canImport && !canCreate) {
298
- this._mode = "import";
299
- } else {
300
- this._mode = "create";
301
- }
302
- if (canImport) {
303
- this.#loadAvailableAccounts();
304
- }
243
+ if (canImport && !canCreate) this._mode = "import";
244
+ else this._mode = "create";
245
+ if (canImport) this.#loadAvailableAccounts();
305
246
  dialog.showModal();
306
- } else if (!this.open && dialog?.open) {
307
- dialog.close();
308
- }
247
+ } else if (!this.open && dialog?.open) dialog.close();
309
248
  }
310
249
  }
311
250
  render() {
@@ -338,9 +277,7 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
338
277
  }
339
278
  #handleDialogCancel(e) {
340
279
  e.preventDefault();
341
- if (!this._creating) {
342
- this.#close();
343
- }
280
+ if (!this._creating) this.#close();
344
281
  }
345
282
  #renderCreateForm() {
346
283
  const creatableAdapters = this.#creatableAdapters;
@@ -408,16 +345,13 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
408
345
  `;
409
346
  }
410
347
  #renderImportList() {
411
- if (this._loadingImports) {
412
- return html`<div class="loading">Loading accounts...</div>
348
+ if (this._loadingImports) return html`<div class="loading">Loading accounts...</div>
413
349
  <div class="actions">
414
350
  <button class="btn btn-cancel" part="cancel-button" @click=${this.#handleCancel}>
415
351
  Cancel
416
352
  </button>
417
353
  </div>`;
418
- }
419
- if (this._availableAccounts.length === 0) {
420
- return html`<div class="empty-state">
354
+ if (this._availableAccounts.length === 0) return html`<div class="empty-state">
421
355
  ${this.#hasUnpairedImportableAdapters ? "Open the token URL from your terminal to connect CLI accounts." : "No accounts available to import"}
422
356
  </div>
423
357
  <div class="actions">
@@ -425,7 +359,6 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
425
359
  Cancel
426
360
  </button>
427
361
  </div>`;
428
- }
429
362
  return html`
430
363
  <div class="import-list">
431
364
  ${this._availableAccounts.map((account) => {
@@ -474,15 +407,13 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
474
407
  const results = [];
475
408
  for (const adapter of this.#importableAdapters) {
476
409
  const accounts = await adapter.listAvailableAccounts();
477
- for (const account of accounts) {
478
- results.push({
479
- adapterId: adapter.id,
480
- adapterName: adapter.name,
481
- address: account.address,
482
- scheme: account.scheme,
483
- alias: "alias" in account ? account.alias : null
484
- });
485
- }
410
+ for (const account of accounts) results.push({
411
+ adapterId: adapter.id,
412
+ adapterName: adapter.name,
413
+ address: account.address,
414
+ scheme: account.scheme,
415
+ alias: "alias" in account ? account.alias : null
416
+ });
486
417
  }
487
418
  this._availableAccounts = results;
488
419
  } catch (error) {
@@ -496,11 +427,8 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
496
427
  this._error = null;
497
428
  }
498
429
  #handleKeydown(e) {
499
- if (e.key === "Enter" && !this._creating) {
500
- this.#handleCreate();
501
- } else if (e.key === "Escape") {
502
- this.#close();
503
- }
430
+ if (e.key === "Enter" && !this._creating) this.#handleCreate();
431
+ else if (e.key === "Escape") this.#close();
504
432
  }
505
433
  #handleCancel() {
506
434
  this.#close();
@@ -514,9 +442,7 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
514
442
  this._error = null;
515
443
  try {
516
444
  const options = {};
517
- if (this._label.trim()) {
518
- options.label = this._label.trim();
519
- }
445
+ if (this._label.trim()) options.label = this._label.trim();
520
446
  await adapter.createAccount(options);
521
447
  this.#close();
522
448
  emitEvent(this, "account-created");
@@ -553,7 +479,7 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
553
479
  this._selectedAdapterId = "";
554
480
  this._error = null;
555
481
  this._availableAccounts = [];
556
- this._selectedImports = new Set();
482
+ this._selectedImports = /* @__PURE__ */ new Set();
557
483
  this._mode = "create";
558
484
  this._dropdownOpen = false;
559
485
  emitEvent(this, "close");
@@ -571,7 +497,7 @@ __decorate([state()], DevWalletNewAccount.prototype, "_loadingImports", void 0);
571
497
  __decorate([state()], DevWalletNewAccount.prototype, "_dropdownOpen", void 0);
572
498
  __decorate([state()], DevWalletNewAccount.prototype, "_selectedImports", void 0);
573
499
  DevWalletNewAccount = __decorate([customElement("dev-wallet-new-account")], DevWalletNewAccount);
574
-
575
500
  //#endregion
576
501
  export { DevWalletNewAccount };
502
+
577
503
  //# sourceMappingURL=dev-wallet-new-account.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-new-account.mjs","names":["DevWalletNewAccount","#creatableAdapters","#importableAdapters","#hasUnpairedImportableAdapters","#loadAvailableAccounts","#handleDialogCancel","#renderCreateForm","#renderImportList","#close","#handleLabelInput","#handleKeydown","#handleCancel","#handleCreate","#toggleImportSelection","#handleImportSelected"],"sources":["../../src/ui/dev-wallet-new-account.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { SignerAdapter } from '../types.js';\nimport { actionButtonStyles, sharedStyles, stateStyles } from './styles.js';\nimport {\n\temitEvent,\n\tformatAddress,\n\tgetErrorMessage,\n\tisPairableAdapter,\n\ttoggleSetItem,\n} from './utils.js';\nimport './dev-wallet-dropdown.js';\n\ninterface AvailableAccount {\n\tadapterId: string;\n\tadapterName: string;\n\taddress: string;\n\tscheme: string;\n\talias?: string | null;\n}\n\n@customElement('dev-wallet-new-account')\nexport class DevWalletNewAccount extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tactionButtonStyles,\n\t\tstateStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tdialog:not([open]) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\tdialog {\n\t\t\t\twidth: 320px;\n\t\t\t\tmax-width: calc(100vw - 32px);\n\t\t\t\tmax-height: min(420px, 80vh);\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xl);\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbox-shadow: var(--dev-wallet-shadow-lg);\n\t\t\t\tpadding: 20px;\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\n\t\t\tdialog::backdrop {\n\t\t\t\tbackground: color-mix(in oklab, oklch(0 0 0) 50%, transparent);\n\t\t\t}\n\n\t\t\t.dialog-title {\n\t\t\t\tfont-size: 16px;\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\tmargin-bottom: 16px;\n\t\t\t}\n\n\t\t\t.tabs {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tpadding: 3px;\n\t\t\t}\n\n\t\t\t.tab {\n\t\t\t\tflex: 1;\n\t\t\t\tpadding: 6px 12px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttext-align: center;\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.tab.active {\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbox-shadow: var(--dev-wallet-shadow-sm);\n\t\t\t}\n\n\t\t\t.tab:not(.active):hover {\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.field {\n\t\t\t\tmargin-bottom: 12px;\n\t\t\t}\n\n\t\t\t.field-label {\n\t\t\t\tdisplay: block;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tmargin-bottom: 4px;\n\t\t\t}\n\n\t\t\t.field-input {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\toutline: none;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t.field-input:focus {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t\toutline: 2px solid color-mix(in oklab, var(--dev-wallet-ring) 50%, transparent);\n\t\t\t\toutline-offset: -1px;\n\t\t\t}\n\n\t\t\t.select-trigger {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-align: left;\n\t\t\t}\n\n\t\t\t.select-trigger:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.select-trigger .chevron {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttransition: transform 0.15s;\n\t\t\t}\n\n\t\t\t.select-trigger.open .chevron {\n\t\t\t\ttransform: rotate(180deg);\n\t\t\t}\n\n\t\t\t.select-option {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbackground: transparent;\n\t\t\t\ttext-align: left;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition: background 0.1s;\n\t\t\t}\n\n\t\t\t.select-option:hover {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 15%, transparent);\n\t\t\t}\n\n\t\t\t.select-option.selected {\n\t\t\t\tcolor: var(--dev-wallet-primary);\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t}\n\n\t\t\t.import-list {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 4px;\n\t\t\t\toverflow-y: auto;\n\t\t\t\tmax-height: 240px;\n\t\t\t\tmin-height: 60px;\n\t\t\t}\n\n\t\t\t.import-item {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 10px;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: left;\n\t\t\t\ttransition: border-color 0.15s;\n\t\t\t}\n\n\t\t\t.import-item:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item.selected {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 10%, var(--dev-wallet-secondary));\n\t\t\t}\n\n\t\t\t.import-item:disabled {\n\t\t\t\topacity: 0.5;\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\n\t\t\t.import-checkbox {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tborder: 2px solid var(--dev-wallet-border);\n\t\t\t\tflex-shrink: 0;\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: 10px;\n\t\t\t\tcolor: var(--dev-wallet-primary-foreground);\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.import-checkbox.checked {\n\t\t\t\tbackground: var(--dev-wallet-primary);\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item-info {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.import-item-label {\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.import-item-address {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\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.import-item-badge {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tpadding: 1px 6px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tletter-spacing: 0.3px;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.empty-state,\n\t\t\t.loading {\n\t\t\t\tpadding: 20px;\n\t\t\t}\n\n\t\t\t.actions {\n\t\t\t\tmargin-top: 16px;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tcolor: var(--dev-wallet-destructive);\n\t\t\t\tfont-size: 12px;\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\tadapters: SignerAdapter[] = [];\n\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@state()\n\tprivate _mode: 'create' | 'import' = 'create';\n\n\t@state()\n\tprivate _label = '';\n\n\t@state()\n\tprivate _selectedAdapterId = '';\n\n\t@state()\n\tprivate _creating = false;\n\n\t@state()\n\tprivate _error: string | null = null;\n\n\t@state()\n\tprivate _availableAccounts: AvailableAccount[] = [];\n\n\t@state()\n\tprivate _loadingImports = false;\n\n\t@state()\n\tprivate _dropdownOpen = false;\n\n\t@state()\n\tprivate _selectedImports = new Set<string>();\n\n\tget #creatableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter((a) => 'createAccount' in a && a.createAccount);\n\t}\n\n\tget #importableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\t// Skip adapters that require pairing but aren't paired yet\n\t\t\t\t(!isPairableAdapter(a) || a.isPaired),\n\t\t);\n\t}\n\n\tget #hasUnpairedImportableAdapters(): boolean {\n\t\treturn this.adapters.some(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\tisPairableAdapter(a) &&\n\t\t\t\t!a.isPaired,\n\t\t);\n\t}\n\n\toverride updated(changed: Map<string, unknown>) {\n\t\tif (changed.has('open')) {\n\t\t\tconst dialog = this.shadowRoot?.querySelector('dialog');\n\t\t\tif (this.open && dialog && !dialog.open) {\n\t\t\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\t\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\t\t\tif (canImport && !canCreate) {\n\t\t\t\t\tthis._mode = 'import';\n\t\t\t\t} else {\n\t\t\t\t\tthis._mode = 'create';\n\t\t\t\t}\n\t\t\t\tif (canImport) {\n\t\t\t\t\tthis.#loadAvailableAccounts();\n\t\t\t\t}\n\t\t\t\tdialog.showModal();\n\t\t\t} else if (!this.open && dialog?.open) {\n\t\t\t\tdialog.close();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\tconst showTabs = canCreate && canImport;\n\n\t\treturn html`\n\t\t\t<dialog part=\"dialog\" @cancel=${this.#handleDialogCancel}>\n\t\t\t\t<div class=\"dialog-title\">Add Account</div>\n\t\t\t\t${showTabs\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"tabs\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'create' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'create')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'import' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'import')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tImport\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t\t${this._mode === 'create' ? this.#renderCreateForm() : this.#renderImportList()}\n\t\t\t\t${this._error\n\t\t\t\t\t? html`<div class=\"error\" part=\"error-message\">${this._error}</div>`\n\t\t\t\t\t: nothing}\n\t\t\t</dialog>\n\t\t`;\n\t}\n\n\t#handleDialogCancel(e: Event) {\n\t\te.preventDefault();\n\t\tif (!this._creating) {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#renderCreateForm() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tconst showPicker = creatableAdapters.length > 1;\n\n\t\tconst selectedAdapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\n\t\treturn html`\n\t\t\t${showPicker\n\t\t\t\t? html`\n\t\t\t\t\t\t<div class=\"field\">\n\t\t\t\t\t\t\t<label class=\"field-label\">Type</label>\n\t\t\t\t\t\t\t<dev-wallet-dropdown\n\t\t\t\t\t\t\t\tfull-width\n\t\t\t\t\t\t\t\t.open=${this._dropdownOpen}\n\t\t\t\t\t\t\t\t@close=${() => (this._dropdownOpen = false)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\t\t\tclass=\"select-trigger ${this._dropdownOpen ? 'open' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._dropdownOpen = !this._dropdownOpen)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>${selectedAdapter?.name ?? 'Select...'}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"chevron\">▼</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t\t\t\t\t${creatableAdapters.map(\n\t\t\t\t\t\t\t\t\t\t(a) => html`\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"select-option ${a.id === (selectedAdapter?.id ?? '')\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._selectedAdapterId = a.id;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._dropdownOpen = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = null;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${a.name}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</dev-wallet-dropdown>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t: nothing}\n\t\t\t<div class=\"field\">\n\t\t\t\t<label class=\"field-label\">Label</label>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"field-input\"\n\t\t\t\t\tpart=\"label-input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"e.g. Test Account\"\n\t\t\t\t\t.value=${this._label}\n\t\t\t\t\t@input=${this.#handleLabelInput}\n\t\t\t\t\t@keydown=${this.#handleKeydown}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t@click=${this.#handleCreate}\n\t\t\t\t>\n\t\t\t\t\t${this._creating ? 'Creating...' : 'Create'}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#renderImportList() {\n\t\tif (this._loadingImports) {\n\t\t\treturn html`<div class=\"loading\">Loading accounts...</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\tif (this._availableAccounts.length === 0) {\n\t\t\treturn html`<div class=\"empty-state\">\n\t\t\t\t\t${this.#hasUnpairedImportableAdapters\n\t\t\t\t\t\t? 'Open the token URL from your terminal to connect CLI accounts.'\n\t\t\t\t\t\t: 'No accounts available to import'}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"import-list\">\n\t\t\t\t${this._availableAccounts.map((account) => {\n\t\t\t\t\tconst selected = this._selectedImports.has(account.address);\n\t\t\t\t\treturn html`\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"import-item ${selected ? 'selected' : ''}\"\n\t\t\t\t\t\t\trole=\"checkbox\"\n\t\t\t\t\t\t\taria-checked=\"${selected}\"\n\t\t\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t\t\t@click=${() => this.#toggleImportSelection(account.address)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"import-checkbox ${selected ? 'checked' : ''}\"\n\t\t\t\t\t\t\t\t>${selected ? '✓' : ''}</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"import-item-info\">\n\t\t\t\t\t\t\t\t<div class=\"import-item-label\">\n\t\t\t\t\t\t\t\t\t${account.alias || formatAddress(account.address)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"import-item-address\">${formatAddress(account.address)}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"import-item-badge\">${account.scheme}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t`;\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating || this._selectedImports.size === 0}\n\t\t\t\t\t@click=${this.#handleImportSelected}\n\t\t\t\t>\n\t\t\t\t\t${this._creating\n\t\t\t\t\t\t? 'Importing...'\n\t\t\t\t\t\t: `Import${this._selectedImports.size > 0 ? ` (${this._selectedImports.size})` : ''}`}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync #loadAvailableAccounts() {\n\t\tthis._loadingImports = true;\n\t\tthis._availableAccounts = [];\n\n\t\ttry {\n\t\t\tconst results: AvailableAccount[] = [];\n\t\t\tfor (const adapter of this.#importableAdapters) {\n\t\t\t\tconst accounts = await adapter.listAvailableAccounts!();\n\t\t\t\tfor (const account of accounts) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tadapterId: adapter.id,\n\t\t\t\t\t\tadapterName: adapter.name,\n\t\t\t\t\t\taddress: account.address,\n\t\t\t\t\t\tscheme: account.scheme,\n\t\t\t\t\t\talias: 'alias' in account ? (account.alias as string | null) : null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._availableAccounts = results;\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to load accounts');\n\t\t} finally {\n\t\t\tthis._loadingImports = false;\n\t\t}\n\t}\n\n\t#handleLabelInput(e: InputEvent) {\n\t\tthis._label = (e.target as HTMLInputElement).value;\n\t\tthis._error = null;\n\t}\n\n\t#handleKeydown(e: KeyboardEvent) {\n\t\tif (e.key === 'Enter' && !this._creating) {\n\t\t\tthis.#handleCreate();\n\t\t} else if (e.key === 'Escape') {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#handleCancel() {\n\t\tthis.#close();\n\t}\n\n\tasync #handleCreate() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tif (creatableAdapters.length === 0) return;\n\n\t\tconst adapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\t\tif (!adapter?.createAccount) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tconst options: Record<string, unknown> = {};\n\t\t\tif (this._label.trim()) {\n\t\t\t\toptions.label = this._label.trim();\n\t\t\t}\n\t\t\tawait adapter.createAccount(options);\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to create account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#toggleImportSelection(address: string) {\n\t\tthis._selectedImports = toggleSetItem(this._selectedImports, address);\n\t}\n\n\tasync #handleImportSelected() {\n\t\tconst selected = this._availableAccounts.filter((a) => this._selectedImports.has(a.address));\n\t\tif (selected.length === 0) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tfor (const account of selected) {\n\t\t\t\tconst adapter = this.#importableAdapters.find((a) => a.id === account.adapterId);\n\t\t\t\tif (!adapter?.importAccount) continue;\n\t\t\t\tawait adapter.importAccount({ address: account.address });\n\t\t\t}\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to import account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#close() {\n\t\tthis._label = '';\n\t\tthis._selectedAdapterId = '';\n\t\tthis._error = null;\n\t\tthis._availableAccounts = [];\n\t\tthis._selectedImports = new Set();\n\t\tthis._mode = 'create';\n\t\tthis._dropdownOpen = false;\n\t\t// Don't mutate `this.open` — let the parent control it via the `close` event\n\t\temitEvent(this, 'close');\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-new-account': DevWalletNewAccount;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dev-wallet-new-account.mjs","names":["#creatableAdapters","#importableAdapters","#hasUnpairedImportableAdapters","#loadAvailableAccounts","#handleDialogCancel","#renderCreateForm","#renderImportList","#close","#handleLabelInput","#handleKeydown","#handleCancel","#handleCreate","#toggleImportSelection","#handleImportSelected"],"sources":["../../src/ui/dev-wallet-new-account.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { SignerAdapter } from '../types.js';\nimport {\n\tactionButtonStyles,\n\tbadgeStyles,\n\tcardItemStyles,\n\tdialogStyles,\n\tformInputStyles,\n\tinlineErrorStyles,\n\tlistContainerStyles,\n\tmonoTruncateStyles,\n\tsharedStyles,\n\tsubLabelStyles,\n\tstateStyles,\n} from './styles.js';\nimport {\n\temitEvent,\n\tformatAddress,\n\tgetErrorMessage,\n\tisPairableAdapter,\n\ttoggleSetItem,\n} from './utils.js';\nimport './dev-wallet-dropdown.js';\n\ninterface AvailableAccount {\n\tadapterId: string;\n\tadapterName: string;\n\taddress: string;\n\tscheme: string;\n\talias?: string | null;\n}\n\n@customElement('dev-wallet-new-account')\nexport class DevWalletNewAccount extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tactionButtonStyles,\n\t\tstateStyles,\n\t\tdialogStyles,\n\t\tcardItemStyles,\n\t\tlistContainerStyles,\n\t\tformInputStyles,\n\t\tmonoTruncateStyles,\n\t\tbadgeStyles,\n\t\tinlineErrorStyles,\n\t\tsubLabelStyles,\n\t\tcss`\n\t\t\tdialog {\n\t\t\t\twidth: 320px;\n\t\t\t\tmax-height: min(420px, 80vh);\n\t\t\t\tpadding: 20px;\n\t\t\t}\n\n\t\t\t.tabs {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tpadding: 3px;\n\t\t\t}\n\n\t\t\t.tab {\n\t\t\t\tflex: 1;\n\t\t\t\tpadding: 6px 12px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttext-align: center;\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.tab.active {\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbox-shadow: var(--dev-wallet-shadow-sm);\n\t\t\t}\n\n\t\t\t.tab:not(.active):hover {\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.field {\n\t\t\t\tmargin-bottom: 12px;\n\t\t\t}\n\n\t\t\t.field-input {\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tfont-size: 14px;\n\t\t\t}\n\n\t\t\t.field-input:focus {\n\t\t\t\toutline: 2px solid color-mix(in oklab, var(--dev-wallet-ring) 50%, transparent);\n\t\t\t\toutline-offset: -1px;\n\t\t\t}\n\n\t\t\t.select-trigger {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-align: left;\n\t\t\t}\n\n\t\t\t.select-trigger:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.select-trigger .chevron {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttransition: transform 0.15s;\n\t\t\t}\n\n\t\t\t.select-trigger.open .chevron {\n\t\t\t\ttransform: rotate(180deg);\n\t\t\t}\n\n\t\t\t.select-option {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbackground: transparent;\n\t\t\t\ttext-align: left;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition: background 0.1s;\n\t\t\t}\n\n\t\t\t.select-option:hover {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 15%, transparent);\n\t\t\t}\n\n\t\t\t.select-option.selected {\n\t\t\t\tcolor: var(--dev-wallet-primary);\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t}\n\n\t\t\t.import-list {\n\t\t\t\toverflow-y: auto;\n\t\t\t\tmax-height: 240px;\n\t\t\t\tmin-height: 60px;\n\t\t\t}\n\n\t\t\t.import-item {\n\t\t\t\tgap: 10px;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: left;\n\t\t\t\ttransition: border-color 0.15s;\n\t\t\t}\n\n\t\t\t.import-item:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item.selected {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 10%, var(--dev-wallet-secondary));\n\t\t\t}\n\n\t\t\t.import-item:disabled {\n\t\t\t\topacity: 0.5;\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\n\t\t\t.import-checkbox {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tborder: 2px solid var(--dev-wallet-border);\n\t\t\t\tflex-shrink: 0;\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: 10px;\n\t\t\t\tcolor: var(--dev-wallet-primary-foreground);\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.import-checkbox.checked {\n\t\t\t\tbackground: var(--dev-wallet-primary);\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item-info {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.import-item-label {\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.import-item-address {\n\t\t\t\tfont-size: 11px;\n\t\t\t}\n\n\t\t\t.import-item-badge {\n\t\t\t\tpadding: 1px 6px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tletter-spacing: 0.3px;\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.empty-state,\n\t\t\t.loading {\n\t\t\t\tpadding: 20px;\n\t\t\t}\n\n\t\t\t.actions {\n\t\t\t\tmargin-top: 16px;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\tadapters: SignerAdapter[] = [];\n\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@state()\n\tprivate _mode: 'create' | 'import' = 'create';\n\n\t@state()\n\tprivate _label = '';\n\n\t@state()\n\tprivate _selectedAdapterId = '';\n\n\t@state()\n\tprivate _creating = false;\n\n\t@state()\n\tprivate _error: string | null = null;\n\n\t@state()\n\tprivate _availableAccounts: AvailableAccount[] = [];\n\n\t@state()\n\tprivate _loadingImports = false;\n\n\t@state()\n\tprivate _dropdownOpen = false;\n\n\t@state()\n\tprivate _selectedImports = new Set<string>();\n\n\tget #creatableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter((a) => 'createAccount' in a && a.createAccount);\n\t}\n\n\tget #importableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\t// Skip adapters that require pairing but aren't paired yet\n\t\t\t\t(!isPairableAdapter(a) || a.isPaired),\n\t\t);\n\t}\n\n\tget #hasUnpairedImportableAdapters(): boolean {\n\t\treturn this.adapters.some(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\tisPairableAdapter(a) &&\n\t\t\t\t!a.isPaired,\n\t\t);\n\t}\n\n\toverride updated(changed: Map<string, unknown>) {\n\t\tif (changed.has('open')) {\n\t\t\tconst dialog = this.shadowRoot?.querySelector('dialog');\n\t\t\tif (this.open && dialog && !dialog.open) {\n\t\t\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\t\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\t\t\tif (canImport && !canCreate) {\n\t\t\t\t\tthis._mode = 'import';\n\t\t\t\t} else {\n\t\t\t\t\tthis._mode = 'create';\n\t\t\t\t}\n\t\t\t\tif (canImport) {\n\t\t\t\t\tthis.#loadAvailableAccounts();\n\t\t\t\t}\n\t\t\t\tdialog.showModal();\n\t\t\t} else if (!this.open && dialog?.open) {\n\t\t\t\tdialog.close();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\tconst showTabs = canCreate && canImport;\n\n\t\treturn html`\n\t\t\t<dialog part=\"dialog\" @cancel=${this.#handleDialogCancel}>\n\t\t\t\t<div class=\"dialog-title\">Add Account</div>\n\t\t\t\t${showTabs\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"tabs\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'create' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'create')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'import' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'import')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tImport\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t\t${this._mode === 'create' ? this.#renderCreateForm() : this.#renderImportList()}\n\t\t\t\t${this._error\n\t\t\t\t\t? html`<div class=\"error\" part=\"error-message\">${this._error}</div>`\n\t\t\t\t\t: nothing}\n\t\t\t</dialog>\n\t\t`;\n\t}\n\n\t#handleDialogCancel(e: Event) {\n\t\te.preventDefault();\n\t\tif (!this._creating) {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#renderCreateForm() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tconst showPicker = creatableAdapters.length > 1;\n\n\t\tconst selectedAdapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\n\t\treturn html`\n\t\t\t${showPicker\n\t\t\t\t? html`\n\t\t\t\t\t\t<div class=\"field\">\n\t\t\t\t\t\t\t<label class=\"field-label\">Type</label>\n\t\t\t\t\t\t\t<dev-wallet-dropdown\n\t\t\t\t\t\t\t\tfull-width\n\t\t\t\t\t\t\t\t.open=${this._dropdownOpen}\n\t\t\t\t\t\t\t\t@close=${() => (this._dropdownOpen = false)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\t\t\tclass=\"select-trigger ${this._dropdownOpen ? 'open' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._dropdownOpen = !this._dropdownOpen)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>${selectedAdapter?.name ?? 'Select...'}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"chevron\">▼</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t\t\t\t\t${creatableAdapters.map(\n\t\t\t\t\t\t\t\t\t\t(a) => html`\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"select-option ${a.id === (selectedAdapter?.id ?? '')\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._selectedAdapterId = a.id;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._dropdownOpen = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = null;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${a.name}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</dev-wallet-dropdown>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t: nothing}\n\t\t\t<div class=\"field\">\n\t\t\t\t<label class=\"field-label\">Label</label>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"field-input\"\n\t\t\t\t\tpart=\"label-input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"e.g. Test Account\"\n\t\t\t\t\t.value=${this._label}\n\t\t\t\t\t@input=${this.#handleLabelInput}\n\t\t\t\t\t@keydown=${this.#handleKeydown}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t@click=${this.#handleCreate}\n\t\t\t\t>\n\t\t\t\t\t${this._creating ? 'Creating...' : 'Create'}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#renderImportList() {\n\t\tif (this._loadingImports) {\n\t\t\treturn html`<div class=\"loading\">Loading accounts...</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\tif (this._availableAccounts.length === 0) {\n\t\t\treturn html`<div class=\"empty-state\">\n\t\t\t\t\t${this.#hasUnpairedImportableAdapters\n\t\t\t\t\t\t? 'Open the token URL from your terminal to connect CLI accounts.'\n\t\t\t\t\t\t: 'No accounts available to import'}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"import-list\">\n\t\t\t\t${this._availableAccounts.map((account) => {\n\t\t\t\t\tconst selected = this._selectedImports.has(account.address);\n\t\t\t\t\treturn html`\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"import-item ${selected ? 'selected' : ''}\"\n\t\t\t\t\t\t\trole=\"checkbox\"\n\t\t\t\t\t\t\taria-checked=\"${selected}\"\n\t\t\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t\t\t@click=${() => this.#toggleImportSelection(account.address)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"import-checkbox ${selected ? 'checked' : ''}\"\n\t\t\t\t\t\t\t\t>${selected ? '✓' : ''}</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"import-item-info\">\n\t\t\t\t\t\t\t\t<div class=\"import-item-label\">\n\t\t\t\t\t\t\t\t\t${account.alias || formatAddress(account.address)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"import-item-address\">${formatAddress(account.address)}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"import-item-badge\">${account.scheme}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t`;\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating || this._selectedImports.size === 0}\n\t\t\t\t\t@click=${this.#handleImportSelected}\n\t\t\t\t>\n\t\t\t\t\t${this._creating\n\t\t\t\t\t\t? 'Importing...'\n\t\t\t\t\t\t: `Import${this._selectedImports.size > 0 ? ` (${this._selectedImports.size})` : ''}`}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync #loadAvailableAccounts() {\n\t\tthis._loadingImports = true;\n\t\tthis._availableAccounts = [];\n\n\t\ttry {\n\t\t\tconst results: AvailableAccount[] = [];\n\t\t\tfor (const adapter of this.#importableAdapters) {\n\t\t\t\tconst accounts = await adapter.listAvailableAccounts!();\n\t\t\t\tfor (const account of accounts) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tadapterId: adapter.id,\n\t\t\t\t\t\tadapterName: adapter.name,\n\t\t\t\t\t\taddress: account.address,\n\t\t\t\t\t\tscheme: account.scheme,\n\t\t\t\t\t\talias: 'alias' in account ? (account.alias as string | null) : null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._availableAccounts = results;\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to load accounts');\n\t\t} finally {\n\t\t\tthis._loadingImports = false;\n\t\t}\n\t}\n\n\t#handleLabelInput(e: InputEvent) {\n\t\tthis._label = (e.target as HTMLInputElement).value;\n\t\tthis._error = null;\n\t}\n\n\t#handleKeydown(e: KeyboardEvent) {\n\t\tif (e.key === 'Enter' && !this._creating) {\n\t\t\tthis.#handleCreate();\n\t\t} else if (e.key === 'Escape') {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#handleCancel() {\n\t\tthis.#close();\n\t}\n\n\tasync #handleCreate() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tif (creatableAdapters.length === 0) return;\n\n\t\tconst adapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\t\tif (!adapter?.createAccount) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tconst options: Record<string, unknown> = {};\n\t\t\tif (this._label.trim()) {\n\t\t\t\toptions.label = this._label.trim();\n\t\t\t}\n\t\t\tawait adapter.createAccount(options);\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to create account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#toggleImportSelection(address: string) {\n\t\tthis._selectedImports = toggleSetItem(this._selectedImports, address);\n\t}\n\n\tasync #handleImportSelected() {\n\t\tconst selected = this._availableAccounts.filter((a) => this._selectedImports.has(a.address));\n\t\tif (selected.length === 0) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tfor (const account of selected) {\n\t\t\t\tconst adapter = this.#importableAdapters.find((a) => a.id === account.adapterId);\n\t\t\t\tif (!adapter?.importAccount) continue;\n\t\t\t\tawait adapter.importAccount({ address: account.address });\n\t\t\t}\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to import account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#close() {\n\t\tthis._label = '';\n\t\tthis._selectedAdapterId = '';\n\t\tthis._error = null;\n\t\tthis._availableAccounts = [];\n\t\tthis._selectedImports = new Set();\n\t\tthis._mode = 'create';\n\t\tthis._dropdownOpen = false;\n\t\t// Don't mutate `this.open` — let the parent control it via the `close` event\n\t\temitEvent(this, 'close');\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-new-account': DevWalletNewAccount;\n\t}\n}\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import * as lit20 from "lit";
1
+ import * as _$lit from "lit";
2
2
  import { LitElement, nothing } from "lit";
3
3
  import { ClientWithCoreApi } from "@mysten/sui/client";
4
4
 
5
5
  //#region src/ui/dev-wallet-objects.d.ts
6
6
  declare class DevWalletObjects extends LitElement {
7
7
  #private;
8
- static styles: (lit20.CSSResult | lit20.CSSResult[])[];
8
+ static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
9
9
  address: string;
10
10
  client: ClientWithCoreApi | null;
11
11
  private _objects;
@@ -14,7 +14,7 @@ declare class DevWalletObjects extends LitElement {
14
14
  private _error;
15
15
  private _hasNextPage;
16
16
  willUpdate(changedProperties: Map<string, unknown>): void;
17
- render(): typeof nothing | lit20.TemplateResult<1>;
17
+ render(): _$lit.TemplateResult<1> | typeof nothing;
18
18
  }
19
19
  declare global {
20
20
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-wallet-objects.d.mts","names":[],"sources":["../../src/ui/dev-wallet-objects.ts"],"mappings":";;;;;cAsBa,gBAAA,SAAyB,UAAA;EAAA;SACrB,MAAA,GADa,KAAA,CACP,SAAA,GAAA,KAAA,CAAA,SAAA;EAwHtB,OAAA;EAGA,MAAA,EAAQ,iBAAA;EAAA,QAGA,QAAA;EAAA,QAGA,QAAA;EAAA,QAGA,YAAA;EAAA,QAGA,MAAA;EAAA,QAGA,YAAA;EAQC,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAW9B,MAAA,CAAA,UAAM,OAAA,GAAA,KAAA,CAAA,cAAA;AAAA;AAAA,QAuJR,MAAA;EAAA,UACG,qBAAA;IACT,oBAAA,EAAsB,gBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"dev-wallet-objects.d.mts","names":[],"sources":["../../src/ui/dev-wallet-objects.ts"],"mappings":";;;;;cAsBa,gBAAA,SAAyB,UAAA;EAAA;SACrB,MAAA,GADa,KAAA,CACP,SAAA,GAAA,KAAA,CAAA,SAAA;EAgKtB,OAAA;EAGA,MAAA,EAAQ,iBAAA;EAAA,QAGA,QAAA;EAAA,QAGA,QAAA;EAAA,QAGA,YAAA;EAAA,QAGA,MAAA;EAAA,QAGA,YAAA;EAQC,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAW9B,MAAA,CAAA,GAXiC,KAAA,CAW3B,cAAA,aAAA,OAAA;AAAA;AAAA,QAuJR,MAAA;EAAA,UACG,qBAAA;IACT,oBAAA,EAAsB,gBAAA;EAAA;AAAA"}