@seams/wallet 0.18.0 → 0.20.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.
Files changed (100) hide show
  1. package/dist/.build-inputs.sha256 +1 -1
  2. package/dist/esm/SeamsWeb/index.js +1 -1
  3. package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +1 -1
  4. package/dist/esm/SeamsWeb/walletIframe/client/router.js +10 -4
  5. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +23 -1
  6. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +33 -6
  7. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +37 -1
  8. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +1 -0
  9. package/dist/esm/core/browser/walletIframe/events.js +6 -0
  10. package/dist/esm/core/signingEngine/uiConfirm/ui/appearance.js +27 -0
  11. package/dist/esm/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +155 -0
  12. package/dist/esm/core/signingEngine/uiConfirm/ui/export-viewer-host.js +209 -0
  13. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +319 -0
  14. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +92 -0
  15. package/dist/esm/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +12 -0
  16. package/dist/esm/core/ui/messages.js +4 -0
  17. package/dist/esm/index.js +1 -1
  18. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +1 -1
  19. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.css +20 -0
  20. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +9 -3
  21. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +1 -0
  22. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +15 -0
  23. package/dist/esm/react/styles/styles.css +36 -0
  24. package/dist/esm/sdk/{ConfirmationDrawer-mu3iThxX.js → ConfirmationDrawer-DCw0m-Iv.js} +1 -1
  25. package/dist/{public/sdk/adapters-u7LVXthY.js → esm/sdk/adapters-BNmcyf9K.js} +1 -1
  26. package/dist/esm/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
  27. package/dist/{public/sdk/export-viewer-host-ivf9LlBo.js → esm/sdk/export-viewer-host-DsdzagKK.js} +1 -1
  28. package/dist/esm/sdk/{exportKeypairOperation-Gw7L5Htj.js → exportKeypairOperation-BwW_E4Lt.js} +1 -1
  29. package/dist/esm/sdk/{host-B-2QXolt.js → host-DMR4KDy9.js} +1 -1
  30. package/dist/esm/sdk/{localOnly-BKpUHtHa.js → localOnly-DO191vDh.js} +1 -1
  31. package/dist/esm/sdk/{mountExportPrivateKeySurface-C8pUK6PQ.js → mountExportPrivateKeySurface-DQzFzhNu.js} +1 -1
  32. package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-DUudF89t.js → mountRecoveryCodeBackupSurface-B1D0ovqx.js} +1 -1
  33. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-7tBjuSe7.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
  34. package/dist/esm/sdk/{registration-CWpOVwhj.js → registration-DknFwoqn.js} +1 -1
  35. package/dist/esm/sdk/{registration-D2OEgY7O.js → registration-sQndIWRF.js} +1 -1
  36. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  37. package/dist/esm/sdk/runtime-auth-BxG-J-BB.js +1 -0
  38. package/dist/esm/sdk/{runtime-device-link-vhRhB-wS.js → runtime-device-link-Dn_5hPCq.js} +1 -1
  39. package/dist/{public/sdk/runtime-ecdsa-tempo-BXWgFVBa.js → esm/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js} +1 -1
  40. package/dist/esm/sdk/{runtime-email-otp-BlAaSKtk.js → runtime-email-otp-CPqTCH8Q.js} +1 -1
  41. package/dist/esm/sdk/{runtime-export-B4FuHhcH.js → runtime-export-Brz53_oi.js} +1 -1
  42. package/dist/esm/sdk/{runtime-near-BnWOpEpA.js → runtime-near-Da_xFUXx.js} +1 -1
  43. package/dist/esm/sdk/{runtime-preferences-COm-LTiu.js → runtime-preferences-riUZGaTs.js} +1 -1
  44. package/dist/esm/sdk/{runtime-recovery-BJTo5Idi.js → runtime-recovery-CTj4nDAM.js} +1 -1
  45. package/dist/esm/sdk/{runtime-recovery-codes-CEOjdUHV.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
  46. package/dist/esm/sdk/{shared-BKPGtAps.js → shared-hx7KVyeq.js} +1 -1
  47. package/dist/esm/sdk/tx-confirm-ui.js +4 -0
  48. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  49. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  50. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  51. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  52. package/dist/esm/sdk/wallet-ui.css +1 -1
  53. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  54. package/dist/public/headers.manifest.json +1 -1
  55. package/dist/public/sdk/{ConfirmationDrawer-mu3iThxX.js → ConfirmationDrawer-DCw0m-Iv.js} +1 -1
  56. package/dist/{esm/sdk/adapters-u7LVXthY.js → public/sdk/adapters-BNmcyf9K.js} +1 -1
  57. package/dist/public/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
  58. package/dist/{esm/sdk/export-viewer-host-ivf9LlBo.js → public/sdk/export-viewer-host-DsdzagKK.js} +1 -1
  59. package/dist/public/sdk/{exportKeypairOperation-Gw7L5Htj.js → exportKeypairOperation-BwW_E4Lt.js} +1 -1
  60. package/dist/public/sdk/{host-B-2QXolt.js → host-DMR4KDy9.js} +1 -1
  61. package/dist/public/sdk/{localOnly-BKpUHtHa.js → localOnly-DO191vDh.js} +1 -1
  62. package/dist/public/sdk/{mountExportPrivateKeySurface-C8pUK6PQ.js → mountExportPrivateKeySurface-DQzFzhNu.js} +1 -1
  63. package/dist/public/sdk/{mountRecoveryCodeBackupSurface-DUudF89t.js → mountRecoveryCodeBackupSurface-B1D0ovqx.js} +1 -1
  64. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-7tBjuSe7.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
  65. package/dist/public/sdk/{registration-CWpOVwhj.js → registration-DknFwoqn.js} +1 -1
  66. package/dist/public/sdk/{registration-D2OEgY7O.js → registration-sQndIWRF.js} +1 -1
  67. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  68. package/dist/public/sdk/runtime-auth-BxG-J-BB.js +1 -0
  69. package/dist/public/sdk/{runtime-device-link-vhRhB-wS.js → runtime-device-link-Dn_5hPCq.js} +1 -1
  70. package/dist/{esm/sdk/runtime-ecdsa-tempo-BXWgFVBa.js → public/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js} +1 -1
  71. package/dist/public/sdk/{runtime-email-otp-BlAaSKtk.js → runtime-email-otp-CPqTCH8Q.js} +1 -1
  72. package/dist/public/sdk/{runtime-export-B4FuHhcH.js → runtime-export-Brz53_oi.js} +1 -1
  73. package/dist/public/sdk/{runtime-near-BnWOpEpA.js → runtime-near-Da_xFUXx.js} +1 -1
  74. package/dist/public/sdk/{runtime-preferences-COm-LTiu.js → runtime-preferences-riUZGaTs.js} +1 -1
  75. package/dist/public/sdk/{runtime-recovery-BJTo5Idi.js → runtime-recovery-CTj4nDAM.js} +1 -1
  76. package/dist/public/sdk/{runtime-recovery-codes-CEOjdUHV.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
  77. package/dist/public/sdk/{shared-BKPGtAps.js → shared-hx7KVyeq.js} +1 -1
  78. package/dist/public/sdk/tx-confirm-ui.js +4 -0
  79. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  80. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  81. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  82. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  83. package/dist/public/sdk/wallet-ui.css +1 -1
  84. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  85. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  86. package/dist/public/wallet-assets.manifest.json +46 -46
  87. package/dist/public/wallet-service/index.html +4 -4
  88. package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +2 -1
  89. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +20 -3
  90. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +3 -0
  91. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +1 -0
  92. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +2 -0
  93. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  94. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  95. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  96. package/package.json +1 -1
  97. package/dist/esm/sdk/appearance-token-vars-CzBVbO39.js +0 -2
  98. package/dist/esm/sdk/runtime-auth-jtyQAuxZ.js +0 -1
  99. package/dist/public/sdk/appearance-token-vars-CzBVbO39.js +0 -2
  100. package/dist/public/sdk/runtime-auth-jtyQAuxZ.js +0 -1
@@ -548,8 +548,10 @@
548
548
  margin-bottom: 1.5rem;
549
549
  font-size: 0.875rem;
550
550
  }
551
+ /* The body scrolls, so the last action needs its own room above the card edge. */
551
552
  .seams-auth-methods-modal-content .seams-linked-devices-modal-body {
552
553
  gap: 1.5rem;
554
+ padding-bottom: 1.5rem;
553
555
  }
554
556
  /* A method's icon sits on a tile, like the recovery-code row. */
555
557
  .seams-auth-methods-modal-content .seams-linked-devices-modal-item--row {
@@ -585,12 +587,16 @@
585
587
  font-size: 0.8125rem;
586
588
  }
587
589
  .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button {
588
- background: var(--seams-colors-primary);
590
+ background: var(--seams-colors-textPrimary);
589
591
  border-color: transparent;
590
- color: var(--seams-colors-textButton);
592
+ color: var(--seams-colors-colorBackground);
591
593
  }
592
594
  .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button:hover:not(:disabled) {
593
- background: var(--seams-colors-buttonHoverBackground);
595
+ background: color-mix(
596
+ in srgb,
597
+ var(--seams-colors-textPrimary) 84%,
598
+ var(--seams-colors-colorBackground)
599
+ );
594
600
  }
595
601
  @media (max-width: 480px) {
596
602
  .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form {
@@ -15,6 +15,7 @@
15
15
  padding: 4px 12px 4px 4px;
16
16
  border-radius: 6px;
17
17
  width: fit-content;
18
+ cursor: pointer;
18
19
  }
19
20
 
20
21
  .seams-user-account-button-trigger .hide-username {
@@ -16,6 +16,14 @@
16
16
  .seams-profile-button-morphable.open {
17
17
  width: 420px;
18
18
  overflow: hidden;
19
+ /* The panel replaces the Settings button; a short fade keeps that from
20
+ reading as a cut. */
21
+ animation: seams-account-panel-in 100ms ease-out both;
22
+ }
23
+ @keyframes seams-account-panel-in {
24
+ from {
25
+ opacity: 0;
26
+ }
19
27
  }
20
28
  .seams-account-resize {
21
29
  overflow: hidden;
@@ -354,6 +362,9 @@
354
362
  overflow: hidden;
355
363
  }
356
364
  .seams-account-screen .qr-scanner-video {
365
+ /* The base video is a fixed 400px; the menu's box is narrower, which cut the
366
+ camera off on the right and moved it from under the scan frame. */
367
+ width: 100%;
357
368
  height: 208px;
358
369
  object-fit: cover;
359
370
  }
@@ -410,6 +421,10 @@
410
421
  .seams-account-method-list-item {
411
422
  list-style: none;
412
423
  }
424
+ /* Separators go between rows only; the footer rule closes the screen. */
425
+ .seams-account-method-list-item:last-child > .seams-account-method-button {
426
+ border-bottom: 0;
427
+ }
413
428
  .seams-account-screen ul {
414
429
  padding-left: 0;
415
430
  }
@@ -104,6 +104,26 @@
104
104
  height: 100%;
105
105
  }
106
106
 
107
+ /* A phone-width menu left the description beside the label only a few
108
+ characters, so it moves to a line of its own under the label. */
109
+ @media (max-width: 480px) {
110
+ .seams-account-screen .seams-export-keys-row {
111
+ flex-wrap: wrap;
112
+ row-gap: 2px;
113
+ }
114
+
115
+ .seams-account-screen .seams-export-keys-row-spinner {
116
+ margin-left: auto;
117
+ }
118
+
119
+ .seams-account-screen .seams-export-keys-row-description {
120
+ flex-basis: 100%;
121
+ order: 1;
122
+ white-space: normal;
123
+ text-align: left;
124
+ }
125
+ }
126
+
107
127
  /* MenuItem Component Styles */
108
128
 
109
129
  .seams-dropdown-menu-item {
@@ -626,6 +646,7 @@
626
646
  padding: 4px 12px 4px 4px;
627
647
  border-radius: 6px;
628
648
  width: fit-content;
649
+ cursor: pointer;
629
650
  }
630
651
 
631
652
  .seams-user-account-button-trigger .hide-username {
@@ -805,6 +826,14 @@
805
826
  .seams-profile-button-morphable.open {
806
827
  width: 420px;
807
828
  overflow: hidden;
829
+ /* The panel replaces the Settings button; a short fade keeps that from
830
+ reading as a cut. */
831
+ animation: seams-account-panel-in 100ms ease-out both;
832
+ }
833
+ @keyframes seams-account-panel-in {
834
+ from {
835
+ opacity: 0;
836
+ }
808
837
  }
809
838
  .seams-account-resize {
810
839
  overflow: hidden;
@@ -1143,6 +1172,9 @@
1143
1172
  overflow: hidden;
1144
1173
  }
1145
1174
  .seams-account-screen .qr-scanner-video {
1175
+ /* The base video is a fixed 400px; the menu's box is narrower, which cut the
1176
+ camera off on the right and moved it from under the scan frame. */
1177
+ width: 100%;
1146
1178
  height: 208px;
1147
1179
  object-fit: cover;
1148
1180
  }
@@ -1199,6 +1231,10 @@
1199
1231
  .seams-account-method-list-item {
1200
1232
  list-style: none;
1201
1233
  }
1234
+ /* Separators go between rows only; the footer rule closes the screen. */
1235
+ .seams-account-method-list-item:last-child > .seams-account-method-button {
1236
+ border-bottom: 0;
1237
+ }
1202
1238
  .seams-account-screen ul {
1203
1239
  padding-left: 0;
1204
1240
  }
@@ -1 +1 @@
1
- import{a as e,d as t,f as n,l as r,o as i,p as a,u as o}from"./appearance-token-vars-CzBVbO39.js";async function s(e,t,n){if(!e.isConnected||n?.aborted)return!1;let r=e.ownerDocument,i=r.defaultView?.navigator.clipboard;if(i?.writeText)try{return await i.writeText(t),!0}catch{}if(!e.isConnected||n?.aborted)return!1;let a=r.createElement(`textarea`);a.value=t,a.readOnly=!0,a.className=`seams-offscreen`,e.appendChild(a),a.select();try{return r.execCommand(`copy`)}finally{a.remove()}}function c(){return r(`span`,{class:`copy-icon`,"aria-hidden":`true`,children:[r(`span`,{class:`copy-icon-check`,children:r(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:r(`path`,{d:`M20 6 9 17l-5-5`})})}),r(`span`,{class:`copy-icon-copy`,children:r(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:[r(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),r(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]})})]})}let l=0;function u(e){return r(d,{...e},e.context)}var d=class extends n{static contextType=e;dialog=a();hosted=a();containerId=`seams-confirmation-modal-${++l}`;componentDidMount(){this.props.context===`standalone`?this.dialog.current?.showModal():this.hosted.current?.focus({preventScroll:!0})}componentWillUnmount(){this.dialog.current?.close()}cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.onCancel()};backdropClick=e=>{let t=this.dialog.current;if(!t||e.target!==t)return;let n=t.getBoundingClientRect();(e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom)&&this.cancel(e)};hostedKeyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};render(){return this.props.context===`standalone`?r(`dialog`,{ref:this.dialog,class:`seams-confirmation-modal`,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,children:r(`div`,{id:this.containerId,class:`modal-container-root`,tabIndex:-1,children:this.props.children})}):r(`div`,{ref:this.hosted,class:`seams-confirmation-modal seams-confirmation-modal--hosted`,tabIndex:-1,onKeyDown:this.hostedKeyDown,children:r(`div`,{id:this.containerId,class:`modal-container-root`,children:this.props.children})})}};function f(e){let t=e.startTranslatePx+e.deltaPx;if(t>=e.restTranslatePx)return t;let n=Math.max(e.sheetHeightPx*.5,e.viewportHeightPx*.5,e.minimumOverpullPx),r=e.restTranslatePx-t;return e.restTranslatePx-n*(1-1/(r/n+1))}function p(e){let t=e.totalDeltaPx/Math.max(1,e.durationMs);return Math.min(e.velocityPxPerMs,t)<=-.6||Math.max(e.velocityPxPerMs,t)>=.7||e.translatePx>=e.sheetHeightPx-50}let m=0;function h(e){return r(g,{...e},e.context)}var g=class extends n{static contextType=e;state={settled:!1};id=`seams-confirmation-drawer-${++m}`;dialog=a();sheet=a();body=a();content=a();observer=null;frame=null;closeTimer=null;gesture={kind:`idle`};lifetime=`active`;closeReported=!1;suppressPointerClick=!1;componentDidMount(){let e=this.sheet.current,t=e.ownerDocument.defaultView;this.dialog.current?.showModal(),this.dialog.current||e.focus({preventScroll:!0}),this.observer=new ResizeObserver(this.measureContent),this.observer.observe(this.content.current),this.observer.observe(e),t.addEventListener(`resize`,this.scheduleMeasure),t.visualViewport?.addEventListener(`resize`,this.scheduleMeasure),this.measure(),this.frame=t.requestAnimationFrame(this.openAfterLayout),this.props.state.kind===`closing`&&this.startClose()}openAfterLayout=()=>{this.frame=null,this.setState({settled:!0})};componentDidUpdate(e){e.styles!==this.props.styles&&(e.styles.deleteDynamicRule(this.id),e.styles.deleteDynamicRule(`${this.id}-drag`),this.resetGesture(),this.measure()),e.state.kind!==this.props.state.kind&&(this.props.state.kind===`closing`?this.startClose():(this.clearCloseTimer(),this.closeReported=!1)),this.props.state.kind===`open`&&this.props.state.interaction===`busy`&&this.resetGesture()}componentWillUnmount(){this.lifetime=`disposed`,this.resetGesture();let e=this.sheet.current.ownerDocument.defaultView;this.frame!==null&&e.cancelAnimationFrame(this.frame),this.clearCloseTimer(),this.observer?.disconnect(),e.removeEventListener(`resize`,this.scheduleMeasure),e.visualViewport?.removeEventListener(`resize`,this.scheduleMeasure),this.props.styles.deleteDynamicRule(this.id),this.dialog.current?.close()}scheduleMeasure=()=>{this.lifetime===`disposed`||this.frame!==null||(this.frame=this.sheet.current.ownerDocument.defaultView.requestAnimationFrame(this.measureFrame))};measureFrame=()=>{this.frame=null,this.measure()};measureContent=()=>{this.lifetime===`active`&&this.measure()};measure(){if(this.gesture.kind!==`idle`)return;let e=this.sheet.current,t=this.content.current,n=Math.round(t.getBoundingClientRect().bottom-e.getBoundingClientRect().top),r=this.props.context===`standalone`?Math.max(0,e.offsetHeight-n):0;this.props.styles.setDynamicDeclarations(this.id,`#${this.id}`,{"--seams-drawer-rest":`${r}px`})}startClose(){this.resetGesture(),this.clearCloseTimer();let e=this.sheet.current.ownerDocument.defaultView,t=e.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:150;this.closeTimer=e.setTimeout(this.reportClosed,t)}clearCloseTimer(){this.closeTimer!==null&&(this.sheet.current.ownerDocument.defaultView.clearTimeout(this.closeTimer),this.closeTimer=null)}reportClosed=()=>{this.clearCloseTimer(),!(this.lifetime===`disposed`||this.closeReported||this.props.state.kind!==`closing`)&&(this.closeReported=!0,this.props.state.onClosed())};transitionEnd=e=>{e.target===this.sheet.current&&e.propertyName===`transform`&&this.reportClosed()};cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.state.kind===`open`&&this.props.onCancel()};backdropClick=e=>{this.props.dismissOnBackdrop!==!1&&e.target===this.dialog.current&&this.canDrag()&&this.cancel(e)};keyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};canDrag(){return this.props.state.kind===`open`&&this.props.state.interaction===`ready`}pointerDown=e=>{if(this.clearClickSuppression(),!this.canDrag()||this.gesture.kind!==`idle`||!e.isPrimary||e.button!==0)return;let t=e.target;if(t instanceof Element&&t.closest(`a, input, textarea, select, summary, button:not(.seams-drawer-handle), [data-seams-drawer-no-drag]`))return;this.gesture={kind:`pending`,pointerId:e.pointerId,startY:e.clientY};let n=this.sheet.current.ownerDocument;n.addEventListener(`pointermove`,this.pointerMove,{passive:!1}),n.addEventListener(`pointerup`,this.pointerUp),n.addEventListener(`pointercancel`,this.pointerCancel)};pointerMove=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=this.sheet.current;if(t.kind===`pending`){if(Math.abs(e.clientY-t.startY)<8||this.body.current.scrollTop>0)return;let r=n.ownerDocument.defaultView,i=new DOMMatrixReadOnly(r.getComputedStyle(n).transform).m42;t={kind:`dragging`,pointerId:t.pointerId,startY:t.startY,lastY:t.startY,startedAt:e.timeStamp,lastTime:e.timeStamp,velocity:0,rest:i,translate:i,height:n.offsetHeight},this.gesture=t,n.setPointerCapture(e.pointerId),n.classList.add(`is-dragging`)}let r=e.timeStamp-t.lastTime;r>0&&(t.velocity=(e.clientY-t.lastY)/r),t.lastY=e.clientY,t.lastTime=e.timeStamp,t.translate=f({startTranslatePx:t.rest,deltaPx:e.clientY-t.startY,restTranslatePx:t.rest,sheetHeightPx:t.height,viewportHeightPx:n.ownerDocument.defaultView.innerHeight,minimumOverpullPx:160}),this.props.styles.setDynamicDeclarations(`${this.id}-drag`,`#${this.id}`,{"--seams-drawer-drag":`${t.translate}px`}),e.preventDefault()};pointerUp=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=t.kind===`dragging`&&p({velocityPxPerMs:t.velocity,totalDeltaPx:t.lastY-t.startY,durationMs:e.timeStamp-t.startedAt,translatePx:t.translate,sheetHeightPx:t.height});t.kind===`dragging`&&(this.suppressPointerClick=!0,e.preventDefault()),this.resetGesture(),n&&this.props.state.kind===`open`&&this.props.onCancel()};pointerCancel=e=>{this.gesture.kind!==`idle`&&this.gesture.pointerId===e.pointerId&&(this.gesture.kind===`dragging`&&(this.suppressPointerClick=!0),this.resetGesture())};clearClickSuppression=()=>{this.suppressPointerClick=!1};suppressDragClick=e=>{!this.suppressPointerClick||e.detail===0||(this.suppressPointerClick=!1,e.preventDefault(),e.stopPropagation())};resetGesture(){let e=this.sheet.current,t=this.gesture;this.gesture={kind:`idle`},t.kind!==`idle`&&e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),e.classList.remove(`is-dragging`);let n=e.ownerDocument;n.removeEventListener(`pointermove`,this.pointerMove),n.removeEventListener(`pointerup`,this.pointerUp),n.removeEventListener(`pointercancel`,this.pointerCancel),this.props.styles.deleteDynamicRule(`${this.id}-drag`),this.lifetime===`active`&&this.scheduleMeasure()}render(){let e=this.state.settled&&this.props.state.kind===`open`,n=[`seams-confirmation-drawer`];e&&n.push(`is-open`),this.gesture.kind===`dragging`&&n.push(`is-dragging`);let a=r(`section`,{ref:this.sheet,id:this.id,class:n.join(` `),"data-context":this.props.context,tabIndex:-1,onPointerDownCapture:this.pointerDown,onClickCapture:this.suppressDragClick,onLostPointerCapture:this.pointerCancel,onTransitionEnd:this.transitionEnd,onKeyDown:this.keyDown,children:[r(`div`,{class:`seams-drawer-controls`,children:[this.props.origin&&r(`div`,{class:`seams-drawer-origin`,children:this.props.origin}),r(`button`,{type:`button`,class:`seams-drawer-handle`,"aria-label":t(this.context,`Dismiss confirmation`),disabled:!this.canDrag(),onClick:this.cancel,children:r(`span`,{})}),r(`button`,{type:`button`,class:`seams-drawer-close`,"aria-label":t(this.context,`Close`),disabled:!this.canDrag(),onClick:this.cancel,children:`×`})]}),r(`div`,{class:`seams-drawer-body`,ref:this.body,children:[this.props.errorMessage&&r(`div`,{class:`error`,children:r(i,{copy:this.props.errorMessage})}),r(`div`,{class:`seams-drawer-content`,ref:this.content,children:this.props.children})]})]});return this.props.context===`wallet-iframe`?a:r(`dialog`,{class:`seams-drawer-dialog`,ref:this.dialog,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,onClickCapture:this.suppressDragClick,onPointerDownCapture:this.clearClickSuppression,children:a})}};export{s as i,u as n,c as r,h as t};
1
+ import{a as e,d as t,f as n,l as r,o as i,p as a,u as o}from"./appearance-token-vars-DxBm_cKA.js";async function s(e,t,n){if(!e.isConnected||n?.aborted)return!1;let r=e.ownerDocument,i=r.defaultView?.navigator.clipboard;if(i?.writeText)try{return await i.writeText(t),!0}catch{}if(!e.isConnected||n?.aborted)return!1;let a=r.createElement(`textarea`);a.value=t,a.readOnly=!0,a.className=`seams-offscreen`,e.appendChild(a),a.select();try{return r.execCommand(`copy`)}finally{a.remove()}}function c(){return r(`span`,{class:`copy-icon`,"aria-hidden":`true`,children:[r(`span`,{class:`copy-icon-check`,children:r(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:r(`path`,{d:`M20 6 9 17l-5-5`})})}),r(`span`,{class:`copy-icon-copy`,children:r(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:[r(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),r(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]})})]})}let l=0;function u(e){return r(d,{...e},e.context)}var d=class extends n{static contextType=e;dialog=a();hosted=a();containerId=`seams-confirmation-modal-${++l}`;componentDidMount(){this.props.context===`standalone`?this.dialog.current?.showModal():this.hosted.current?.focus({preventScroll:!0})}componentWillUnmount(){this.dialog.current?.close()}cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.onCancel()};backdropClick=e=>{let t=this.dialog.current;if(!t||e.target!==t)return;let n=t.getBoundingClientRect();(e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom)&&this.cancel(e)};hostedKeyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};render(){return this.props.context===`standalone`?r(`dialog`,{ref:this.dialog,class:`seams-confirmation-modal`,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,children:r(`div`,{id:this.containerId,class:`modal-container-root`,tabIndex:-1,children:this.props.children})}):r(`div`,{ref:this.hosted,class:`seams-confirmation-modal seams-confirmation-modal--hosted`,tabIndex:-1,onKeyDown:this.hostedKeyDown,children:r(`div`,{id:this.containerId,class:`modal-container-root`,children:this.props.children})})}};function f(e){let t=e.startTranslatePx+e.deltaPx;if(t>=e.restTranslatePx)return t;let n=Math.max(e.sheetHeightPx*.5,e.viewportHeightPx*.5,e.minimumOverpullPx),r=e.restTranslatePx-t;return e.restTranslatePx-n*(1-1/(r/n+1))}function p(e){let t=e.totalDeltaPx/Math.max(1,e.durationMs);return Math.min(e.velocityPxPerMs,t)<=-.6||Math.max(e.velocityPxPerMs,t)>=.7||e.translatePx>=e.sheetHeightPx-50}let m=0;function h(e){return r(g,{...e},e.context)}var g=class extends n{static contextType=e;state={settled:!1};id=`seams-confirmation-drawer-${++m}`;dialog=a();sheet=a();body=a();content=a();observer=null;frame=null;closeTimer=null;gesture={kind:`idle`};lifetime=`active`;closeReported=!1;suppressPointerClick=!1;componentDidMount(){let e=this.sheet.current,t=e.ownerDocument.defaultView;this.dialog.current?.showModal(),this.dialog.current||e.focus({preventScroll:!0}),this.observer=new ResizeObserver(this.measureContent),this.observer.observe(this.content.current),this.observer.observe(e),t.addEventListener(`resize`,this.scheduleMeasure),t.visualViewport?.addEventListener(`resize`,this.scheduleMeasure),this.measure(),this.frame=t.requestAnimationFrame(this.openAfterLayout),this.props.state.kind===`closing`&&this.startClose()}openAfterLayout=()=>{this.frame=null,this.setState({settled:!0})};componentDidUpdate(e){e.styles!==this.props.styles&&(e.styles.deleteDynamicRule(this.id),e.styles.deleteDynamicRule(`${this.id}-drag`),this.resetGesture(),this.measure()),e.state.kind!==this.props.state.kind&&(this.props.state.kind===`closing`?this.startClose():(this.clearCloseTimer(),this.closeReported=!1)),this.props.state.kind===`open`&&this.props.state.interaction===`busy`&&this.resetGesture()}componentWillUnmount(){this.lifetime=`disposed`,this.resetGesture();let e=this.sheet.current.ownerDocument.defaultView;this.frame!==null&&e.cancelAnimationFrame(this.frame),this.clearCloseTimer(),this.observer?.disconnect(),e.removeEventListener(`resize`,this.scheduleMeasure),e.visualViewport?.removeEventListener(`resize`,this.scheduleMeasure),this.props.styles.deleteDynamicRule(this.id),this.dialog.current?.close()}scheduleMeasure=()=>{this.lifetime===`disposed`||this.frame!==null||(this.frame=this.sheet.current.ownerDocument.defaultView.requestAnimationFrame(this.measureFrame))};measureFrame=()=>{this.frame=null,this.measure()};measureContent=()=>{this.lifetime===`active`&&this.measure()};measure(){if(this.gesture.kind!==`idle`)return;let e=this.sheet.current,t=this.content.current,n=Math.round(t.getBoundingClientRect().bottom-e.getBoundingClientRect().top),r=this.props.context===`standalone`?Math.max(0,e.offsetHeight-n):0;this.props.styles.setDynamicDeclarations(this.id,`#${this.id}`,{"--seams-drawer-rest":`${r}px`})}startClose(){this.resetGesture(),this.clearCloseTimer();let e=this.sheet.current.ownerDocument.defaultView,t=e.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:150;this.closeTimer=e.setTimeout(this.reportClosed,t)}clearCloseTimer(){this.closeTimer!==null&&(this.sheet.current.ownerDocument.defaultView.clearTimeout(this.closeTimer),this.closeTimer=null)}reportClosed=()=>{this.clearCloseTimer(),!(this.lifetime===`disposed`||this.closeReported||this.props.state.kind!==`closing`)&&(this.closeReported=!0,this.props.state.onClosed())};transitionEnd=e=>{e.target===this.sheet.current&&e.propertyName===`transform`&&this.reportClosed()};cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.state.kind===`open`&&this.props.onCancel()};backdropClick=e=>{this.props.dismissOnBackdrop!==!1&&e.target===this.dialog.current&&this.canDrag()&&this.cancel(e)};keyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};canDrag(){return this.props.state.kind===`open`&&this.props.state.interaction===`ready`}pointerDown=e=>{if(this.clearClickSuppression(),!this.canDrag()||this.gesture.kind!==`idle`||!e.isPrimary||e.button!==0)return;let t=e.target;if(t instanceof Element&&t.closest(`a, input, textarea, select, summary, button:not(.seams-drawer-handle), [data-seams-drawer-no-drag]`))return;this.gesture={kind:`pending`,pointerId:e.pointerId,startY:e.clientY};let n=this.sheet.current.ownerDocument;n.addEventListener(`pointermove`,this.pointerMove,{passive:!1}),n.addEventListener(`pointerup`,this.pointerUp),n.addEventListener(`pointercancel`,this.pointerCancel)};pointerMove=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=this.sheet.current;if(t.kind===`pending`){if(Math.abs(e.clientY-t.startY)<8||this.body.current.scrollTop>0)return;let r=n.ownerDocument.defaultView,i=new DOMMatrixReadOnly(r.getComputedStyle(n).transform).m42;t={kind:`dragging`,pointerId:t.pointerId,startY:t.startY,lastY:t.startY,startedAt:e.timeStamp,lastTime:e.timeStamp,velocity:0,rest:i,translate:i,height:n.offsetHeight},this.gesture=t,n.setPointerCapture(e.pointerId),n.classList.add(`is-dragging`)}let r=e.timeStamp-t.lastTime;r>0&&(t.velocity=(e.clientY-t.lastY)/r),t.lastY=e.clientY,t.lastTime=e.timeStamp,t.translate=f({startTranslatePx:t.rest,deltaPx:e.clientY-t.startY,restTranslatePx:t.rest,sheetHeightPx:t.height,viewportHeightPx:n.ownerDocument.defaultView.innerHeight,minimumOverpullPx:160}),this.props.styles.setDynamicDeclarations(`${this.id}-drag`,`#${this.id}`,{"--seams-drawer-drag":`${t.translate}px`}),e.preventDefault()};pointerUp=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=t.kind===`dragging`&&p({velocityPxPerMs:t.velocity,totalDeltaPx:t.lastY-t.startY,durationMs:e.timeStamp-t.startedAt,translatePx:t.translate,sheetHeightPx:t.height});t.kind===`dragging`&&(this.suppressPointerClick=!0,e.preventDefault()),this.resetGesture(),n&&this.props.state.kind===`open`&&this.props.onCancel()};pointerCancel=e=>{this.gesture.kind!==`idle`&&this.gesture.pointerId===e.pointerId&&(this.gesture.kind===`dragging`&&(this.suppressPointerClick=!0),this.resetGesture())};clearClickSuppression=()=>{this.suppressPointerClick=!1};suppressDragClick=e=>{!this.suppressPointerClick||e.detail===0||(this.suppressPointerClick=!1,e.preventDefault(),e.stopPropagation())};resetGesture(){let e=this.sheet.current,t=this.gesture;this.gesture={kind:`idle`},t.kind!==`idle`&&e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),e.classList.remove(`is-dragging`);let n=e.ownerDocument;n.removeEventListener(`pointermove`,this.pointerMove),n.removeEventListener(`pointerup`,this.pointerUp),n.removeEventListener(`pointercancel`,this.pointerCancel),this.props.styles.deleteDynamicRule(`${this.id}-drag`),this.lifetime===`active`&&this.scheduleMeasure()}render(){let e=this.state.settled&&this.props.state.kind===`open`,n=[`seams-confirmation-drawer`];e&&n.push(`is-open`),this.gesture.kind===`dragging`&&n.push(`is-dragging`);let a=r(`section`,{ref:this.sheet,id:this.id,class:n.join(` `),"data-context":this.props.context,tabIndex:-1,onPointerDownCapture:this.pointerDown,onClickCapture:this.suppressDragClick,onLostPointerCapture:this.pointerCancel,onTransitionEnd:this.transitionEnd,onKeyDown:this.keyDown,children:[r(`div`,{class:`seams-drawer-controls`,children:[this.props.origin&&r(`div`,{class:`seams-drawer-origin`,children:this.props.origin}),r(`button`,{type:`button`,class:`seams-drawer-handle`,"aria-label":t(this.context,`Dismiss confirmation`),disabled:!this.canDrag(),onClick:this.cancel,children:r(`span`,{})}),r(`button`,{type:`button`,class:`seams-drawer-close`,"aria-label":t(this.context,`Close`),disabled:!this.canDrag(),onClick:this.cancel,children:`×`})]}),r(`div`,{class:`seams-drawer-body`,ref:this.body,children:[this.props.errorMessage&&r(`div`,{class:`error`,children:r(i,{copy:this.props.errorMessage})}),r(`div`,{class:`seams-drawer-content`,ref:this.content,children:this.props.children})]})]});return this.props.context===`wallet-iframe`?a:r(`dialog`,{class:`seams-drawer-dialog`,ref:this.dialog,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,onClickCapture:this.suppressDragClick,onPointerDownCapture:this.clearClickSuppression,children:a})}};export{s as i,u as n,c as r,h as t};