@cryptforge/client-vue 0.1.0 → 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/README.md +633 -0
- package/dist/components/auth/SelectKeystore.vue.d.ts.map +1 -1
- package/dist/components/auth/VerifySeed.vue.d.ts.map +1 -1
- package/dist/components/onboard/Slide.vue.d.ts.map +1 -1
- package/dist/components/onboard/StartScreen.vue.d.ts.map +1 -1
- package/dist/components/settings/IdentityView.vue.d.ts.map +1 -1
- package/dist/components/sync/ClientConnect.vue.d.ts.map +1 -1
- package/dist/components/sync/ClientEnterKey.vue.d.ts.map +1 -1
- package/dist/composables/useAuth.d.ts +0 -3
- package/dist/composables/useAuth.d.ts.map +1 -1
- package/dist/composables/useNetworkPresenceClient.d.ts +1 -1
- package/dist/composables/useNetworkPresenceClient.d.ts.map +1 -1
- package/dist/composables/useSettings.d.ts.map +1 -1
- package/dist/index.js +79 -34
- package/dist/index.mjs +12414 -10366
- package/dist/internal/ChangePasswordAlert.vue.d.ts +29 -0
- package/dist/internal/ChangePasswordAlert.vue.d.ts.map +1 -0
- package/dist/internal/ChangeUsernameAlert.vue.d.ts +41 -0
- package/dist/internal/ChangeUsernameAlert.vue.d.ts.map +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
# @cryptforge/client-vue
|
|
2
|
+
|
|
3
|
+
Vue 3 component library for building CryptForge cryptocurrency wallet applications. Provides pre-built, customizable components for authentication, wallet management, device synchronization, and onboarding flows.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @cryptforge/client-vue vue@^3.0.0
|
|
9
|
+
# or
|
|
10
|
+
pnpm add @cryptforge/client-vue vue@^3.0.0
|
|
11
|
+
# or
|
|
12
|
+
yarn add @cryptforge/client-vue vue@^3.0.0
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Note**: Vue 3 is a peer dependency and must be installed separately.
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { createApp } from 'vue';
|
|
21
|
+
import App from './App.vue';
|
|
22
|
+
|
|
23
|
+
// Import CryptForge Vue plugin and styles
|
|
24
|
+
import CryptforgeVue from '@cryptforge/client-vue';
|
|
25
|
+
import '@cryptforge/client-vue/dist/style.css';
|
|
26
|
+
|
|
27
|
+
const app = createApp(App);
|
|
28
|
+
app.use(CryptforgeVue);
|
|
29
|
+
app.mount('#app');
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Features
|
|
33
|
+
|
|
34
|
+
- 🔐 **Authentication Components** - Complete authentication flows (create, restore, unlock)
|
|
35
|
+
- 💼 **Wallet Components** - Send, receive, transaction history, balance display
|
|
36
|
+
- 🔄 **Sync Components** - Device-to-device wallet synchronization
|
|
37
|
+
- 🚀 **Onboarding Components** - User onboarding and walkthrough screens
|
|
38
|
+
- ⚙️ **Settings Components** - Identity management, wallet settings
|
|
39
|
+
- 🎨 **Customizable** - Built with CSS modules for easy theming
|
|
40
|
+
- 📱 **Responsive** - Mobile-first design
|
|
41
|
+
- 🎯 **Type-Safe** - Full TypeScript support
|
|
42
|
+
|
|
43
|
+
## Components
|
|
44
|
+
|
|
45
|
+
### Authentication Components
|
|
46
|
+
|
|
47
|
+
#### `<Authentication />`
|
|
48
|
+
Main authentication orchestrator component that manages the complete auth flow.
|
|
49
|
+
|
|
50
|
+
```vue
|
|
51
|
+
<template>
|
|
52
|
+
<Authentication />
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<script setup lang="ts">
|
|
56
|
+
import { Authentication } from '@cryptforge/client-vue';
|
|
57
|
+
</script>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### `<GenerateSeed />`
|
|
61
|
+
Component for generating and displaying a new BIP39 mnemonic seed phrase.
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<template>
|
|
65
|
+
<GenerateSeed @seed-generated="handleSeedGenerated" />
|
|
66
|
+
</template>
|
|
67
|
+
|
|
68
|
+
<script setup lang="ts">
|
|
69
|
+
import { GenerateSeed } from '@cryptforge/client-vue';
|
|
70
|
+
|
|
71
|
+
const handleSeedGenerated = (seed: string) => {
|
|
72
|
+
console.log('Seed generated:', seed);
|
|
73
|
+
};
|
|
74
|
+
</script>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### `<VerifySeed />`
|
|
78
|
+
Component for verifying user has backed up their seed phrase.
|
|
79
|
+
|
|
80
|
+
```vue
|
|
81
|
+
<template>
|
|
82
|
+
<VerifySeed
|
|
83
|
+
:seed="userSeed"
|
|
84
|
+
@verified="handleVerified"
|
|
85
|
+
/>
|
|
86
|
+
</template>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### `<RestoreSeed />`
|
|
90
|
+
Component for restoring a wallet from an existing seed phrase.
|
|
91
|
+
|
|
92
|
+
```vue
|
|
93
|
+
<template>
|
|
94
|
+
<RestoreSeed @seed-restored="handleRestored" />
|
|
95
|
+
</template>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### `<CreatePassword />`
|
|
99
|
+
Component for creating a new wallet password.
|
|
100
|
+
|
|
101
|
+
```vue
|
|
102
|
+
<template>
|
|
103
|
+
<CreatePassword
|
|
104
|
+
@password-created="handlePasswordCreated"
|
|
105
|
+
/>
|
|
106
|
+
</template>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### `<EnterPassword />`
|
|
110
|
+
Component for unlocking an existing wallet.
|
|
111
|
+
|
|
112
|
+
```vue
|
|
113
|
+
<template>
|
|
114
|
+
<EnterPassword
|
|
115
|
+
@password-entered="handleUnlock"
|
|
116
|
+
/>
|
|
117
|
+
</template>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### `<NameKeystore />`
|
|
121
|
+
Component for naming a new wallet/keystore.
|
|
122
|
+
|
|
123
|
+
```vue
|
|
124
|
+
<template>
|
|
125
|
+
<NameKeystore
|
|
126
|
+
@name-set="handleNameSet"
|
|
127
|
+
/>
|
|
128
|
+
</template>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
#### `<SelectKeystore />`
|
|
132
|
+
Component for selecting from multiple wallets/keystores.
|
|
133
|
+
|
|
134
|
+
```vue
|
|
135
|
+
<template>
|
|
136
|
+
<SelectKeystore
|
|
137
|
+
@keystore-selected="handleSelection"
|
|
138
|
+
/>
|
|
139
|
+
</template>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Wallet Components
|
|
143
|
+
|
|
144
|
+
#### `<Wallet />`
|
|
145
|
+
Main wallet component that displays balance and transaction history.
|
|
146
|
+
|
|
147
|
+
```vue
|
|
148
|
+
<template>
|
|
149
|
+
<Wallet />
|
|
150
|
+
</template>
|
|
151
|
+
|
|
152
|
+
<script setup lang="ts">
|
|
153
|
+
import { Wallet } from '@cryptforge/client-vue';
|
|
154
|
+
</script>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### `<WalletOverview />`
|
|
158
|
+
Compact wallet overview showing balance and quick actions.
|
|
159
|
+
|
|
160
|
+
```vue
|
|
161
|
+
<template>
|
|
162
|
+
<WalletOverview />
|
|
163
|
+
</template>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### `<SendCrypto />`
|
|
167
|
+
Component for sending cryptocurrency.
|
|
168
|
+
|
|
169
|
+
```vue
|
|
170
|
+
<template>
|
|
171
|
+
<SendCrypto
|
|
172
|
+
@transaction-sent="handleSent"
|
|
173
|
+
/>
|
|
174
|
+
</template>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### `<ReceiveCrypto />`
|
|
178
|
+
Component for receiving cryptocurrency (displays QR code and address).
|
|
179
|
+
|
|
180
|
+
```vue
|
|
181
|
+
<template>
|
|
182
|
+
<ReceiveCrypto />
|
|
183
|
+
</template>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### `<Transactions />`
|
|
187
|
+
Transaction history component.
|
|
188
|
+
|
|
189
|
+
```vue
|
|
190
|
+
<template>
|
|
191
|
+
<Transactions />
|
|
192
|
+
</template>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
#### `<Confirm />`
|
|
196
|
+
Transaction confirmation component.
|
|
197
|
+
|
|
198
|
+
```vue
|
|
199
|
+
<template>
|
|
200
|
+
<Confirm
|
|
201
|
+
:transaction="txData"
|
|
202
|
+
@confirmed="handleConfirm"
|
|
203
|
+
@cancelled="handleCancel"
|
|
204
|
+
/>
|
|
205
|
+
</template>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
#### `<SendSuccess />`
|
|
209
|
+
Success screen after sending transaction.
|
|
210
|
+
|
|
211
|
+
```vue
|
|
212
|
+
<template>
|
|
213
|
+
<SendSuccess
|
|
214
|
+
:transaction-hash="txHash"
|
|
215
|
+
/>
|
|
216
|
+
</template>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Sync Components
|
|
220
|
+
|
|
221
|
+
Components for synchronizing wallets across devices using peer-to-peer connections.
|
|
222
|
+
|
|
223
|
+
#### Admin (Primary Device)
|
|
224
|
+
|
|
225
|
+
##### `<SyncSetupAdmin />`
|
|
226
|
+
Entry point for device admin sync setup.
|
|
227
|
+
|
|
228
|
+
##### `<AdminEnableBroadcast />`
|
|
229
|
+
Enable broadcasting for device discovery.
|
|
230
|
+
|
|
231
|
+
##### `<AdminBroadcastPIN />`
|
|
232
|
+
Display PIN code for client device.
|
|
233
|
+
|
|
234
|
+
##### `<AdminBroadcastKey />`
|
|
235
|
+
Display QR code with connection key.
|
|
236
|
+
|
|
237
|
+
##### `<AdminConnect />`
|
|
238
|
+
Waiting for client connection.
|
|
239
|
+
|
|
240
|
+
##### `<AdminDeviceFound />`
|
|
241
|
+
Client device discovered.
|
|
242
|
+
|
|
243
|
+
##### `<AdminFinishSetup />`
|
|
244
|
+
Sync completion screen.
|
|
245
|
+
|
|
246
|
+
#### Client (Secondary Device)
|
|
247
|
+
|
|
248
|
+
##### `<SyncSetupClient />`
|
|
249
|
+
Entry point for client sync setup.
|
|
250
|
+
|
|
251
|
+
##### `<ClientConnect />`
|
|
252
|
+
Connect to admin device.
|
|
253
|
+
|
|
254
|
+
##### `<ClientEnterKey />`
|
|
255
|
+
Scan QR code or enter connection key.
|
|
256
|
+
|
|
257
|
+
##### `<ClientEnterPIN />`
|
|
258
|
+
Enter PIN from admin device.
|
|
259
|
+
|
|
260
|
+
##### `<ClientError />`
|
|
261
|
+
Error handling for sync issues.
|
|
262
|
+
|
|
263
|
+
#### Shared
|
|
264
|
+
|
|
265
|
+
##### `<SyncProgressIndicator />`
|
|
266
|
+
Progress indicator for sync operations.
|
|
267
|
+
|
|
268
|
+
```vue
|
|
269
|
+
<template>
|
|
270
|
+
<SyncProgressIndicator
|
|
271
|
+
:progress="syncProgress"
|
|
272
|
+
:status="syncStatus"
|
|
273
|
+
/>
|
|
274
|
+
</template>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Onboarding Components
|
|
278
|
+
|
|
279
|
+
#### `<StartScreen />`
|
|
280
|
+
Initial welcome/start screen.
|
|
281
|
+
|
|
282
|
+
```vue
|
|
283
|
+
<template>
|
|
284
|
+
<StartScreen @get-started="handleStart" />
|
|
285
|
+
</template>
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### `<Walkthrough />`
|
|
289
|
+
Onboarding walkthrough with multiple slides.
|
|
290
|
+
|
|
291
|
+
```vue
|
|
292
|
+
<template>
|
|
293
|
+
<Walkthrough
|
|
294
|
+
@complete="handleWalkthroughComplete"
|
|
295
|
+
/>
|
|
296
|
+
</template>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
#### `<Slide />`
|
|
300
|
+
Individual slide component for walkthrough.
|
|
301
|
+
|
|
302
|
+
```vue
|
|
303
|
+
<template>
|
|
304
|
+
<Slide
|
|
305
|
+
title="Welcome"
|
|
306
|
+
description="Get started with CryptForge"
|
|
307
|
+
:image="slideImage"
|
|
308
|
+
/>
|
|
309
|
+
</template>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Setup Components
|
|
313
|
+
|
|
314
|
+
#### `<CryptforgeApp />`
|
|
315
|
+
Root application wrapper component.
|
|
316
|
+
|
|
317
|
+
```vue
|
|
318
|
+
<template>
|
|
319
|
+
<CryptforgeApp>
|
|
320
|
+
<!-- Your app content -->
|
|
321
|
+
</CryptforgeApp>
|
|
322
|
+
</template>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
#### `<SetupComplete />`
|
|
326
|
+
Setup completion screen.
|
|
327
|
+
|
|
328
|
+
```vue
|
|
329
|
+
<template>
|
|
330
|
+
<SetupComplete @continue="handleContinue" />
|
|
331
|
+
</template>
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Settings Components
|
|
335
|
+
|
|
336
|
+
#### `<WalletButton />`
|
|
337
|
+
Wallet selector button for settings.
|
|
338
|
+
|
|
339
|
+
```vue
|
|
340
|
+
<template>
|
|
341
|
+
<WalletButton />
|
|
342
|
+
</template>
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Composables
|
|
346
|
+
|
|
347
|
+
### `useAuth()`
|
|
348
|
+
|
|
349
|
+
Authentication state and operations.
|
|
350
|
+
|
|
351
|
+
```typescript
|
|
352
|
+
import { useAuth } from '@cryptforge/client-vue';
|
|
353
|
+
|
|
354
|
+
const {
|
|
355
|
+
// State
|
|
356
|
+
isUnlocked,
|
|
357
|
+
currentIdentity,
|
|
358
|
+
currentAddress,
|
|
359
|
+
currentChain,
|
|
360
|
+
|
|
361
|
+
// Methods
|
|
362
|
+
createIdentity,
|
|
363
|
+
unlock,
|
|
364
|
+
lock,
|
|
365
|
+
switchChain,
|
|
366
|
+
generateMnemonic,
|
|
367
|
+
} = useAuth();
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### `useWallet()`
|
|
371
|
+
|
|
372
|
+
Wallet operations and balance management.
|
|
373
|
+
|
|
374
|
+
```typescript
|
|
375
|
+
import { useWallet } from '@cryptforge/client-vue';
|
|
376
|
+
|
|
377
|
+
const {
|
|
378
|
+
// State
|
|
379
|
+
balance,
|
|
380
|
+
transactions,
|
|
381
|
+
isLoading,
|
|
382
|
+
|
|
383
|
+
// Methods
|
|
384
|
+
sendTransaction,
|
|
385
|
+
getBalance,
|
|
386
|
+
refreshTransactions,
|
|
387
|
+
} = useWallet();
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### `useSyncAdmin()`
|
|
391
|
+
|
|
392
|
+
Admin device sync operations.
|
|
393
|
+
|
|
394
|
+
```typescript
|
|
395
|
+
import { useSyncAdmin } from '@cryptforge/client-vue';
|
|
396
|
+
|
|
397
|
+
const {
|
|
398
|
+
// State
|
|
399
|
+
broadcastId,
|
|
400
|
+
connectionKey,
|
|
401
|
+
connectedClients,
|
|
402
|
+
|
|
403
|
+
// Methods
|
|
404
|
+
enableBroadcast,
|
|
405
|
+
waitForClient,
|
|
406
|
+
sendData,
|
|
407
|
+
} = useSyncAdmin();
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### `useSyncClient()`
|
|
411
|
+
|
|
412
|
+
Client device sync operations.
|
|
413
|
+
|
|
414
|
+
```typescript
|
|
415
|
+
import { useSyncClient } from '@cryptforge/client-vue';
|
|
416
|
+
|
|
417
|
+
const {
|
|
418
|
+
// State
|
|
419
|
+
isConnected,
|
|
420
|
+
syncProgress,
|
|
421
|
+
|
|
422
|
+
// Methods
|
|
423
|
+
connectToAdmin,
|
|
424
|
+
verifyPIN,
|
|
425
|
+
receiveData,
|
|
426
|
+
} = useSyncClient();
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### `useSetup()`
|
|
430
|
+
|
|
431
|
+
Application setup state.
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
import { useSetup } from '@cryptforge/client-vue';
|
|
435
|
+
|
|
436
|
+
const {
|
|
437
|
+
setupComplete,
|
|
438
|
+
currentStep,
|
|
439
|
+
completeSetup,
|
|
440
|
+
} = useSetup();
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### `useSettings()`
|
|
444
|
+
|
|
445
|
+
Application settings management.
|
|
446
|
+
|
|
447
|
+
```typescript
|
|
448
|
+
import { useSettings } from '@cryptforge/client-vue';
|
|
449
|
+
|
|
450
|
+
const {
|
|
451
|
+
settings,
|
|
452
|
+
updateSettings,
|
|
453
|
+
resetSettings,
|
|
454
|
+
} = useSettings();
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### `useTheme()`
|
|
458
|
+
|
|
459
|
+
Theme management.
|
|
460
|
+
|
|
461
|
+
```typescript
|
|
462
|
+
import { useTheme } from '@cryptforge/client-vue';
|
|
463
|
+
|
|
464
|
+
const {
|
|
465
|
+
theme,
|
|
466
|
+
setTheme,
|
|
467
|
+
toggleTheme,
|
|
468
|
+
} = useTheme();
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### `useWalkthrough()`
|
|
472
|
+
|
|
473
|
+
Onboarding walkthrough state.
|
|
474
|
+
|
|
475
|
+
```typescript
|
|
476
|
+
import { useWalkthrough } from '@cryptforge/client-vue';
|
|
477
|
+
|
|
478
|
+
const {
|
|
479
|
+
currentSlide,
|
|
480
|
+
totalSlides,
|
|
481
|
+
nextSlide,
|
|
482
|
+
previousSlide,
|
|
483
|
+
skipWalkthrough,
|
|
484
|
+
} = useWalkthrough();
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### `useCryptForgeClient()`
|
|
488
|
+
|
|
489
|
+
Low-level CryptForge client access.
|
|
490
|
+
|
|
491
|
+
```typescript
|
|
492
|
+
import { useCryptForgeClient } from '@cryptforge/client-vue';
|
|
493
|
+
|
|
494
|
+
const { client } = useCryptForgeClient();
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### `useNetworkPresenceClient()`
|
|
498
|
+
|
|
499
|
+
Network presence and device discovery.
|
|
500
|
+
|
|
501
|
+
```typescript
|
|
502
|
+
import { useNetworkPresenceClient } from '@cryptforge/client-vue';
|
|
503
|
+
|
|
504
|
+
const {
|
|
505
|
+
isOnline,
|
|
506
|
+
nearbyDevices,
|
|
507
|
+
broadcast,
|
|
508
|
+
discover,
|
|
509
|
+
} = useNetworkPresenceClient();
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
## Complete Example
|
|
513
|
+
|
|
514
|
+
```vue
|
|
515
|
+
<template>
|
|
516
|
+
<div :class="$style.app">
|
|
517
|
+
<CryptforgeApp>
|
|
518
|
+
<!-- Show auth if not unlocked -->
|
|
519
|
+
<Authentication v-if="!isUnlocked" />
|
|
520
|
+
|
|
521
|
+
<!-- Show wallet if unlocked -->
|
|
522
|
+
<Wallet v-else>
|
|
523
|
+
<template #header>
|
|
524
|
+
<WalletButton />
|
|
525
|
+
</template>
|
|
526
|
+
</Wallet>
|
|
527
|
+
</CryptforgeApp>
|
|
528
|
+
</div>
|
|
529
|
+
</template>
|
|
530
|
+
|
|
531
|
+
<script setup lang="ts">
|
|
532
|
+
import {
|
|
533
|
+
CryptforgeApp,
|
|
534
|
+
Authentication,
|
|
535
|
+
Wallet,
|
|
536
|
+
WalletButton,
|
|
537
|
+
useAuth,
|
|
538
|
+
} from '@cryptforge/client-vue';
|
|
539
|
+
import '@cryptforge/client-vue/dist/style.css';
|
|
540
|
+
|
|
541
|
+
const { isUnlocked } = useAuth();
|
|
542
|
+
</script>
|
|
543
|
+
|
|
544
|
+
<style module>
|
|
545
|
+
.app {
|
|
546
|
+
width: 100%;
|
|
547
|
+
height: 100vh;
|
|
548
|
+
}
|
|
549
|
+
</style>
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
## Styling and Theming
|
|
553
|
+
|
|
554
|
+
All components use CSS modules for scoped styling. You can customize the look by:
|
|
555
|
+
|
|
556
|
+
### 1. CSS Variables
|
|
557
|
+
|
|
558
|
+
```css
|
|
559
|
+
:root {
|
|
560
|
+
--cryptforge-primary-color: #3b82f6;
|
|
561
|
+
--cryptforge-secondary-color: #8b5cf6;
|
|
562
|
+
--cryptforge-background: #ffffff;
|
|
563
|
+
--cryptforge-text: #1f2937;
|
|
564
|
+
--cryptforge-border: #e5e7eb;
|
|
565
|
+
--cryptforge-radius: 8px;
|
|
566
|
+
}
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
### 2. Override Component Styles
|
|
570
|
+
|
|
571
|
+
```vue
|
|
572
|
+
<style>
|
|
573
|
+
/* Override specific component styles */
|
|
574
|
+
.wallet-container {
|
|
575
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
576
|
+
}
|
|
577
|
+
</style>
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
### 3. Use Theme Composable
|
|
581
|
+
|
|
582
|
+
```typescript
|
|
583
|
+
import { useTheme } from '@cryptforge/client-vue';
|
|
584
|
+
|
|
585
|
+
const { setTheme } = useTheme();
|
|
586
|
+
|
|
587
|
+
// Apply custom theme
|
|
588
|
+
setTheme({
|
|
589
|
+
primaryColor: '#3b82f6',
|
|
590
|
+
backgroundColor: '#ffffff',
|
|
591
|
+
textColor: '#1f2937',
|
|
592
|
+
});
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
## TypeScript Support
|
|
596
|
+
|
|
597
|
+
All components and composables are fully typed:
|
|
598
|
+
|
|
599
|
+
```typescript
|
|
600
|
+
import type {
|
|
601
|
+
AuthState,
|
|
602
|
+
WalletState,
|
|
603
|
+
Transaction,
|
|
604
|
+
} from '@cryptforge/client-vue';
|
|
605
|
+
|
|
606
|
+
const handleTransaction = (tx: Transaction) => {
|
|
607
|
+
console.log('Transaction:', tx.hash);
|
|
608
|
+
};
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
## Browser Compatibility
|
|
612
|
+
|
|
613
|
+
- ✅ Chrome, Firefox, Safari, Edge (latest 2 versions)
|
|
614
|
+
- ✅ Mobile browsers (iOS Safari, Chrome Mobile)
|
|
615
|
+
- ✅ Electron (renderer process)
|
|
616
|
+
|
|
617
|
+
## Related Packages
|
|
618
|
+
|
|
619
|
+
- **[@cryptforge/auth](../auth)** - Core authentication functionality
|
|
620
|
+
- **[@cryptforge/core](../core)** - Core types and interfaces
|
|
621
|
+
- **[@cryptforge/key-exchange](../key-exchange)** - Device sync functionality
|
|
622
|
+
- **[@cryptforge/blockchain-evm](../blockchain-evm)** - EVM blockchain support
|
|
623
|
+
- **[@cryptforge/blockchain-btc](../blockchain-btc)** - Bitcoin support
|
|
624
|
+
|
|
625
|
+
## Examples
|
|
626
|
+
|
|
627
|
+
See complete examples in:
|
|
628
|
+
- `examples/vue-web-example/` - Web application example
|
|
629
|
+
- `examples/vue-electron-example/` - Electron application example
|
|
630
|
+
|
|
631
|
+
## License
|
|
632
|
+
|
|
633
|
+
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectKeystore.vue.d.ts","sourceRoot":"","sources":["../../../src/components/auth/SelectKeystore.vue"],"names":[],"mappings":"AAIA;;
|
|
1
|
+
{"version":3,"file":"SelectKeystore.vue.d.ts","sourceRoot":"","sources":["../../../src/components/auth/SelectKeystore.vue"],"names":[],"mappings":"AAIA;;AA2TA,wBAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifySeed.vue.d.ts","sourceRoot":"","sources":["../../../src/components/auth/VerifySeed.vue"],"names":[],"mappings":"AAIA;;
|
|
1
|
+
{"version":3,"file":"VerifySeed.vue.d.ts","sourceRoot":"","sources":["../../../src/components/auth/VerifySeed.vue"],"names":[],"mappings":"AAIA;;AAqaA,wBAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slide.vue.d.ts","sourceRoot":"","sources":["../../../src/components/onboard/Slide.vue"],"names":[],"mappings":"AAIA;AAEA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"Slide.vue.d.ts","sourceRoot":"","sources":["../../../src/components/onboard/Slide.vue"],"names":[],"mappings":"AAIA;AAEA,OAAO,EAAE,QAAQ,EAA4B,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;;;cA8T/B,MAAM,eAAe;;;;cAInB,QAAQ,CAAC,MAAM,IAAI,CAAC;;;;;cAJtB,MAAM,eAAe;;;;cAInB,QAAQ,CAAC,MAAM,IAAI,CAAC;;;;AAX1C,wBAeG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartScreen.vue.d.ts","sourceRoot":"","sources":["../../../src/components/onboard/StartScreen.vue"],"names":[],"mappings":"AAIA;AAEA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"StartScreen.vue.d.ts","sourceRoot":"","sources":["../../../src/components/onboard/StartScreen.vue"],"names":[],"mappings":"AAIA;AAEA,OAAO,EAAE,QAAQ,EAA4B,MAAM,KAAK,CAAC;;;;;;;;;;;;;;;cAkRnC,QAAQ,CAAC,MAAM,IAAI,CAAC;;;;;;;;;;;;;;;;;cAApB,QAAQ,CAAC,MAAM,IAAI,CAAC;;;;AAnB1C,wBAuBG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityView.vue.d.ts","sourceRoot":"","sources":["../../../src/components/settings/IdentityView.vue"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"IdentityView.vue.d.ts","sourceRoot":"","sources":["../../../src/components/settings/IdentityView.vue"],"names":[],"mappings":";AAy+BA,wBAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientConnect.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sync/ClientConnect.vue"],"names":[],"mappings":"AAIA;;
|
|
1
|
+
{"version":3,"file":"ClientConnect.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sync/ClientConnect.vue"],"names":[],"mappings":"AAIA;;AAiPA,wBAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientEnterKey.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sync/ClientEnterKey.vue"],"names":[],"mappings":"AAIA;;
|
|
1
|
+
{"version":3,"file":"ClientEnterKey.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sync/ClientEnterKey.vue"],"names":[],"mappings":"AAIA;;AAgUA,wBAKG"}
|
|
@@ -36,11 +36,8 @@ export declare const useAuth: () => {
|
|
|
36
36
|
lockWallet: () => Promise<void>;
|
|
37
37
|
unlockWallet: (address: string, password: string) => Promise<void>;
|
|
38
38
|
finishSetup: (type: AuthType) => Promise<void>;
|
|
39
|
-
createUserDocument: () => Promise<string>;
|
|
40
39
|
seedPhrase: import('vue').Ref<string | null, string | null>;
|
|
41
40
|
enterPasswordPrompt: import('vue').Ref<string | null, string | null>;
|
|
42
|
-
deriveUserDocumentId: (path: string) => Promise<string>;
|
|
43
|
-
deriveUserDocumentPath: () => Promise<string>;
|
|
44
41
|
events: import('mitt').Emitter<AuthEvents>;
|
|
45
42
|
cancelAuth: () => void;
|
|
46
43
|
previousScreenName: import('vue').Ref<string | undefined, string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/composables/useAuth.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/composables/useAuth.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI1D,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C,KAAK,YAAY,GACb,mBAAmB,GACnB,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,gBAAgB,CAAC;AA6DrB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;uBAiBV,YAAY,aACR,OAAO,iBACH,OAAO;;2BAkCW,OAAO,CAAC,IAAI,CAAC;yCAKG,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCAI9B,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;yBAW9B,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;wBAkEvB,MAAM;2BA7DH,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;sBA8B7B,OAAO,CAAC,IAAI,CAAC;4BAc/B,MAAM,YACL,MAAM,KACf,OAAO,CAAC,IAAI,CAAC;wBAoBiB,QAAQ;;;;;;CA2C1C,CAAC"}
|
|
@@ -3,5 +3,5 @@ import { ClientConnectionState, CryptForgeClient } from '@cryptforge/core';
|
|
|
3
3
|
export declare const connectionState: import('vue').Ref<ClientConnectionState, ClientConnectionState>;
|
|
4
4
|
export declare const isConnected: import('vue').ComputedRef<boolean>;
|
|
5
5
|
export declare const peerStates: import('vue').Ref<Record<string, ClientConnectionState>, Record<string, ClientConnectionState>>;
|
|
6
|
-
export declare const useNetworkPresence: (cryptforgeClient: CryptForgeClient) => Promise<void>;
|
|
6
|
+
export declare const useNetworkPresence: (cryptforgeClient: CryptForgeClient) => Promise<() => void>;
|
|
7
7
|
//# sourceMappingURL=useNetworkPresenceClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNetworkPresenceClient.d.ts","sourceRoot":"","sources":["../../src/composables/useNetworkPresenceClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useNetworkPresenceClient.d.ts","sourceRoot":"","sources":["../../src/composables/useNetworkPresenceClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIhF,eAAO,MAAM,eAAe,iEAA6C,CAAC;AAC1E,eAAO,MAAM,WAAW,oCAEvB,CAAC;AAIF,eAAO,MAAM,UAAU,iGAAiD,CAAC;AAiBzE,eAAO,MAAM,kBAAkB,GAC7B,kBAAkB,gBAAgB,wBA+InC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSettings.d.ts","sourceRoot":"","sources":["../../src/composables/useSettings.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAIzD,KAAK,gBAAgB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"useSettings.d.ts","sourceRoot":"","sources":["../../src/composables/useSettings.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAIzD,KAAK,gBAAgB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;AAgDtB,eAAO,MAAM,WAAW;;;;uBAkBI,gBAAgB,aAAY,OAAO;;;;;CAwD9D,CAAC"}
|