@seams/wallet 0.15.2 → 0.15.4

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.
@@ -1 +1 @@
1
- ddf48f42cd621dcb4ca886033691a26d6514c752cd4c1a91ef741c8b03ad1ab6
1
+ 93b1ef116ecd8e93d9fe147324f06212aa3982133323ca33aa407d5e80a19d96
@@ -1,6 +1,6 @@
1
1
  import TouchIcon from "./icons/TouchIcon.js";
2
- import { MailIcon } from "./icons/MailIcon.js";
3
2
  import { HoverArrowIcon } from "./icons/HoverArrowIcon.js";
3
+ import { MailIcon } from "./icons/MailIcon.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/react/components/AccountMenuButton/AuthenticationMethodRow.tsx
@@ -1,3 +1,4 @@
1
+ import { HoverArrowIcon } from "./icons/HoverArrowIcon.js";
1
2
  import { forwardRef, memo } from "react";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
4
  //#region src/react/components/AccountMenuButton/MenuItem.tsx
@@ -35,17 +36,7 @@ const MenuItem = memo(forwardRef(({ item, onClose, className, style, isHighlight
35
36
  children: item.description
36
37
  })]
37
38
  }),
38
- !item.disabled ? /* @__PURE__ */ jsx("svg", {
39
- className: "seams-account-menu-chevron",
40
- width: "16",
41
- height: "16",
42
- viewBox: "0 0 24 24",
43
- fill: "none",
44
- stroke: "currentColor",
45
- strokeWidth: "1.5",
46
- "aria-hidden": "true",
47
- children: /* @__PURE__ */ jsx("path", { d: "m9 6 6 6-6 6" })
48
- }) : null
39
+ !item.disabled ? /* @__PURE__ */ jsx(HoverArrowIcon, {}) : null
49
40
  ]
50
41
  });
51
42
  }));
@@ -18,6 +18,8 @@
18
18
  --seams-expander-surface: var(--seams-colors-surface2);
19
19
  }
20
20
  .seams-profile-dropdown-menu .seams-dropdown-menu-item {
21
+ position: relative;
22
+ isolation: isolate;
21
23
  min-height: 40px;
22
24
  padding: 6px 0;
23
25
  gap: 10px;
@@ -57,9 +59,23 @@
57
59
  .seams-profile-dropdown-menu .seams-dropdown-menu-item-content {
58
60
  flex: 1;
59
61
  }
60
- .seams-account-menu-chevron {
61
- color: var(--seams-colors-textSecondary);
62
- flex-shrink: 0;
62
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item > .seams-hover-arrow {
63
+ margin-inline-end: 4px;
64
+ }
65
+ /* The hover shade bleeds past the row edges so the icons and labels stay
66
+ aligned with the group headings. */
67
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item:not(.seams-lock-menu-item)::before {
68
+ content: '';
69
+ position: absolute;
70
+ z-index: -1;
71
+ inset: 1px -10px;
72
+ border-radius: var(--seams-shape-item, 10px);
73
+ background: var(--seams-colors-surface2);
74
+ opacity: 0;
75
+ transition: opacity 150ms ease;
76
+ }
77
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item:focus-visible::before {
78
+ opacity: 1;
63
79
  }
64
80
  .seams-profile-dropdown-menu .seams-lock-menu-item {
65
81
  border: 1px solid var(--seams-colors-borderPrimary);
@@ -72,9 +88,19 @@
72
88
  }
73
89
  @media (hover: hover) {
74
90
  .seams-profile-dropdown-menu .seams-dropdown-menu-item:not(:disabled):hover {
75
- color: var(--seams-colors-textSecondary);
76
91
  background: transparent;
77
92
  }
93
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item:not(:disabled):hover::before {
94
+ opacity: 1;
95
+ }
96
+ .seams-profile-dropdown-menu .seams-lock-menu-item:not(:disabled):hover {
97
+ background: var(--seams-colors-surface2);
98
+ }
99
+ }
100
+ @media (prefers-reduced-motion: reduce) {
101
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item::before {
102
+ transition: none;
103
+ }
78
104
  }
79
105
 
80
106
  @media (pointer: coarse) {
@@ -284,6 +284,9 @@
284
284
  .seams-account-method-button > div {
285
285
  flex: 1;
286
286
  }
287
+ .seams-account-method-button > .seams-hover-arrow {
288
+ margin-inline-end: 2px;
289
+ }
287
290
  .seams-account-method-button strong {
288
291
  font-size: 15px;
289
292
  font-weight: 500;
@@ -294,47 +297,9 @@
294
297
  color: var(--seams-colors-textSecondary);
295
298
  font-size: 12px;
296
299
  }
297
- .seams-account-method-button > .seams-hover-arrow {
298
- flex: 0 0 auto;
299
- margin-inline-end: 2px;
300
- fill: none;
301
- stroke: currentColor;
302
- stroke-width: 1.5;
303
- color: var(--seams-colors-textSecondary);
304
- transition: color 140ms ease;
305
- }
306
- .seams-hover-arrow-line {
307
- opacity: 0;
308
- filter: blur(2px);
309
- transform: scaleX(0.45);
310
- transform-origin: right center;
311
- transition:
312
- opacity 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
313
- filter 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
314
- transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
315
- }
316
- .seams-hover-arrow-tip {
317
- transition: transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
318
- }
319
- .seams-account-method-button:hover > .seams-hover-arrow,
320
- .seams-account-method-button:focus-visible > .seams-hover-arrow {
321
- color: var(--seams-colors-textPrimary);
322
- }
323
- .seams-account-method-button:hover .seams-hover-arrow-line,
324
- .seams-account-method-button:focus-visible .seams-hover-arrow-line {
325
- opacity: 1;
326
- filter: blur(0);
327
- transform: scaleX(1);
328
- }
329
- .seams-account-method-button:hover .seams-hover-arrow-tip,
330
- .seams-account-method-button:focus-visible .seams-hover-arrow-tip {
331
- transform: translateX(3px);
332
- }
333
300
  @media (prefers-reduced-motion: reduce) {
334
301
  .seams-account-method-button::before,
335
- .seams-account-method-button .seams-account-avatar,
336
- .seams-hover-arrow-line,
337
- .seams-hover-arrow-tip {
302
+ .seams-account-method-button .seams-account-avatar {
338
303
  transition: none;
339
304
  }
340
305
  }
@@ -0,0 +1,45 @@
1
+ /* HoverArrowIcon: a chevron that grows a shaft (">" to "->") when its
2
+ direct parent is hovered or focused from the keyboard. */
3
+
4
+ .seams-hover-arrow {
5
+ flex: 0 0 auto;
6
+ fill: none;
7
+ stroke: currentColor;
8
+ stroke-width: 1.5;
9
+ color: var(--seams-colors-textSecondary);
10
+ transition: color 140ms ease;
11
+ }
12
+ .seams-hover-arrow-line {
13
+ opacity: 0;
14
+ filter: blur(2px);
15
+ transform: scaleX(0.45);
16
+ transform-origin: right center;
17
+ transition:
18
+ opacity 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
19
+ filter 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
20
+ transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
21
+ }
22
+ .seams-hover-arrow-tip {
23
+ transition: transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
24
+ }
25
+ :hover > .seams-hover-arrow,
26
+ :focus-visible > .seams-hover-arrow {
27
+ color: var(--seams-colors-textPrimary);
28
+ }
29
+ :hover > .seams-hover-arrow .seams-hover-arrow-line,
30
+ :focus-visible > .seams-hover-arrow .seams-hover-arrow-line {
31
+ opacity: 1;
32
+ filter: blur(0);
33
+ transform: scaleX(1);
34
+ }
35
+ :hover > .seams-hover-arrow .seams-hover-arrow-tip,
36
+ :focus-visible > .seams-hover-arrow .seams-hover-arrow-tip {
37
+ transform: translateX(3px);
38
+ }
39
+ @media (prefers-reduced-motion: reduce) {
40
+ .seams-hover-arrow,
41
+ .seams-hover-arrow-line,
42
+ .seams-hover-arrow-tip {
43
+ transition: none;
44
+ }
45
+ }
@@ -1,8 +1,9 @@
1
1
  import "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import "./HoverArrowIcon.css";
3
4
  //#region src/react/components/AccountMenuButton/icons/HoverArrowIcon.tsx
4
- /** A chevron that grows a shaft on its parent's hover (">" to "->"). The
5
- * parent row owns the hover selectors in Web3AuthProfileButton.css. */
5
+ /** A chevron that grows a shaft on its parent's hover (">" to "->"). Place it
6
+ * as a direct child of the row that triggers it (HoverArrowIcon.css). */
6
7
  function HoverArrowIcon({ size = 12 }) {
7
8
  return /* @__PURE__ */ jsxs("svg", {
8
9
  className: "seams-hover-arrow",
@@ -323,6 +323,8 @@
323
323
  --seams-expander-surface: var(--seams-colors-surface2);
324
324
  }
325
325
  .seams-profile-dropdown-menu .seams-dropdown-menu-item {
326
+ position: relative;
327
+ isolation: isolate;
326
328
  min-height: 40px;
327
329
  padding: 6px 0;
328
330
  gap: 10px;
@@ -362,9 +364,23 @@
362
364
  .seams-profile-dropdown-menu .seams-dropdown-menu-item-content {
363
365
  flex: 1;
364
366
  }
365
- .seams-account-menu-chevron {
366
- color: var(--seams-colors-textSecondary);
367
- flex-shrink: 0;
367
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item > .seams-hover-arrow {
368
+ margin-inline-end: 4px;
369
+ }
370
+ /* The hover shade bleeds past the row edges so the icons and labels stay
371
+ aligned with the group headings. */
372
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item:not(.seams-lock-menu-item)::before {
373
+ content: '';
374
+ position: absolute;
375
+ z-index: -1;
376
+ inset: 1px -10px;
377
+ border-radius: var(--seams-shape-item, 10px);
378
+ background: var(--seams-colors-surface2);
379
+ opacity: 0;
380
+ transition: opacity 150ms ease;
381
+ }
382
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item:focus-visible::before {
383
+ opacity: 1;
368
384
  }
369
385
  .seams-profile-dropdown-menu .seams-lock-menu-item {
370
386
  border: 1px solid var(--seams-colors-borderPrimary);
@@ -377,9 +393,19 @@
377
393
  }
378
394
  @media (hover: hover) {
379
395
  .seams-profile-dropdown-menu .seams-dropdown-menu-item:not(:disabled):hover {
380
- color: var(--seams-colors-textSecondary);
381
396
  background: transparent;
382
397
  }
398
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item:not(:disabled):hover::before {
399
+ opacity: 1;
400
+ }
401
+ .seams-profile-dropdown-menu .seams-lock-menu-item:not(:disabled):hover {
402
+ background: var(--seams-colors-surface2);
403
+ }
404
+ }
405
+ @media (prefers-reduced-motion: reduce) {
406
+ .seams-profile-dropdown-menu .seams-dropdown-menu-item::before {
407
+ transition: none;
408
+ }
383
409
  }
384
410
 
385
411
  @media (pointer: coarse) {
@@ -388,6 +414,52 @@
388
414
  }
389
415
  }
390
416
 
417
+ /* HoverArrowIcon: a chevron that grows a shaft (">" to "->") when its
418
+ direct parent is hovered or focused from the keyboard. */
419
+
420
+ .seams-hover-arrow {
421
+ flex: 0 0 auto;
422
+ fill: none;
423
+ stroke: currentColor;
424
+ stroke-width: 1.5;
425
+ color: var(--seams-colors-textSecondary);
426
+ transition: color 140ms ease;
427
+ }
428
+ .seams-hover-arrow-line {
429
+ opacity: 0;
430
+ filter: blur(2px);
431
+ transform: scaleX(0.45);
432
+ transform-origin: right center;
433
+ transition:
434
+ opacity 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
435
+ filter 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
436
+ transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
437
+ }
438
+ .seams-hover-arrow-tip {
439
+ transition: transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
440
+ }
441
+ :hover > .seams-hover-arrow,
442
+ :focus-visible > .seams-hover-arrow {
443
+ color: var(--seams-colors-textPrimary);
444
+ }
445
+ :hover > .seams-hover-arrow .seams-hover-arrow-line,
446
+ :focus-visible > .seams-hover-arrow .seams-hover-arrow-line {
447
+ opacity: 1;
448
+ filter: blur(0);
449
+ transform: scaleX(1);
450
+ }
451
+ :hover > .seams-hover-arrow .seams-hover-arrow-tip,
452
+ :focus-visible > .seams-hover-arrow .seams-hover-arrow-tip {
453
+ transform: translateX(3px);
454
+ }
455
+ @media (prefers-reduced-motion: reduce) {
456
+ .seams-hover-arrow,
457
+ .seams-hover-arrow-line,
458
+ .seams-hover-arrow-tip {
459
+ transition: none;
460
+ }
461
+ }
462
+
391
463
  /* TouchIcon specific styles and animations */
392
464
 
393
465
  .seams-fingerprint-icon path {
@@ -1001,6 +1073,9 @@
1001
1073
  .seams-account-method-button > div {
1002
1074
  flex: 1;
1003
1075
  }
1076
+ .seams-account-method-button > .seams-hover-arrow {
1077
+ margin-inline-end: 2px;
1078
+ }
1004
1079
  .seams-account-method-button strong {
1005
1080
  font-size: 15px;
1006
1081
  font-weight: 500;
@@ -1011,47 +1086,9 @@
1011
1086
  color: var(--seams-colors-textSecondary);
1012
1087
  font-size: 12px;
1013
1088
  }
1014
- .seams-account-method-button > .seams-hover-arrow {
1015
- flex: 0 0 auto;
1016
- margin-inline-end: 2px;
1017
- fill: none;
1018
- stroke: currentColor;
1019
- stroke-width: 1.5;
1020
- color: var(--seams-colors-textSecondary);
1021
- transition: color 140ms ease;
1022
- }
1023
- .seams-hover-arrow-line {
1024
- opacity: 0;
1025
- filter: blur(2px);
1026
- transform: scaleX(0.45);
1027
- transform-origin: right center;
1028
- transition:
1029
- opacity 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
1030
- filter 140ms cubic-bezier(0.215, 0.61, 0.355, 1),
1031
- transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
1032
- }
1033
- .seams-hover-arrow-tip {
1034
- transition: transform 140ms cubic-bezier(0.215, 0.61, 0.355, 1);
1035
- }
1036
- .seams-account-method-button:hover > .seams-hover-arrow,
1037
- .seams-account-method-button:focus-visible > .seams-hover-arrow {
1038
- color: var(--seams-colors-textPrimary);
1039
- }
1040
- .seams-account-method-button:hover .seams-hover-arrow-line,
1041
- .seams-account-method-button:focus-visible .seams-hover-arrow-line {
1042
- opacity: 1;
1043
- filter: blur(0);
1044
- transform: scaleX(1);
1045
- }
1046
- .seams-account-method-button:hover .seams-hover-arrow-tip,
1047
- .seams-account-method-button:focus-visible .seams-hover-arrow-tip {
1048
- transform: translateX(3px);
1049
- }
1050
1089
  @media (prefers-reduced-motion: reduce) {
1051
1090
  .seams-account-method-button::before,
1052
- .seams-account-method-button .seams-account-avatar,
1053
- .seams-hover-arrow-line,
1054
- .seams-hover-arrow-tip {
1091
+ .seams-account-method-button .seams-account-avatar {
1055
1092
  transition: none;
1056
1093
  }
1057
1094
  }
@@ -4,6 +4,7 @@
4
4
  @import './components/AccountMenuButton/ExportKeysSection.css';
5
5
  @import './components/AccountMenuButton/MenuItem.css';
6
6
  @import './components/AccountMenuButton/ProfileDropdown.css';
7
+ @import './components/AccountMenuButton/icons/HoverArrowIcon.css';
7
8
  @import './components/AccountMenuButton/icons/TouchIcon.css';
8
9
  @import './components/AccountMenuButton/TransactionSettingsSection.css';
9
10
  @import './components/AccountMenuButton/UserAccountButton.css';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "@seams/wallet",
4
- "packageVersion": "0.15.2",
4
+ "packageVersion": "0.15.4",
5
5
  "assetRoot": "dist/public",
6
6
  "routeClasses": [
7
7
  {
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "@seams/wallet",
4
- "packageVersion": "0.15.2",
4
+ "packageVersion": "0.15.4",
5
5
  "assetRoot": "dist/public",
6
6
  "sdkBasePath": "/sdk",
7
7
  "walletServicePath": "/wallet-service",
8
8
  "headersManifest": "headers.manifest.json",
9
9
  "versionSkewContract": {
10
10
  "kind": "wallet_iframe_protocol_handshake",
11
- "packageVersion": "0.15.2",
11
+ "packageVersion": "0.15.4",
12
12
  "protocolVersion": "16.0.0",
13
13
  "readyPayloadField": "protocolVersion",
14
14
  "failureMode": "typed_error",
@@ -5,14 +5,14 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>Web3Authn Wallet Service</title>
7
7
  <!-- Surface styles are external so strict CSP can keep style-src 'self' -->
8
- <link rel="stylesheet" href="/sdk/wallet-ui.css?v=0.15.2" />
8
+ <link rel="stylesheet" href="/sdk/wallet-ui.css?v=0.15.4" />
9
9
  <!-- Minimal shims some ESM bundles expect (externalized to enable strict CSP) -->
10
- <script src="/sdk/wallet-shims.js?v=0.15.2"></script>
10
+ <script src="/sdk/wallet-shims.js?v=0.15.4"></script>
11
11
  <!-- Hint the browser to fetch the host script earlier -->
12
- <link rel="modulepreload" href="/sdk/wallet-iframe-host-runtime.js?v=0.15.2" crossorigin>
12
+ <link rel="modulepreload" href="/sdk/wallet-iframe-host-runtime.js?v=0.15.4" crossorigin>
13
13
  </head>
14
14
  <body>
15
15
  <!-- sdkBasePath points to the SDK root (e.g. '/sdk'). Load the host directly. -->
16
- <script type="module" src="/sdk/wallet-iframe-host-runtime.js?v=0.15.2"></script>
16
+ <script type="module" src="/sdk/wallet-iframe-host-runtime.js?v=0.15.4"></script>
17
17
  </body>
18
18
  </html>
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- /** A chevron that grows a shaft on its parent's hover (">" to "->"). The
3
- * parent row owns the hover selectors in Web3AuthProfileButton.css. */
2
+ import './HoverArrowIcon.css';
3
+ /** A chevron that grows a shaft on its parent's hover (">" to "->"). Place it
4
+ * as a direct child of the row that triggers it (HoverArrowIcon.css). */
4
5
  export declare function HoverArrowIcon({ size }: {
5
6
  size?: number;
6
7
  }): React.JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seams/wallet",
3
- "version": "0.15.2",
3
+ "version": "0.15.4",
4
4
  "type": "module",
5
5
  "description": "Seams web and runtime TypeScript SDK for NEAR and EVM-family wallets",
6
6
  "main": "./dist/esm/index.js",