hd-wallet-ui 1.2.0 → 1.2.1

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/styles/main.css CHANGED
@@ -3901,6 +3901,109 @@ body:has(.modal.active) .nav-bar {
3901
3901
  scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
3902
3902
  }
3903
3903
 
3904
+ #vcard-result-view {
3905
+ display: flex;
3906
+ flex-direction: column;
3907
+ align-items: center;
3908
+ gap: 24px;
3909
+ padding: 24px 16px;
3910
+ }
3911
+
3912
+ #vcard-result-view .qr-container {
3913
+ display: flex;
3914
+ justify-content: center;
3915
+ }
3916
+
3917
+ #vcard-result-view .vcard-result-actions {
3918
+ display: flex;
3919
+ gap: 12px;
3920
+ justify-content: center;
3921
+ width: 100%;
3922
+ max-width: 320px;
3923
+ }
3924
+
3925
+ #vcard-result-view .vcard-result-actions .glass-btn {
3926
+ flex: 1;
3927
+ }
3928
+
3929
+ #vcard-result-view .vcard-back-btn {
3930
+ margin-top: 4px;
3931
+ }
3932
+
3933
+ .vcard-view-toggle {
3934
+ display: flex;
3935
+ gap: 0;
3936
+ border-radius: 8px;
3937
+ overflow: hidden;
3938
+ border: 1px solid var(--white-10);
3939
+ }
3940
+
3941
+ .vcard-toggle-btn {
3942
+ padding: 6px 20px;
3943
+ font-size: 0.8rem;
3944
+ font-weight: 500;
3945
+ background: transparent;
3946
+ color: var(--white-50);
3947
+ border: none;
3948
+ cursor: pointer;
3949
+ transition: background 0.2s, color 0.2s;
3950
+ }
3951
+
3952
+ .vcard-toggle-btn.active {
3953
+ background: var(--white-10);
3954
+ color: var(--white-90);
3955
+ }
3956
+
3957
+ .vcard-toggle-btn:hover:not(.active) {
3958
+ background: var(--white-05);
3959
+ }
3960
+
3961
+ .vcard-raw-view {
3962
+ width: 100%;
3963
+ max-width: 400px;
3964
+ max-height: 300px;
3965
+ overflow: auto;
3966
+ background: rgba(0, 0, 0, 0.3);
3967
+ border: 1px solid var(--white-10);
3968
+ border-radius: 8px;
3969
+ padding: 12px;
3970
+ font-size: 0.7rem;
3971
+ line-height: 1.4;
3972
+ color: var(--white-70);
3973
+ white-space: pre-wrap;
3974
+ word-break: break-all;
3975
+ scrollbar-width: thin;
3976
+ }
3977
+
3978
+ /* Signature badges */
3979
+ .vcard-sig-badge {
3980
+ display: flex;
3981
+ align-items: center;
3982
+ gap: 6px;
3983
+ padding: 6px 12px;
3984
+ border-radius: 8px;
3985
+ font-size: 0.8rem;
3986
+ line-height: 1;
3987
+ }
3988
+
3989
+ .vcard-sig-badge.sig-verified {
3990
+ background: rgba(34, 197, 94, 0.1);
3991
+ border: 1px solid rgba(34, 197, 94, 0.25);
3992
+ color: #22c55e;
3993
+ }
3994
+
3995
+ .vcard-sig-badge.sig-unsigned {
3996
+ background: rgba(255, 255, 255, 0.05);
3997
+ border: 1px solid rgba(255, 255, 255, 0.1);
3998
+ color: var(--white-50);
3999
+ }
4000
+
4001
+ .vcard-sig-badge.sig-invalid {
4002
+ background: rgba(239, 68, 68, 0.1);
4003
+ border: 1px solid rgba(239, 68, 68, 0.25);
4004
+ color: #f87171;
4005
+ }
4006
+
3904
4007
  /* Actions footer - fixed height bar at bottom of tab */
3905
4008
  .vcard-actions-footer {
3906
4009
  flex: 0 0 48px;
@@ -3914,32 +4017,44 @@ body:has(.modal.active) .nav-bar {
3914
4017
  width: calc(100% + 48px);
3915
4018
  }
3916
4019
 
3917
- .vcard-export-btn,
3918
- .vcard-import-btn {
3919
- padding: 10px 28px;
3920
- font-size: 0.9375rem;
4020
+ /* Split button group (Export / Import vCard) */
4021
+ .vcard-split-btn-group {
4022
+ display: inline-flex;
4023
+ border-radius: var(--radius-sm, 14px);
4024
+ overflow: hidden;
4025
+ border: 1px solid rgba(255, 255, 255, 0.15);
3921
4026
  }
3922
4027
 
3923
- .vcard-export-btn {
3924
- background: rgba(255, 255, 255, 0.95) !important;
3925
- color: #111 !important;
4028
+ .vcard-split-btn {
4029
+ padding: 10px 24px !important;
4030
+ font-size: 0.9375rem !important;
4031
+ border-radius: 0 !important;
3926
4032
  border: none !important;
3927
4033
  font-weight: 600;
4034
+ cursor: pointer;
4035
+ display: inline-flex;
4036
+ align-items: center;
4037
+ justify-content: center;
4038
+ }
4039
+
4040
+ .vcard-split-export {
4041
+ background: rgba(255, 255, 255, 0.95) !important;
4042
+ color: #111 !important;
4043
+ border-right: 1px solid rgba(0, 0, 0, 0.15) !important;
3928
4044
  }
3929
4045
 
3930
- .vcard-export-btn:hover {
4046
+ .vcard-split-export:hover {
3931
4047
  background: #fff !important;
3932
4048
  }
3933
4049
 
3934
- .vcard-import-btn {
4050
+ .vcard-split-import {
3935
4051
  background: rgba(255, 255, 255, 0.08) !important;
3936
4052
  color: rgba(255, 255, 255, 0.7) !important;
3937
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
3938
4053
  cursor: pointer;
3939
4054
  }
3940
4055
 
3941
- .vcard-import-btn:hover {
3942
- background: rgba(255, 255, 255, 0.12) !important;
4056
+ .vcard-split-import:hover {
4057
+ background: rgba(255, 255, 255, 0.14) !important;
3943
4058
  color: rgba(255, 255, 255, 0.9) !important;
3944
4059
  }
3945
4060
 
@@ -4035,29 +4150,79 @@ body:has(.modal.active) .nav-bar {
4035
4150
  Fix Photo Upload Section
4036
4151
  ============================================================================= */
4037
4152
 
4038
- /* Override photo section - ensure left alignment */
4039
- .photo-upload-section {
4153
+ /* Identity card - driver's license layout */
4154
+ .identity-card {
4155
+ display: grid;
4156
+ grid-template-columns: 40% minmax(0, 1fr);
4157
+ grid-template-areas: "photo info";
4158
+ column-gap: 20px;
4159
+ align-items: center;
4160
+ padding: 20px;
4161
+ background: var(--glass-bg);
4162
+ border: 1px solid var(--glass-border);
4163
+ border-radius: var(--radius-sm, 14px);
4164
+ backdrop-filter: var(--glass-blur);
4165
+ -webkit-backdrop-filter: var(--glass-blur);
4166
+ margin-top: 16px;
4167
+ margin-bottom: 16px;
4168
+ }
4169
+
4170
+ .identity-card-photo {
4171
+ grid-area: photo;
4040
4172
  display: flex;
4041
4173
  flex-direction: column;
4042
- align-items: center;
4043
- gap: 10px;
4044
- margin-top: 24px;
4045
- margin-bottom: 24px;
4046
- padding-bottom: 24px;
4047
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
4174
+ align-items: stretch;
4175
+ align-self: center;
4176
+ width: 100%;
4048
4177
  }
4049
4178
 
4050
- .photo-preview {
4051
- width: 96px;
4052
- height: 96px;
4053
- border-radius: 12px;
4054
- background: rgba(255, 255, 255, 0.05);
4179
+ .identity-card-photo .photo-preview {
4180
+ width: 100%;
4181
+ aspect-ratio: 1 / 1;
4182
+ border-radius: 8px;
4183
+ background: rgba(0, 0, 0, 0.28);
4055
4184
  border: 1px solid rgba(255, 255, 255, 0.1);
4056
4185
  display: flex;
4057
4186
  align-items: center;
4058
4187
  justify-content: center;
4059
4188
  overflow: hidden;
4060
- flex-shrink: 0;
4189
+ position: relative;
4190
+ cursor: pointer;
4191
+ }
4192
+
4193
+ .identity-card-photo .photo-preview img,
4194
+ .identity-card-photo .photo-preview video {
4195
+ width: 100%;
4196
+ height: 100%;
4197
+ object-fit: contain;
4198
+ }
4199
+
4200
+ .identity-card-photo .photo-actions {
4201
+ display: none;
4202
+ position: absolute;
4203
+ inset: 0;
4204
+ margin-top: 0;
4205
+ width: 100%;
4206
+ height: 100%;
4207
+ flex-direction: row;
4208
+ flex-wrap: nowrap;
4209
+ gap: 8px;
4210
+ justify-content: center;
4211
+ align-items: center;
4212
+ background: rgba(0, 0, 0, 0.5);
4213
+ z-index: 2;
4214
+ padding: 10px;
4215
+ }
4216
+
4217
+ .identity-card-photo .photo-actions.visible {
4218
+ display: flex;
4219
+ }
4220
+
4221
+ .identity-card-photo .photo-actions .glass-btn {
4222
+ width: auto;
4223
+ min-width: 92px;
4224
+ max-width: none;
4225
+ justify-content: center;
4061
4226
  }
4062
4227
 
4063
4228
  .photo-placeholder-icon {
@@ -4066,6 +4231,243 @@ body:has(.modal.active) .nav-bar {
4066
4231
  color: var(--white-30);
4067
4232
  }
4068
4233
 
4234
+ .photo-edit-overlay {
4235
+ border: 1px solid rgba(255, 255, 255, 0.16);
4236
+ position: absolute;
4237
+ top: 6px;
4238
+ left: 6px;
4239
+ width: 28px;
4240
+ height: 28px;
4241
+ border-radius: 6px;
4242
+ background: rgba(0, 0, 0, 0.45);
4243
+ display: flex;
4244
+ align-items: center;
4245
+ justify-content: center;
4246
+ color: var(--white-70);
4247
+ cursor: pointer;
4248
+ transition: background 0.2s;
4249
+ z-index: 3;
4250
+ padding: 0;
4251
+ }
4252
+
4253
+ .photo-preview:hover .photo-edit-overlay {
4254
+ background: rgba(0, 0, 0, 0.65);
4255
+ color: var(--white-90);
4256
+ }
4257
+
4258
+ .photo-edit-overlay .photo-close-icon {
4259
+ display: none;
4260
+ }
4261
+
4262
+ .photo-edit-overlay.is-open .photo-edit-icon {
4263
+ display: none;
4264
+ }
4265
+
4266
+ .photo-edit-overlay.is-open .photo-close-icon {
4267
+ display: block;
4268
+ }
4269
+
4270
+ .identity-card-info {
4271
+ grid-area: info;
4272
+ position: relative;
4273
+ display: flex;
4274
+ flex-direction: column;
4275
+ gap: 4px;
4276
+ justify-content: center;
4277
+ align-self: center;
4278
+ padding-right: 40px;
4279
+ min-width: 0;
4280
+ }
4281
+
4282
+ .identity-card-name {
4283
+ font-size: 1.1rem;
4284
+ font-weight: 600;
4285
+ color: var(--white-90);
4286
+ letter-spacing: -0.01em;
4287
+ word-wrap: break-word;
4288
+ overflow-wrap: break-word;
4289
+ line-height: 1.4;
4290
+ }
4291
+
4292
+ .identity-card-name .nickname {
4293
+ font-weight: 400;
4294
+ color: var(--white-50);
4295
+ }
4296
+
4297
+ .identity-card-detail {
4298
+ font-size: 0.85rem;
4299
+ color: var(--white-60);
4300
+ overflow: hidden;
4301
+ text-overflow: ellipsis;
4302
+ white-space: nowrap;
4303
+ }
4304
+
4305
+ .identity-card-detail:empty {
4306
+ display: none;
4307
+ }
4308
+
4309
+ /* Identity edit button (pencil icon in card) */
4310
+ .identity-edit-btn {
4311
+ position: absolute;
4312
+ top: 0;
4313
+ right: 0;
4314
+ background: rgba(255, 255, 255, 0.08);
4315
+ border: 1px solid rgba(255, 255, 255, 0.12);
4316
+ border-radius: 8px;
4317
+ color: var(--white-50);
4318
+ padding: 6px;
4319
+ cursor: pointer;
4320
+ display: flex;
4321
+ align-items: center;
4322
+ justify-content: center;
4323
+ transition: all 0.2s;
4324
+ }
4325
+
4326
+ .identity-edit-btn:hover {
4327
+ background: rgba(255, 255, 255, 0.15);
4328
+ color: var(--white-90);
4329
+ }
4330
+
4331
+ /* Identity edit view — flex column with scrollable body + fixed footer */
4332
+ .identity-edit-view {
4333
+ display: flex;
4334
+ flex-direction: column;
4335
+ height: 100%;
4336
+ max-height: calc(100vh - 240px);
4337
+ }
4338
+
4339
+ .identity-edit-scroll {
4340
+ flex: 1;
4341
+ overflow-y: auto;
4342
+ overflow-x: hidden;
4343
+ padding-bottom: 8px;
4344
+ }
4345
+
4346
+ .identity-edit-scroll::-webkit-scrollbar {
4347
+ width: 3px;
4348
+ }
4349
+
4350
+ .identity-edit-scroll::-webkit-scrollbar-thumb {
4351
+ background: rgba(255, 255, 255, 0.2);
4352
+ border-radius: 3px;
4353
+ }
4354
+
4355
+ .identity-edit-actions {
4356
+ flex-shrink: 0;
4357
+ display: flex;
4358
+ gap: 12px;
4359
+ justify-content: flex-end;
4360
+ padding: 16px 0 0;
4361
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
4362
+ }
4363
+
4364
+ /* Header xpub label */
4365
+ .account-address-label {
4366
+ font-size: 11px;
4367
+ color: var(--white-40);
4368
+ font-family: var(--font-mono, 'SF Mono', monospace);
4369
+ letter-spacing: 0.06em;
4370
+ text-transform: uppercase;
4371
+ flex-shrink: 0;
4372
+ }
4373
+
4374
+ /* Messaging sub-tabs */
4375
+ .messaging-sub-tabs {
4376
+ display: flex;
4377
+ gap: 0;
4378
+ margin-bottom: 16px;
4379
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
4380
+ }
4381
+
4382
+ .messaging-sub-tab {
4383
+ padding: 8px 16px;
4384
+ background: transparent;
4385
+ border: none;
4386
+ border-bottom: 2px solid transparent;
4387
+ margin-bottom: -1px;
4388
+ color: var(--white-50);
4389
+ font-family: var(--font-sans);
4390
+ font-size: 13px;
4391
+ font-weight: 500;
4392
+ cursor: pointer;
4393
+ transition: color 0.2s, border-color 0.2s;
4394
+ }
4395
+
4396
+ .messaging-sub-tab:hover {
4397
+ color: var(--white-80);
4398
+ }
4399
+
4400
+ .messaging-sub-tab.active {
4401
+ color: var(--white);
4402
+ border-bottom-color: var(--white-60);
4403
+ }
4404
+
4405
+ .messaging-sub-content {
4406
+ display: none;
4407
+ }
4408
+
4409
+ .messaging-sub-content.active {
4410
+ display: block;
4411
+ }
4412
+
4413
+ @media (max-width: 640px) {
4414
+ .identity-card {
4415
+ grid-template-columns: 1fr;
4416
+ grid-template-areas:
4417
+ "photo"
4418
+ "info";
4419
+ row-gap: 14px;
4420
+ padding: 14px;
4421
+ text-align: center;
4422
+ }
4423
+
4424
+ .identity-card-photo {
4425
+ align-items: center;
4426
+ max-width: 160px;
4427
+ margin: 0 auto;
4428
+ }
4429
+
4430
+ .identity-card-photo .photo-preview {
4431
+ width: 100%;
4432
+ aspect-ratio: 1 / 1;
4433
+ }
4434
+
4435
+ .identity-card-photo .photo-actions {
4436
+ width: 100%;
4437
+ justify-content: center;
4438
+ padding: 8px;
4439
+ }
4440
+
4441
+ .identity-card-photo .photo-actions .glass-btn {
4442
+ min-width: 82px;
4443
+ }
4444
+
4445
+ .identity-card-info {
4446
+ align-items: center;
4447
+ padding-right: 0;
4448
+ }
4449
+
4450
+ .identity-card-name {
4451
+ font-size: 1rem;
4452
+ }
4453
+
4454
+ .identity-card-detail {
4455
+ font-size: 0.8rem;
4456
+ }
4457
+ }
4458
+
4459
+ /* Legacy photo section (kept for compatibility) */
4460
+ .photo-upload-section {
4461
+ display: flex;
4462
+ flex-direction: column;
4463
+ align-items: center;
4464
+ gap: 10px;
4465
+ margin-top: 24px;
4466
+ margin-bottom: 24px;
4467
+ padding-bottom: 24px;
4468
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
4469
+ }
4470
+
4069
4471
  .photo-actions {
4070
4472
  display: flex;
4071
4473
  gap: 8px;