@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.
- package/CHANGELOG.md +25 -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 +12 -0
- package/dist/adapters/devstack-paths.d.mts.map +1 -0
- package/dist/adapters/devstack-paths.mjs +12 -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 +16 -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
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
import { css, html, LitElement, nothing } from 'lit';
|
|
5
5
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
6
6
|
|
|
7
|
+
import type { ForkRelay } from '../adapters/fork-relay.js';
|
|
7
8
|
import type { DevWallet } from '../wallet/dev-wallet.js';
|
|
8
9
|
import { connectDialogStyles, sharedStyles } from './styles.js';
|
|
10
|
+
import type { CoinRecord } from './utils.js';
|
|
9
11
|
import { WalletController } from './wallet-controller.js';
|
|
10
12
|
|
|
13
|
+
export type DevWalletDockStyle = 'corner-pill' | 'side-tab';
|
|
14
|
+
|
|
11
15
|
@customElement('dev-wallet-panel')
|
|
12
16
|
export class DevWalletPanel extends LitElement {
|
|
13
17
|
static override styles = [
|
|
@@ -17,95 +21,234 @@ export class DevWalletPanel extends LitElement {
|
|
|
17
21
|
:host {
|
|
18
22
|
display: block;
|
|
19
23
|
position: fixed;
|
|
20
|
-
|
|
21
|
-
right: 16px;
|
|
24
|
+
inset: 0;
|
|
22
25
|
z-index: 999999;
|
|
23
|
-
font-size:
|
|
26
|
+
font-size: 13px;
|
|
27
|
+
pointer-events: none;
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
.trigger {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
position: fixed;
|
|
32
|
+
right: 20px;
|
|
33
|
+
bottom: 20px;
|
|
34
|
+
width: 40px;
|
|
35
|
+
height: 40px;
|
|
36
|
+
border-radius: 999px;
|
|
37
|
+
background: var(--dev-wallet-surface);
|
|
38
|
+
color: var(--dev-wallet-primary);
|
|
39
|
+
border: 1px solid var(--dev-wallet-border-2);
|
|
32
40
|
display: flex;
|
|
33
41
|
align-items: center;
|
|
34
42
|
justify-content: center;
|
|
35
43
|
box-shadow: var(--dev-wallet-shadow-md);
|
|
36
|
-
transition:
|
|
37
|
-
|
|
44
|
+
transition:
|
|
45
|
+
transform 120ms,
|
|
46
|
+
box-shadow 120ms,
|
|
47
|
+
border-color 120ms;
|
|
48
|
+
pointer-events: auto;
|
|
49
|
+
z-index: 2;
|
|
38
50
|
}
|
|
39
51
|
|
|
40
52
|
.trigger:hover {
|
|
41
|
-
transform:
|
|
53
|
+
transform: translateY(-1px);
|
|
54
|
+
border-color: var(--dev-wallet-border-strong);
|
|
55
|
+
box-shadow:
|
|
56
|
+
var(--dev-wallet-shadow-md),
|
|
57
|
+
0 0 0 4px var(--dev-wallet-accent-fade);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.trigger.side-tab {
|
|
61
|
+
top: 50%;
|
|
62
|
+
right: 0;
|
|
63
|
+
bottom: auto;
|
|
64
|
+
width: 34px;
|
|
65
|
+
height: 88px;
|
|
66
|
+
border-radius: 12px 0 0 12px;
|
|
67
|
+
transform: translateY(-50%);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.trigger.side-tab:hover {
|
|
71
|
+
transform: translateY(calc(-50% - 1px));
|
|
42
72
|
}
|
|
43
73
|
|
|
44
74
|
.trigger svg {
|
|
45
|
-
width:
|
|
46
|
-
height:
|
|
75
|
+
width: 20px;
|
|
76
|
+
height: 20px;
|
|
47
77
|
}
|
|
48
78
|
|
|
49
|
-
.
|
|
79
|
+
.status-dot {
|
|
50
80
|
position: absolute;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
width:
|
|
54
|
-
|
|
55
|
-
|
|
81
|
+
right: 3px;
|
|
82
|
+
bottom: 3px;
|
|
83
|
+
width: 10px;
|
|
84
|
+
height: 10px;
|
|
85
|
+
border-radius: 999px;
|
|
86
|
+
border: 2px solid var(--dev-wallet-surface);
|
|
87
|
+
background: var(--dev-wallet-status-connected);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.status-dot.notice {
|
|
91
|
+
background: var(--dev-wallet-primary);
|
|
92
|
+
animation: pulse-ring 1.6s ease-out infinite;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.scrim {
|
|
96
|
+
position: fixed;
|
|
97
|
+
inset: 0;
|
|
98
|
+
background: rgba(2, 6, 14, 0.4);
|
|
99
|
+
pointer-events: auto;
|
|
100
|
+
animation: fadein 160ms ease-out;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.sidebar {
|
|
104
|
+
position: fixed;
|
|
105
|
+
top: 12px;
|
|
106
|
+
right: 12px;
|
|
107
|
+
bottom: 76px;
|
|
108
|
+
width: 400px;
|
|
109
|
+
max-width: calc(100vw - 24px);
|
|
56
110
|
border-radius: var(--dev-wallet-radius-xl);
|
|
57
|
-
background: var(--dev-wallet-
|
|
58
|
-
border: 1px solid var(--dev-wallet-border);
|
|
59
|
-
box-shadow: var(--dev-wallet-shadow-
|
|
111
|
+
background: var(--dev-wallet-surface);
|
|
112
|
+
border: 1px solid var(--dev-wallet-border-2);
|
|
113
|
+
box-shadow: var(--dev-wallet-shadow-drawer);
|
|
60
114
|
display: flex;
|
|
61
115
|
flex-direction: column;
|
|
116
|
+
overflow: hidden;
|
|
117
|
+
pointer-events: auto;
|
|
118
|
+
animation: slidein-right 240ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.status-strip {
|
|
122
|
+
display: flex;
|
|
123
|
+
align-items: center;
|
|
124
|
+
gap: 8px;
|
|
125
|
+
min-height: 30px;
|
|
126
|
+
padding: 6px 10px 6px 12px;
|
|
127
|
+
border-bottom: 1px solid var(--dev-wallet-border);
|
|
128
|
+
background: var(--dev-wallet-bg-2);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.status-strip .host-origin {
|
|
132
|
+
flex: 1;
|
|
133
|
+
min-width: 0;
|
|
134
|
+
font-family: var(--dev-wallet-font-mono);
|
|
135
|
+
font-size: 10.5px;
|
|
136
|
+
color: var(--dev-wallet-text-3);
|
|
137
|
+
overflow: hidden;
|
|
138
|
+
text-overflow: ellipsis;
|
|
139
|
+
white-space: nowrap;
|
|
62
140
|
}
|
|
63
141
|
|
|
64
142
|
.sidebar-header {
|
|
65
143
|
display: flex;
|
|
66
|
-
justify-content: space-between;
|
|
67
144
|
align-items: center;
|
|
68
|
-
|
|
145
|
+
gap: 8px;
|
|
146
|
+
padding: 10px 14px;
|
|
69
147
|
border-bottom: 1px solid var(--dev-wallet-border);
|
|
148
|
+
background: var(--dev-wallet-bg-1);
|
|
70
149
|
position: relative;
|
|
71
150
|
z-index: 1;
|
|
72
151
|
}
|
|
73
152
|
|
|
153
|
+
.brand {
|
|
154
|
+
display: flex;
|
|
155
|
+
align-items: center;
|
|
156
|
+
gap: 8px;
|
|
157
|
+
min-width: 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.logo-mark {
|
|
161
|
+
width: 20px;
|
|
162
|
+
height: 20px;
|
|
163
|
+
border-radius: 7px;
|
|
164
|
+
display: inline-flex;
|
|
165
|
+
align-items: center;
|
|
166
|
+
justify-content: center;
|
|
167
|
+
color: var(--dev-wallet-primary-foreground);
|
|
168
|
+
background:
|
|
169
|
+
radial-gradient(circle at 35% 25%, rgba(255, 255, 255, 0.5), transparent 22px),
|
|
170
|
+
linear-gradient(135deg, var(--dev-wallet-primary), var(--dev-wallet-teal));
|
|
171
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16);
|
|
172
|
+
flex-shrink: 0;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.logo-mark svg {
|
|
176
|
+
width: 14px;
|
|
177
|
+
height: 14px;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.title-stack {
|
|
181
|
+
display: flex;
|
|
182
|
+
flex-direction: column;
|
|
183
|
+
line-height: 1.1;
|
|
184
|
+
min-width: 0;
|
|
185
|
+
}
|
|
186
|
+
|
|
74
187
|
.sidebar-title {
|
|
75
|
-
font-size:
|
|
188
|
+
font-size: 12.5px;
|
|
76
189
|
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
77
190
|
color: var(--dev-wallet-foreground);
|
|
191
|
+
white-space: nowrap;
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
text-overflow: ellipsis;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.version {
|
|
197
|
+
font-family: var(--dev-wallet-font-mono);
|
|
198
|
+
font-size: 9px;
|
|
199
|
+
letter-spacing: 0.12em;
|
|
200
|
+
text-transform: uppercase;
|
|
201
|
+
color: var(--dev-wallet-text-3);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.header-spacer {
|
|
205
|
+
flex: 1;
|
|
206
|
+
min-width: 8px;
|
|
78
207
|
}
|
|
79
208
|
|
|
80
209
|
.close-btn {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
height: 28px;
|
|
210
|
+
color: var(--dev-wallet-text-3);
|
|
211
|
+
width: 24px;
|
|
212
|
+
height: 24px;
|
|
85
213
|
display: flex;
|
|
86
214
|
align-items: center;
|
|
87
215
|
justify-content: center;
|
|
88
|
-
border-radius: var(--dev-wallet-radius
|
|
216
|
+
border-radius: var(--dev-wallet-radius);
|
|
217
|
+
flex-shrink: 0;
|
|
89
218
|
}
|
|
90
219
|
|
|
91
220
|
.close-btn:hover {
|
|
92
|
-
background: var(--dev-wallet-
|
|
221
|
+
background: var(--dev-wallet-bg-hover);
|
|
222
|
+
color: var(--dev-wallet-foreground);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.close-btn svg {
|
|
226
|
+
width: 14px;
|
|
227
|
+
height: 14px;
|
|
93
228
|
}
|
|
94
229
|
|
|
95
230
|
.sidebar-body {
|
|
96
|
-
padding: 16px;
|
|
97
231
|
overflow-y: auto;
|
|
98
232
|
overflow-x: hidden;
|
|
99
233
|
flex: 1;
|
|
100
234
|
min-height: 0;
|
|
235
|
+
background: var(--dev-wallet-bg-0);
|
|
101
236
|
}
|
|
102
237
|
|
|
103
238
|
.section {
|
|
104
|
-
|
|
239
|
+
padding: 14px;
|
|
240
|
+
border-bottom: 1px solid var(--dev-wallet-border);
|
|
105
241
|
}
|
|
106
242
|
|
|
107
243
|
.section:last-child {
|
|
108
|
-
|
|
244
|
+
border-bottom: 0;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@media (max-width: 520px) {
|
|
248
|
+
.sidebar {
|
|
249
|
+
left: 12px;
|
|
250
|
+
width: auto;
|
|
251
|
+
}
|
|
109
252
|
}
|
|
110
253
|
`,
|
|
111
254
|
];
|
|
@@ -113,6 +256,29 @@ export class DevWalletPanel extends LitElement {
|
|
|
113
256
|
@property({ attribute: false })
|
|
114
257
|
wallet: DevWallet | null = null;
|
|
115
258
|
|
|
259
|
+
/** Optional pre-seeded coin metadata. Pass the generated `coins`
|
|
260
|
+
* constant from devstack codegen (`src/generated/coins.ts`) to skip
|
|
261
|
+
* per-coin RPC fetches in the balances list and signing modal. */
|
|
262
|
+
@property({ attribute: false })
|
|
263
|
+
coins: CoinRecord | null = null;
|
|
264
|
+
|
|
265
|
+
/** Phase 5 Subtopic 6 — fork admin relay. When set, the panel
|
|
266
|
+
* surfaces a "Fork" tab that drives advance-clock,
|
|
267
|
+
* advance-checkpoint, and impersonation slot management against
|
|
268
|
+
* the devstack wallet-app server. Construct from the manifest
|
|
269
|
+
* with `createForkRelayFromManifest(manifest)`. */
|
|
270
|
+
@property({ attribute: false })
|
|
271
|
+
forkRelay: ForkRelay | null = null;
|
|
272
|
+
|
|
273
|
+
/** Optional upstream label (`'mainnet'`, `'testnet'`, …) sourced
|
|
274
|
+
* from `meta.upstream` on the manifest. Falls back to inferring
|
|
275
|
+
* from the active network literal when not provided. */
|
|
276
|
+
@property({ type: String })
|
|
277
|
+
forkUpstream = '';
|
|
278
|
+
|
|
279
|
+
@property({ type: String, attribute: 'dock-style' })
|
|
280
|
+
dockStyle: DevWalletDockStyle = 'corner-pill';
|
|
281
|
+
|
|
116
282
|
@state()
|
|
117
283
|
private _isOpen = false;
|
|
118
284
|
|
|
@@ -123,6 +289,15 @@ export class DevWalletPanel extends LitElement {
|
|
|
123
289
|
if (changedProperties.has('wallet')) {
|
|
124
290
|
this.#ctrl.wallet = this.wallet;
|
|
125
291
|
}
|
|
292
|
+
if (changedProperties.has('coins')) {
|
|
293
|
+
this.#ctrl.coins = this.coins;
|
|
294
|
+
}
|
|
295
|
+
if (changedProperties.has('forkRelay')) {
|
|
296
|
+
this.#ctrl.forkRelay = this.forkRelay;
|
|
297
|
+
}
|
|
298
|
+
if (changedProperties.has('forkUpstream')) {
|
|
299
|
+
this.#ctrl.forkUpstream = this.forkUpstream;
|
|
300
|
+
}
|
|
126
301
|
}
|
|
127
302
|
|
|
128
303
|
override updated() {
|
|
@@ -151,12 +326,17 @@ export class DevWalletPanel extends LitElement {
|
|
|
151
326
|
return html`
|
|
152
327
|
${this._isOpen ? this.#renderSidebar() : nothing}
|
|
153
328
|
<button
|
|
154
|
-
class="trigger"
|
|
329
|
+
class="trigger ${this.dockStyle === 'side-tab' ? 'side-tab' : 'corner-pill'}"
|
|
155
330
|
part="trigger"
|
|
156
|
-
aria-label
|
|
331
|
+
aria-label=${this._isOpen ? 'Close Dev Wallet' : 'Open Dev Wallet'}
|
|
332
|
+
aria-expanded=${this._isOpen}
|
|
157
333
|
@click=${this.#togglePanel}
|
|
158
334
|
>
|
|
159
335
|
${this.#walletIcon}
|
|
336
|
+
<span
|
|
337
|
+
class="status-dot ${this.#ctrl.pendingRequest ? 'notice' : ''}"
|
|
338
|
+
aria-hidden="true"
|
|
339
|
+
></span>
|
|
160
340
|
</button>
|
|
161
341
|
${this.#ctrl.renderSigningModal()} ${this.#ctrl.renderConnectPicker()}
|
|
162
342
|
`;
|
|
@@ -164,21 +344,33 @@ export class DevWalletPanel extends LitElement {
|
|
|
164
344
|
|
|
165
345
|
#renderSidebar() {
|
|
166
346
|
return html`
|
|
347
|
+
<button class="scrim" aria-label="Close Dev Wallet" @click=${this.#closePanel}></button>
|
|
167
348
|
<div class="sidebar" part="sidebar">
|
|
168
|
-
<div class="
|
|
169
|
-
<span class="
|
|
170
|
-
|
|
349
|
+
<div class="status-strip">
|
|
350
|
+
<span class="chip chip-success">connected</span>
|
|
351
|
+
<span class="host-origin">${globalThis.location?.origin ?? 'embedded host'}</span>
|
|
171
352
|
<button
|
|
172
353
|
class="close-btn"
|
|
173
354
|
part="close-button"
|
|
174
355
|
aria-label="Close"
|
|
175
|
-
@click=${this.#
|
|
356
|
+
@click=${this.#closePanel}
|
|
176
357
|
>
|
|
177
|
-
|
|
358
|
+
${this.#closeIcon}
|
|
178
359
|
</button>
|
|
179
360
|
</div>
|
|
180
|
-
<div class="sidebar-
|
|
361
|
+
<div class="sidebar-header">
|
|
362
|
+
<div class="brand">
|
|
363
|
+
<span class="logo-mark">${this.#walletIcon}</span>
|
|
364
|
+
<span class="title-stack">
|
|
365
|
+
<span class="sidebar-title">${this.wallet?.name ?? 'Dev Wallet'}</span>
|
|
366
|
+
<span class="version">v0.1.0</span>
|
|
367
|
+
</span>
|
|
368
|
+
</div>
|
|
369
|
+
<span class="header-spacer"></span>
|
|
370
|
+
${this.#ctrl.renderNetworkBadge()}
|
|
371
|
+
</div>
|
|
181
372
|
${this.#ctrl.renderTabBar()}
|
|
373
|
+
<div class="sidebar-body">${this.#ctrl.renderTabContent()}</div>
|
|
182
374
|
</div>
|
|
183
375
|
`;
|
|
184
376
|
}
|
|
@@ -192,12 +384,39 @@ export class DevWalletPanel extends LitElement {
|
|
|
192
384
|
</svg>`;
|
|
193
385
|
}
|
|
194
386
|
|
|
387
|
+
get #closeIcon() {
|
|
388
|
+
return html`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
389
|
+
<path d="M18 6L6 18" />
|
|
390
|
+
<path d="M6 6l12 12" />
|
|
391
|
+
</svg>`;
|
|
392
|
+
}
|
|
393
|
+
|
|
195
394
|
#togglePanel() {
|
|
196
395
|
this._isOpen = !this._isOpen;
|
|
197
396
|
if (this._isOpen) {
|
|
198
397
|
this.#ctrl.syncState();
|
|
199
398
|
}
|
|
200
399
|
}
|
|
400
|
+
|
|
401
|
+
#closePanel() {
|
|
402
|
+
this._isOpen = false;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
#handleKeydown = (event: KeyboardEvent) => {
|
|
406
|
+
if (event.key === 'Escape' && this._isOpen) {
|
|
407
|
+
this.#closePanel();
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
override connectedCallback() {
|
|
412
|
+
super.connectedCallback();
|
|
413
|
+
window.addEventListener('keydown', this.#handleKeydown);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
override disconnectedCallback() {
|
|
417
|
+
window.removeEventListener('keydown', this.#handleKeydown);
|
|
418
|
+
super.disconnectedCallback();
|
|
419
|
+
}
|
|
201
420
|
}
|
|
202
421
|
|
|
203
422
|
declare global {
|
|
@@ -21,14 +21,19 @@ export class DevWalletPopup extends LitElement {
|
|
|
21
21
|
justify-content: center;
|
|
22
22
|
min-height: 100vh;
|
|
23
23
|
padding: 20px;
|
|
24
|
+
background-color: var(--dev-wallet-bg-0);
|
|
25
|
+
background-image:
|
|
26
|
+
linear-gradient(var(--dev-wallet-border) 1px, transparent 1px),
|
|
27
|
+
linear-gradient(90deg, var(--dev-wallet-border) 1px, transparent 1px);
|
|
28
|
+
background-size: 32px 32px;
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
.popup-card {
|
|
27
|
-
width:
|
|
28
|
-
max-height: min(
|
|
32
|
+
width: 440px;
|
|
33
|
+
max-height: min(680px, 86vh);
|
|
29
34
|
border-radius: var(--dev-wallet-radius-xl);
|
|
30
|
-
background: var(--dev-wallet-
|
|
31
|
-
border: 1px solid var(--dev-wallet-border);
|
|
35
|
+
background: var(--dev-wallet-surface);
|
|
36
|
+
border: 1px solid var(--dev-wallet-border-2);
|
|
32
37
|
box-shadow: var(--dev-wallet-shadow-lg);
|
|
33
38
|
overflow: hidden;
|
|
34
39
|
display: flex;
|
|
@@ -39,12 +44,13 @@ export class DevWalletPopup extends LitElement {
|
|
|
39
44
|
display: flex;
|
|
40
45
|
justify-content: space-between;
|
|
41
46
|
align-items: center;
|
|
42
|
-
padding: 14px
|
|
47
|
+
padding: 12px 14px;
|
|
43
48
|
border-bottom: 1px solid var(--dev-wallet-border);
|
|
49
|
+
background: var(--dev-wallet-bg-1);
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
.popup-title {
|
|
47
|
-
font-size:
|
|
53
|
+
font-size: 13px;
|
|
48
54
|
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
49
55
|
color: var(--dev-wallet-foreground);
|
|
50
56
|
}
|