@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.
- package/CHANGELOG.md +139 -0
- package/LICENSE +189 -0
- package/dist/_virtual/{_@oxc-project_runtime@0.107.0 → _@oxc-project_runtime@0.127.0}/helpers/decorate.mjs +2 -3
- package/dist/adapters/base-adapter.mjs +6 -7
- package/dist/adapters/base-adapter.mjs.map +1 -1
- package/dist/adapters/browser.d.mts +4 -1
- package/dist/adapters/browser.mjs +4 -2
- package/dist/adapters/build-managed-account.mjs +8 -10
- package/dist/adapters/build-managed-account.mjs.map +1 -1
- package/dist/adapters/devstack-adapter.d.mts +111 -0
- package/dist/adapters/devstack-adapter.d.mts.map +1 -0
- package/dist/adapters/devstack-adapter.mjs +224 -0
- package/dist/adapters/devstack-adapter.mjs.map +1 -0
- package/dist/adapters/devstack-paths.d.mts +11 -0
- package/dist/adapters/devstack-paths.d.mts.map +1 -0
- package/dist/adapters/devstack-paths.mjs +11 -0
- package/dist/adapters/devstack-paths.mjs.map +1 -0
- package/dist/adapters/fork-relay.d.mts +109 -0
- package/dist/adapters/fork-relay.d.mts.map +1 -0
- package/dist/adapters/fork-relay.mjs +208 -0
- package/dist/adapters/fork-relay.mjs.map +1 -0
- package/dist/adapters/idb-store.mjs +12 -16
- package/dist/adapters/idb-store.mjs.map +1 -1
- package/dist/adapters/in-memory-adapter.mjs +4 -10
- package/dist/adapters/in-memory-adapter.mjs.map +1 -1
- package/dist/adapters/passkey-adapter.mjs +4 -12
- package/dist/adapters/passkey-adapter.mjs.map +1 -1
- package/dist/adapters/remote-cli-adapter.mjs +37 -72
- package/dist/adapters/remote-cli-adapter.mjs.map +1 -1
- package/dist/adapters/webcrypto-adapter.mjs +2 -4
- package/dist/adapters/webcrypto-adapter.mjs.map +1 -1
- package/dist/bin/cli.mjs +9 -22
- package/dist/bin/cli.mjs.map +1 -1
- package/dist/client/dev-wallet-client.mjs +13 -28
- package/dist/client/dev-wallet-client.mjs.map +1 -1
- package/dist/client/index.mjs +1 -2
- package/dist/client/request-handler.mjs +36 -42
- package/dist/client/request-handler.mjs.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/react/components.d.mts +9 -9
- package/dist/react/components.d.mts.map +1 -1
- package/dist/react/components.mjs +2 -5
- package/dist/react/components.mjs.map +1 -1
- package/dist/react/context.d.mts +3 -3
- package/dist/react/context.d.mts.map +1 -1
- package/dist/react/context.mjs +3 -8
- package/dist/react/context.mjs.map +1 -1
- package/dist/react/index.mjs +1 -2
- package/dist/react/useDevWallet.d.mts +3 -0
- package/dist/react/useDevWallet.d.mts.map +1 -1
- package/dist/react/useDevWallet.mjs +9 -14
- package/dist/react/useDevWallet.mjs.map +1 -1
- package/dist/server/cli-signing-middleware.mjs +7 -20
- package/dist/server/cli-signing-middleware.mjs.map +1 -1
- package/dist/server/index.mjs +1 -2
- package/dist/standalone/assets/{in-memory-adapter-CBF4h2KD.js → in-memory-adapter-qRkNfj9O.js} +1 -1
- package/dist/standalone/assets/main-DDltQnzR.js +3954 -0
- package/dist/standalone/assets/{webcrypto-adapter-DysAubFb.js → webcrypto-adapter-FejcrL9x.js} +1 -1
- package/dist/standalone/index.html +11 -12
- package/dist/ui/copy-controller.mjs +3 -3
- package/dist/ui/copy-controller.mjs.map +1 -1
- package/dist/ui/dev-wallet-account-selector.d.mts +3 -4
- package/dist/ui/dev-wallet-account-selector.d.mts.map +1 -1
- package/dist/ui/dev-wallet-account-selector.mjs +48 -25
- package/dist/ui/dev-wallet-account-selector.mjs.map +1 -1
- package/dist/ui/dev-wallet-accounts.d.mts +9 -4
- package/dist/ui/dev-wallet-accounts.d.mts.map +1 -1
- package/dist/ui/dev-wallet-accounts.mjs +62 -140
- package/dist/ui/dev-wallet-accounts.mjs.map +1 -1
- package/dist/ui/dev-wallet-balances.d.mts +10 -3
- package/dist/ui/dev-wallet-balances.d.mts.map +1 -1
- package/dist/ui/dev-wallet-balances.mjs +241 -43
- package/dist/ui/dev-wallet-balances.mjs.map +1 -1
- package/dist/ui/dev-wallet-connect.d.mts +3 -3
- package/dist/ui/dev-wallet-connect.d.mts.map +1 -1
- package/dist/ui/dev-wallet-connect.mjs +24 -16
- package/dist/ui/dev-wallet-connect.mjs.map +1 -1
- package/dist/ui/dev-wallet-dropdown.d.mts +3 -3
- package/dist/ui/dev-wallet-dropdown.d.mts.map +1 -1
- package/dist/ui/dev-wallet-dropdown.mjs +37 -47
- package/dist/ui/dev-wallet-dropdown.mjs.map +1 -1
- package/dist/ui/dev-wallet-fork-panel.d.mts +43 -0
- package/dist/ui/dev-wallet-fork-panel.d.mts.map +1 -0
- package/dist/ui/dev-wallet-fork-panel.mjs +500 -0
- package/dist/ui/dev-wallet-fork-panel.mjs.map +1 -0
- package/dist/ui/dev-wallet-network-badge.d.mts +3 -4
- package/dist/ui/dev-wallet-network-badge.d.mts.map +1 -1
- package/dist/ui/dev-wallet-network-badge.mjs +52 -21
- package/dist/ui/dev-wallet-network-badge.mjs.map +1 -1
- package/dist/ui/dev-wallet-new-account.d.mts +3 -4
- package/dist/ui/dev-wallet-new-account.d.mts.map +1 -1
- package/dist/ui/dev-wallet-new-account.mjs +31 -105
- package/dist/ui/dev-wallet-new-account.mjs.map +1 -1
- package/dist/ui/dev-wallet-objects.d.mts +3 -3
- package/dist/ui/dev-wallet-objects.d.mts.map +1 -1
- package/dist/ui/dev-wallet-objects.mjs +76 -39
- package/dist/ui/dev-wallet-objects.mjs.map +1 -1
- package/dist/ui/dev-wallet-panel.d.mts +24 -4
- package/dist/ui/dev-wallet-panel.d.mts.map +1 -1
- package/dist/ui/dev-wallet-panel.mjs +247 -64
- package/dist/ui/dev-wallet-panel.mjs.map +1 -1
- package/dist/ui/dev-wallet-popup.d.mts +3 -5
- package/dist/ui/dev-wallet-popup.d.mts.map +1 -1
- package/dist/ui/dev-wallet-popup.mjs +19 -15
- package/dist/ui/dev-wallet-popup.mjs.map +1 -1
- package/dist/ui/dev-wallet-settings.d.mts +3 -4
- package/dist/ui/dev-wallet-settings.d.mts.map +1 -1
- package/dist/ui/dev-wallet-settings.mjs +149 -97
- package/dist/ui/dev-wallet-settings.mjs.map +1 -1
- package/dist/ui/dev-wallet-signing-modal.d.mts +11 -4
- package/dist/ui/dev-wallet-signing-modal.d.mts.map +1 -1
- package/dist/ui/dev-wallet-signing-modal.mjs +46 -18
- package/dist/ui/dev-wallet-signing-modal.mjs.map +1 -1
- package/dist/ui/dev-wallet-signing.d.mts +9 -3
- package/dist/ui/dev-wallet-signing.d.mts.map +1 -1
- package/dist/ui/dev-wallet-signing.mjs +119 -130
- package/dist/ui/dev-wallet-signing.mjs.map +1 -1
- package/dist/ui/dev-wallet-standalone.d.mts +8 -3
- package/dist/ui/dev-wallet-standalone.d.mts.map +1 -1
- package/dist/ui/dev-wallet-standalone.mjs +303 -38
- package/dist/ui/dev-wallet-standalone.mjs.map +1 -1
- package/dist/ui/dev-wallet-tab-bar.d.mts +13 -5
- package/dist/ui/dev-wallet-tab-bar.d.mts.map +1 -1
- package/dist/ui/dev-wallet-tab-bar.mjs +143 -82
- package/dist/ui/dev-wallet-tab-bar.mjs.map +1 -1
- package/dist/ui/index.d.mts +3 -2
- package/dist/ui/index.mjs +2 -2
- package/dist/ui/mount.d.mts +14 -1
- package/dist/ui/mount.d.mts.map +1 -1
- package/dist/ui/mount.mjs +5 -2
- package/dist/ui/mount.mjs.map +1 -1
- package/dist/ui/styles.mjs +428 -66
- package/dist/ui/styles.mjs.map +1 -1
- package/dist/ui/transaction-analyzer.mjs +19 -30
- package/dist/ui/transaction-analyzer.mjs.map +1 -1
- package/dist/ui/utils.d.mts +59 -0
- package/dist/ui/utils.d.mts.map +1 -0
- package/dist/ui/utils.mjs +42 -15
- package/dist/ui/utils.mjs.map +1 -1
- package/dist/ui/wallet-controller.mjs +89 -20
- package/dist/ui/wallet-controller.mjs.map +1 -1
- package/dist/wallet/constants.d.mts +9 -0
- package/dist/wallet/constants.d.mts.map +1 -0
- package/dist/wallet/constants.mjs +1 -1
- package/dist/wallet/dev-wallet.mjs +42 -99
- package/dist/wallet/dev-wallet.mjs.map +1 -1
- package/dist/wallet/initializer.d.mts +3 -0
- package/dist/wallet/initializer.d.mts.map +1 -1
- package/dist/wallet/initializer.mjs +9 -14
- package/dist/wallet/initializer.mjs.map +1 -1
- package/dist/wallet/signing.mjs +8 -21
- package/dist/wallet/signing.mjs.map +1 -1
- package/package.json +8 -6
- package/src/adapters/browser.ts +21 -0
- package/src/adapters/devstack-adapter.ts +342 -0
- package/src/adapters/devstack-paths.ts +15 -0
- package/src/adapters/fork-relay.ts +321 -0
- package/src/app/index.html +10 -11
- package/src/react/useDevWallet.ts +5 -1
- package/src/ui/dev-wallet-account-selector.ts +44 -17
- package/src/ui/dev-wallet-accounts.ts +87 -124
- package/src/ui/dev-wallet-balances.ts +248 -27
- package/src/ui/dev-wallet-connect.ts +19 -8
- package/src/ui/dev-wallet-dropdown.ts +7 -5
- package/src/ui/dev-wallet-fork-panel.ts +591 -0
- package/src/ui/dev-wallet-network-badge.ts +49 -10
- package/src/ui/dev-wallet-new-account.ts +21 -62
- package/src/ui/dev-wallet-objects.ts +59 -19
- package/src/ui/dev-wallet-panel.ts +261 -42
- package/src/ui/dev-wallet-popup.ts +12 -6
- package/src/ui/dev-wallet-settings.ts +159 -94
- package/src/ui/dev-wallet-signing-modal.ts +47 -7
- package/src/ui/dev-wallet-signing.ts +124 -97
- package/src/ui/dev-wallet-standalone.ts +310 -22
- package/src/ui/dev-wallet-tab-bar.ts +132 -70
- package/src/ui/index.ts +3 -0
- package/src/ui/mount.ts +23 -1
- package/src/ui/styles.ts +434 -58
- package/src/ui/utils.ts +66 -0
- package/src/ui/wallet-controller.ts +103 -5
- package/src/wallet/initializer.ts +7 -1
- package/dist/standalone/assets/main-VE4olb-Q.js +0 -2841
|
@@ -7,7 +7,17 @@ import { customElement, property, state } from 'lit/decorators.js';
|
|
|
7
7
|
|
|
8
8
|
import type { DevWallet } from '../wallet/dev-wallet.js';
|
|
9
9
|
import type { SignerAdapter } from '../types.js';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
badgeStyles,
|
|
12
|
+
cardItemStyles,
|
|
13
|
+
formInputStyles,
|
|
14
|
+
iconButtonStyles,
|
|
15
|
+
inlineErrorStyles,
|
|
16
|
+
listContainerStyles,
|
|
17
|
+
monoTruncateStyles,
|
|
18
|
+
sectionHeaderStyles,
|
|
19
|
+
sharedStyles,
|
|
20
|
+
} from './styles.js';
|
|
11
21
|
import { emitEvent, formatAddress, getErrorMessage, NETWORK_COLORS } from './utils.js';
|
|
12
22
|
import './dev-wallet-accounts.js';
|
|
13
23
|
|
|
@@ -16,37 +26,66 @@ export class DevWalletSettings extends LitElement {
|
|
|
16
26
|
static override styles = [
|
|
17
27
|
sharedStyles,
|
|
18
28
|
sectionHeaderStyles,
|
|
29
|
+
cardItemStyles,
|
|
30
|
+
listContainerStyles,
|
|
31
|
+
formInputStyles,
|
|
32
|
+
iconButtonStyles,
|
|
33
|
+
badgeStyles,
|
|
34
|
+
inlineErrorStyles,
|
|
35
|
+
monoTruncateStyles,
|
|
19
36
|
css`
|
|
20
37
|
:host {
|
|
21
38
|
display: block;
|
|
39
|
+
padding: 14px;
|
|
22
40
|
}
|
|
23
41
|
|
|
24
42
|
.section {
|
|
25
|
-
margin-bottom:
|
|
43
|
+
margin-bottom: 10px;
|
|
44
|
+
padding: 12px;
|
|
45
|
+
border: 1px solid var(--dev-wallet-border);
|
|
46
|
+
border-radius: var(--dev-wallet-radius-lg);
|
|
47
|
+
background: var(--dev-wallet-surface);
|
|
26
48
|
}
|
|
27
49
|
|
|
28
50
|
.section:last-child {
|
|
29
51
|
margin-bottom: 0;
|
|
30
52
|
}
|
|
31
53
|
|
|
32
|
-
.
|
|
33
|
-
display:
|
|
34
|
-
|
|
35
|
-
gap:
|
|
54
|
+
.settings-summary {
|
|
55
|
+
display: grid;
|
|
56
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
57
|
+
gap: 8px;
|
|
36
58
|
}
|
|
37
59
|
|
|
38
|
-
.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
padding: 8px 12px;
|
|
43
|
-
border-radius: var(--dev-wallet-radius-sm);
|
|
60
|
+
.summary-cell {
|
|
61
|
+
min-width: 0;
|
|
62
|
+
padding: 10px;
|
|
63
|
+
border-radius: var(--dev-wallet-radius);
|
|
44
64
|
border: 1px solid var(--dev-wallet-border);
|
|
45
|
-
background: var(--dev-wallet-
|
|
65
|
+
background: var(--dev-wallet-bg-0);
|
|
46
66
|
}
|
|
47
67
|
|
|
48
|
-
.
|
|
49
|
-
|
|
68
|
+
.summary-label {
|
|
69
|
+
font-family: var(--dev-wallet-font-mono);
|
|
70
|
+
font-size: 9.5px;
|
|
71
|
+
text-transform: uppercase;
|
|
72
|
+
letter-spacing: 0.12em;
|
|
73
|
+
color: var(--dev-wallet-text-3);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.summary-value {
|
|
77
|
+
margin-top: 5px;
|
|
78
|
+
font-size: 12px;
|
|
79
|
+
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
80
|
+
color: var(--dev-wallet-foreground);
|
|
81
|
+
overflow: hidden;
|
|
82
|
+
text-overflow: ellipsis;
|
|
83
|
+
white-space: nowrap;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.network-item {
|
|
87
|
+
gap: 8px;
|
|
88
|
+
padding: 9px 10px;
|
|
50
89
|
}
|
|
51
90
|
|
|
52
91
|
.network-dot {
|
|
@@ -60,7 +99,7 @@ export class DevWalletSettings extends LitElement {
|
|
|
60
99
|
flex: 1;
|
|
61
100
|
font-size: 13px;
|
|
62
101
|
font-weight: var(--dev-wallet-font-weight-medium);
|
|
63
|
-
|
|
102
|
+
font-family: var(--dev-wallet-font-mono);
|
|
64
103
|
}
|
|
65
104
|
|
|
66
105
|
.network-info {
|
|
@@ -70,24 +109,15 @@ export class DevWalletSettings extends LitElement {
|
|
|
70
109
|
|
|
71
110
|
.network-url {
|
|
72
111
|
font-size: 10px;
|
|
73
|
-
color: var(--dev-wallet-muted-foreground);
|
|
74
|
-
font-family: var(--dev-wallet-font-mono);
|
|
75
|
-
overflow: hidden;
|
|
76
|
-
text-overflow: ellipsis;
|
|
77
|
-
white-space: nowrap;
|
|
78
112
|
}
|
|
79
113
|
|
|
80
114
|
.network-url-input {
|
|
81
|
-
width: 100%;
|
|
82
115
|
padding: 3px 6px;
|
|
83
116
|
border-radius: var(--dev-wallet-radius-xs);
|
|
84
117
|
border: 1px solid var(--dev-wallet-primary);
|
|
85
118
|
background: var(--dev-wallet-background);
|
|
86
|
-
color: var(--dev-wallet-foreground);
|
|
87
119
|
font-size: 10px;
|
|
88
120
|
font-family: var(--dev-wallet-font-mono);
|
|
89
|
-
outline: none;
|
|
90
|
-
box-sizing: border-box;
|
|
91
121
|
}
|
|
92
122
|
|
|
93
123
|
.network-actions {
|
|
@@ -99,17 +129,7 @@ export class DevWalletSettings extends LitElement {
|
|
|
99
129
|
.btn-icon {
|
|
100
130
|
width: 22px;
|
|
101
131
|
height: 22px;
|
|
102
|
-
display: flex;
|
|
103
|
-
align-items: center;
|
|
104
|
-
justify-content: center;
|
|
105
|
-
border-radius: var(--dev-wallet-radius-xs);
|
|
106
132
|
font-size: 11px;
|
|
107
|
-
color: var(--dev-wallet-muted-foreground);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.btn-icon:hover {
|
|
111
|
-
background: var(--dev-wallet-border);
|
|
112
|
-
color: var(--dev-wallet-foreground);
|
|
113
133
|
}
|
|
114
134
|
|
|
115
135
|
.btn-icon-danger:hover {
|
|
@@ -117,13 +137,15 @@ export class DevWalletSettings extends LitElement {
|
|
|
117
137
|
}
|
|
118
138
|
|
|
119
139
|
.network-active-badge {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
140
|
+
height: 16px;
|
|
141
|
+
display: inline-flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
padding: 0 5px;
|
|
144
|
+
border-radius: 999px;
|
|
145
|
+
border: 1px solid var(--dev-wallet-border-strong);
|
|
146
|
+
background: var(--dev-wallet-accent-fade);
|
|
124
147
|
color: var(--dev-wallet-primary);
|
|
125
148
|
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
126
|
-
text-transform: uppercase;
|
|
127
149
|
}
|
|
128
150
|
|
|
129
151
|
.add-network-form {
|
|
@@ -132,30 +154,17 @@ export class DevWalletSettings extends LitElement {
|
|
|
132
154
|
gap: 8px;
|
|
133
155
|
margin-top: 8px;
|
|
134
156
|
padding: 12px;
|
|
135
|
-
border-radius: var(--dev-wallet-radius-
|
|
157
|
+
border-radius: var(--dev-wallet-radius-lg);
|
|
136
158
|
border: 1px dashed var(--dev-wallet-border);
|
|
137
|
-
background: var(--dev-wallet-
|
|
159
|
+
background: var(--dev-wallet-surface);
|
|
138
160
|
}
|
|
139
161
|
|
|
140
162
|
.form-input {
|
|
141
|
-
width: 100%;
|
|
142
163
|
padding: 6px 8px;
|
|
143
|
-
border-radius: var(--dev-wallet-radius
|
|
164
|
+
border-radius: var(--dev-wallet-radius);
|
|
144
165
|
border: 1px solid var(--dev-wallet-input);
|
|
145
|
-
background: var(--dev-wallet-
|
|
146
|
-
color: var(--dev-wallet-foreground);
|
|
166
|
+
background: var(--dev-wallet-bg-2);
|
|
147
167
|
font-size: 12px;
|
|
148
|
-
font-family: inherit;
|
|
149
|
-
outline: none;
|
|
150
|
-
box-sizing: border-box;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
.form-input:focus {
|
|
154
|
-
border-color: var(--dev-wallet-primary);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
.form-input::placeholder {
|
|
158
|
-
color: var(--dev-wallet-muted-foreground);
|
|
159
168
|
}
|
|
160
169
|
|
|
161
170
|
.form-actions {
|
|
@@ -188,12 +197,16 @@ export class DevWalletSettings extends LitElement {
|
|
|
188
197
|
.btn-toggle {
|
|
189
198
|
font-size: 12px;
|
|
190
199
|
color: var(--dev-wallet-primary);
|
|
191
|
-
|
|
192
|
-
|
|
200
|
+
height: 30px;
|
|
201
|
+
padding: 0 10px;
|
|
202
|
+
margin-top: 8px;
|
|
203
|
+
border: 1px solid var(--dev-wallet-border);
|
|
204
|
+
border-radius: var(--dev-wallet-radius);
|
|
193
205
|
}
|
|
194
206
|
|
|
195
207
|
.btn-toggle:hover {
|
|
196
|
-
|
|
208
|
+
background: var(--dev-wallet-bg-hover);
|
|
209
|
+
border-color: var(--dev-wallet-border-strong);
|
|
197
210
|
}
|
|
198
211
|
|
|
199
212
|
.cli-section-column {
|
|
@@ -236,7 +249,6 @@ export class DevWalletSettings extends LitElement {
|
|
|
236
249
|
|
|
237
250
|
.error {
|
|
238
251
|
font-size: 11px;
|
|
239
|
-
color: var(--dev-wallet-destructive);
|
|
240
252
|
margin-top: 4px;
|
|
241
253
|
}
|
|
242
254
|
|
|
@@ -276,38 +288,74 @@ export class DevWalletSettings extends LitElement {
|
|
|
276
288
|
}
|
|
277
289
|
|
|
278
290
|
.console-snippet {
|
|
279
|
-
position: relative;
|
|
280
291
|
margin-top: 8px;
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
background: var(--dev-wallet-secondary);
|
|
292
|
+
border-radius: var(--dev-wallet-radius);
|
|
293
|
+
background: var(--dev-wallet-bg-0);
|
|
284
294
|
border: 1px solid var(--dev-wallet-border);
|
|
295
|
+
overflow: hidden;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.console-snippet-header {
|
|
299
|
+
display: flex;
|
|
300
|
+
align-items: center;
|
|
301
|
+
justify-content: space-between;
|
|
302
|
+
gap: 8px;
|
|
303
|
+
padding: 7px 8px 7px 10px;
|
|
304
|
+
border-bottom: 1px solid var(--dev-wallet-border);
|
|
305
|
+
background: color-mix(in srgb, var(--dev-wallet-bg-1) 72%, transparent);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.console-snippet-label {
|
|
309
|
+
font-family: var(--dev-wallet-font-mono);
|
|
310
|
+
font-size: 9.5px;
|
|
311
|
+
font-weight: var(--dev-wallet-font-weight-medium);
|
|
312
|
+
letter-spacing: 0.12em;
|
|
313
|
+
text-transform: uppercase;
|
|
314
|
+
color: var(--dev-wallet-text-3);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.console-snippet-code {
|
|
318
|
+
margin: 0;
|
|
319
|
+
max-width: 100%;
|
|
320
|
+
padding: 10px 12px 12px;
|
|
321
|
+
overflow-x: auto;
|
|
285
322
|
font-family: var(--dev-wallet-font-mono);
|
|
286
323
|
font-size: 11px;
|
|
287
324
|
color: var(--dev-wallet-foreground);
|
|
288
325
|
line-height: 1.5;
|
|
289
326
|
white-space: pre-wrap;
|
|
290
|
-
|
|
327
|
+
overflow-wrap: anywhere;
|
|
291
328
|
user-select: all;
|
|
292
329
|
}
|
|
293
330
|
|
|
294
331
|
.btn-copy {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
332
|
+
display: inline-flex;
|
|
333
|
+
align-items: center;
|
|
334
|
+
justify-content: center;
|
|
335
|
+
min-width: 54px;
|
|
336
|
+
height: 24px;
|
|
337
|
+
padding: 0 8px;
|
|
299
338
|
border-radius: var(--dev-wallet-radius-xs);
|
|
300
|
-
|
|
301
|
-
|
|
339
|
+
border: 1px solid var(--dev-wallet-border);
|
|
340
|
+
background: var(--dev-wallet-bg-2);
|
|
341
|
+
color: var(--dev-wallet-foreground);
|
|
302
342
|
font-size: 10px;
|
|
303
|
-
font-
|
|
343
|
+
font-weight: var(--dev-wallet-font-weight-medium);
|
|
304
344
|
cursor: pointer;
|
|
345
|
+
white-space: nowrap;
|
|
305
346
|
}
|
|
306
347
|
|
|
307
348
|
.btn-copy:hover {
|
|
308
|
-
background: var(--dev-wallet-
|
|
349
|
+
background: var(--dev-wallet-bg-hover);
|
|
350
|
+
border-color: var(--dev-wallet-border-strong);
|
|
309
351
|
color: var(--dev-wallet-foreground);
|
|
310
352
|
}
|
|
353
|
+
|
|
354
|
+
@media (max-width: 420px) {
|
|
355
|
+
.settings-summary {
|
|
356
|
+
grid-template-columns: 1fr;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
311
359
|
`,
|
|
312
360
|
];
|
|
313
361
|
|
|
@@ -349,13 +397,36 @@ export class DevWalletSettings extends LitElement {
|
|
|
349
397
|
|
|
350
398
|
override render() {
|
|
351
399
|
return html`
|
|
400
|
+
<div class="section">${this.#renderSummary()}</div>
|
|
352
401
|
<div class="section">${this.#renderNetworks()}</div>
|
|
353
402
|
${this.#hasCliAdapter()
|
|
354
403
|
? html`<div class="section">${this.#renderCliSigner()}</div>`
|
|
355
404
|
: nothing}
|
|
356
405
|
<div class="section">${this.#renderAccounts()}</div>
|
|
357
|
-
|
|
358
|
-
|
|
406
|
+
${this.bookmarkletOrigin
|
|
407
|
+
? html`<div class="section">${this.#renderBookmarklet()}</div>`
|
|
408
|
+
: nothing}
|
|
409
|
+
`;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
#renderSummary() {
|
|
413
|
+
const activeNetwork = this.wallet?.activeNetwork ?? 'none';
|
|
414
|
+
return html`
|
|
415
|
+
<h3 class="section-header">Wallet</h3>
|
|
416
|
+
<div class="settings-summary">
|
|
417
|
+
<div class="summary-cell">
|
|
418
|
+
<div class="summary-label">Network</div>
|
|
419
|
+
<div class="summary-value">${activeNetwork}</div>
|
|
420
|
+
</div>
|
|
421
|
+
<div class="summary-cell">
|
|
422
|
+
<div class="summary-label">Accounts</div>
|
|
423
|
+
<div class="summary-value">${this.accounts.length}</div>
|
|
424
|
+
</div>
|
|
425
|
+
<div class="summary-cell">
|
|
426
|
+
<div class="summary-label">Adapters</div>
|
|
427
|
+
<div class="summary-value">${this.adapters.length}</div>
|
|
428
|
+
</div>
|
|
429
|
+
</div>
|
|
359
430
|
`;
|
|
360
431
|
}
|
|
361
432
|
|
|
@@ -588,10 +659,18 @@ export class DevWalletSettings extends LitElement {
|
|
|
588
659
|
</div>
|
|
589
660
|
<div class="about" style="margin-top: 12px">Or paste this in the browser console:</div>
|
|
590
661
|
<div class="console-snippet">
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
662
|
+
<div class="console-snippet-header">
|
|
663
|
+
<span class="console-snippet-label">Console</span>
|
|
664
|
+
<button
|
|
665
|
+
class="btn-copy"
|
|
666
|
+
type="button"
|
|
667
|
+
aria-label="Copy console snippet"
|
|
668
|
+
@click=${() => this.#copySnippet(consoleSnippet)}
|
|
669
|
+
>
|
|
670
|
+
${this._copied ? 'Copied' : 'Copy'}
|
|
671
|
+
</button>
|
|
672
|
+
</div>
|
|
673
|
+
<pre class="console-snippet-code"><code>${consoleSnippet}</code></pre>
|
|
595
674
|
</div>
|
|
596
675
|
<div class="about" style="margin-top: 8px">
|
|
597
676
|
Or add this script to your page:<br />
|
|
@@ -609,20 +688,6 @@ export class DevWalletSettings extends LitElement {
|
|
|
609
688
|
});
|
|
610
689
|
}
|
|
611
690
|
|
|
612
|
-
#renderAbout() {
|
|
613
|
-
return html`
|
|
614
|
-
<h3 class="section-header">About</h3>
|
|
615
|
-
<div class="about">
|
|
616
|
-
<strong>${this.wallet?.name ?? 'Dev Wallet'}</strong><br />
|
|
617
|
-
A development wallet for testing Sui dApps.<br />
|
|
618
|
-
${this.wallet
|
|
619
|
-
? html`${this.wallet.accounts.length} account(s) across ${this.wallet.adapters.length}
|
|
620
|
-
adapter(s)`
|
|
621
|
-
: nothing}
|
|
622
|
-
</div>
|
|
623
|
-
`;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
691
|
#addNetwork() {
|
|
627
692
|
if (!this.wallet) return;
|
|
628
693
|
|
|
@@ -7,6 +7,7 @@ import { customElement, property } from 'lit/decorators.js';
|
|
|
7
7
|
|
|
8
8
|
import type { PendingSigningRequest } from '../wallet/dev-wallet.js';
|
|
9
9
|
import { sharedStyles } from './styles.js';
|
|
10
|
+
import type { CoinRecord } from './utils.js';
|
|
10
11
|
import { emitEvent } from './utils.js';
|
|
11
12
|
import './dev-wallet-signing.js';
|
|
12
13
|
|
|
@@ -24,37 +25,40 @@ export class DevWalletSigningModal extends LitElement {
|
|
|
24
25
|
css`
|
|
25
26
|
:host {
|
|
26
27
|
display: block;
|
|
28
|
+
pointer-events: auto;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
dialog {
|
|
30
|
-
width:
|
|
32
|
+
width: 440px;
|
|
31
33
|
max-width: calc(100vw - 32px);
|
|
32
|
-
max-height: min(
|
|
34
|
+
max-height: min(680px, 86vh);
|
|
33
35
|
border-radius: var(--dev-wallet-radius-xl);
|
|
34
|
-
background: var(--dev-wallet-
|
|
35
|
-
border: 1px solid var(--dev-wallet-border);
|
|
36
|
+
background: var(--dev-wallet-surface);
|
|
37
|
+
border: 1px solid var(--dev-wallet-border-2);
|
|
36
38
|
box-shadow: var(--dev-wallet-shadow-lg);
|
|
37
39
|
overflow: hidden;
|
|
38
40
|
display: flex;
|
|
39
41
|
flex-direction: column;
|
|
40
42
|
padding: 0;
|
|
41
43
|
color: inherit;
|
|
44
|
+
pointer-events: auto;
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
dialog::backdrop {
|
|
45
|
-
background:
|
|
48
|
+
background: rgba(2, 6, 14, 0.55);
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
.modal-header {
|
|
49
52
|
display: flex;
|
|
50
53
|
justify-content: space-between;
|
|
51
54
|
align-items: center;
|
|
52
|
-
padding: 14px
|
|
55
|
+
padding: 12px 14px;
|
|
53
56
|
border-bottom: 1px solid var(--dev-wallet-border);
|
|
57
|
+
background: var(--dev-wallet-bg-1);
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
.modal-title {
|
|
57
|
-
font-size:
|
|
61
|
+
font-size: 13px;
|
|
58
62
|
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
59
63
|
color: var(--dev-wallet-foreground);
|
|
60
64
|
}
|
|
@@ -65,6 +69,23 @@ export class DevWalletSigningModal extends LitElement {
|
|
|
65
69
|
display: flex;
|
|
66
70
|
flex-direction: column;
|
|
67
71
|
}
|
|
72
|
+
|
|
73
|
+
/* Phase 4 P4.19 — footnote rendered when the active account
|
|
74
|
+
is in fork-mode impersonation. Visually distinct so users
|
|
75
|
+
don't conflate this with a real signature flow. */
|
|
76
|
+
.fork-footnote {
|
|
77
|
+
padding: 8px 16px;
|
|
78
|
+
background: rgba(234, 179, 8, 0.12);
|
|
79
|
+
border-top: 1px solid rgba(234, 179, 8, 0.35);
|
|
80
|
+
font-size: 11px;
|
|
81
|
+
color: var(--dev-wallet-muted-foreground);
|
|
82
|
+
line-height: 1.4;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.fork-footnote strong {
|
|
86
|
+
color: #92400e;
|
|
87
|
+
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
88
|
+
}
|
|
68
89
|
`,
|
|
69
90
|
];
|
|
70
91
|
|
|
@@ -74,9 +95,20 @@ export class DevWalletSigningModal extends LitElement {
|
|
|
74
95
|
@property({ attribute: false })
|
|
75
96
|
client: ClientWithCoreApi | null = null;
|
|
76
97
|
|
|
98
|
+
/** Pre-seeded coin metadata forwarded to `<dev-wallet-signing>`. See
|
|
99
|
+
* the matching property on `DevWalletSigning` for details. */
|
|
100
|
+
@property({ attribute: false })
|
|
101
|
+
coins: CoinRecord | null = null;
|
|
102
|
+
|
|
77
103
|
@property({ type: String })
|
|
78
104
|
walletName = 'Dev Wallet';
|
|
79
105
|
|
|
106
|
+
/** Phase 4 P4.19 — when the active account's `source === 'impersonate'`,
|
|
107
|
+
* the parent flips this on and the modal renders a footnote
|
|
108
|
+
* explaining no real signature will be produced. */
|
|
109
|
+
@property({ type: Boolean })
|
|
110
|
+
impersonation = false;
|
|
111
|
+
|
|
80
112
|
#handleDialogCancel = (e: Event) => {
|
|
81
113
|
e.preventDefault();
|
|
82
114
|
emitEvent(this, 'reject');
|
|
@@ -110,10 +142,18 @@ export class DevWalletSigningModal extends LitElement {
|
|
|
110
142
|
exportparts="approve-button: signing-approve-button, reject-button: signing-reject-button, request-type: signing-request-type, empty-state: signing-empty-state, error-message: signing-error-message, footer: signing-footer"
|
|
111
143
|
.request=${this.request}
|
|
112
144
|
.client=${this.client}
|
|
145
|
+
.coins=${this.coins}
|
|
113
146
|
@approve=${this.#handleApprove}
|
|
114
147
|
@reject=${this.#handleReject}
|
|
115
148
|
></dev-wallet-signing>
|
|
116
149
|
</div>
|
|
150
|
+
${this.impersonation
|
|
151
|
+
? html`<div class="fork-footnote" part="fork-footnote">
|
|
152
|
+
<strong>Fork-only:</strong> this account is in <em>impersonation</em> mode. The fork
|
|
153
|
+
accepts the transaction with an empty signature (no real private key signs it), so it
|
|
154
|
+
would be rejected by mainnet / testnet / devnet validators.
|
|
155
|
+
</div>`
|
|
156
|
+
: nothing}
|
|
117
157
|
</dialog>
|
|
118
158
|
`;
|
|
119
159
|
}
|