@pollar/react 0.4.4 → 0.4.5

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/dist/index.css CHANGED
@@ -175,6 +175,7 @@
175
175
  }
176
176
  }
177
177
  .pollar-modal {
178
+ position: relative;
178
179
  width: 100%;
179
180
  max-width: 460px;
180
181
  border-radius: 1rem;
@@ -185,6 +186,28 @@
185
186
  transition: all 300ms;
186
187
  box-sizing: border-box;
187
188
  }
189
+ .pollar-back-btn {
190
+ position: absolute;
191
+ top: 1rem;
192
+ left: 1rem;
193
+ display: flex;
194
+ align-items: center;
195
+ gap: 0.25rem;
196
+ padding: 0.375rem 0.75rem;
197
+ border-radius: var(--pollar-buttons-border-radius, 6px);
198
+ border: 1px solid var(--pollar-border);
199
+ background-color: transparent;
200
+ color: var(--pollar-muted);
201
+ font-size: 0.875rem;
202
+ font-weight: 500;
203
+ cursor: pointer;
204
+ transition: all 0.15s;
205
+ }
206
+ .pollar-back-btn:hover {
207
+ background-color: var(--pollar-input-bg);
208
+ color: var(--pollar-text);
209
+ border-color: var(--pollar-text);
210
+ }
188
211
  .pollar-header {
189
212
  margin-bottom: 1.75rem;
190
213
  text-align: center;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/login-modal/GithubButton.css","../src/components/login-modal/GoogleButton.css","../src/components/login-modal/LoginModal.css","../src/components/transaction-modal/TransactionModal.css","../src/WalletButton.css"],"sourcesContent":[".github-button {\n -webkit-appearance: none;\n appearance: none;\n background-color: #24292f;\n border: 1px solid rgba(240, 246, 252, 0.1);\n border-radius: var(--pollar-buttons-border-radius, 6px);\n box-sizing: border-box;\n color: #ffffff;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: 500;\n height: var(--pollar-buttons-height, 40px);\n letter-spacing: 0.25px;\n outline: none;\n overflow: hidden;\n padding: 0 16px;\n transition: background-color 0.2s, box-shadow 0.2s;\n white-space: nowrap;\n width: auto;\n max-width: 400px;\n min-width: min-content;\n user-select: none;\n}\n\n.github-button-icon {\n width: 20px;\n height: 20px;\n object-fit: contain;\n flex-shrink: 0;\n}\n\n.github-button-contents {\n flex-grow: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.github-button:not(:disabled):hover {\n background-color: #32383f;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.15);\n}\n\n.github-button:not(:disabled):active {\n background-color: #3a4149;\n}\n\n.github-button:disabled {\n cursor: default;\n background-color: #24292f61;\n border-color: rgba(240, 246, 252, 0.05);\n}\n\n.github-button:disabled .github-button-icon,\n.github-button:disabled .github-button-contents {\n opacity: 38%;\n}",".gsi-material-button {\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n -webkit-appearance: none;\n background-color: WHITE;\n background-image: none;\n border: 1px solid #747775;\n -webkit-border-radius: var(--pollar-buttons-border-radius, 4px);\n border-radius: var(--pollar-buttons-border-radius, 4px);\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #1f1f1f;\n cursor: pointer;\n font-family: 'Roboto', arial, sans-serif;\n font-size: 14px;\n height: var(--pollar-buttons-height, 40px);\n letter-spacing: 0.25px;\n outline: none;\n overflow: hidden;\n padding: 0 12px;\n position: relative;\n text-align: center;\n -webkit-transition: background-color .218s, border-color .218s, box-shadow .218s;\n transition: background-color .218s, border-color .218s, box-shadow .218s;\n vertical-align: middle;\n white-space: nowrap;\n width: auto;\n max-width: 400px;\n min-width: min-content;\n}\n\n.gsi-material-button .gsi-material-button-icon {\n height: 20px;\n margin-right: 10px;\n min-width: 20px;\n width: 20px;\n}\n\n.gsi-material-button .gsi-material-button-content-wrapper {\n -webkit-align-items: center;\n align-items: center;\n display: flex;\n -webkit-flex-direction: row;\n flex-direction: row;\n -webkit-flex-wrap: nowrap;\n flex-wrap: nowrap;\n height: 100%;\n justify-content: space-between;\n position: relative;\n width: 100%;\n}\n\n.gsi-material-button .gsi-material-button-contents {\n -webkit-flex-grow: 1;\n flex-grow: 1;\n font-family: 'Roboto', arial, sans-serif;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: top;\n}\n\n.gsi-material-button .gsi-material-button-state {\n -webkit-transition: opacity .218s;\n transition: opacity .218s;\n bottom: 0;\n left: 0;\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.gsi-material-button:disabled {\n cursor: default;\n background-color: #ffffff61;\n border-color: #1f1f1f1f;\n}\n\n.gsi-material-button:disabled .gsi-material-button-contents {\n opacity: 38%;\n}\n\n.gsi-material-button:disabled .gsi-material-button-icon {\n opacity: 38%;\n}\n\n.gsi-material-button:not(:disabled):active .gsi-material-button-state,\n.gsi-material-button:not(:disabled):focus .gsi-material-button-state {\n background-color: #303030;\n opacity: 12%;\n}\n\n.gsi-material-button:not(:disabled):hover {\n -webkit-box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .30), 0 1px 3px 1px rgba(60, 64, 67, .15);\n box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .30), 0 1px 3px 1px rgba(60, 64, 67, .15);\n}\n\n.gsi-material-button:not(:disabled):hover .gsi-material-button-state {\n background-color: #303030;\n opacity: 8%;\n}\n","@keyframes pollar-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* ---- Modal card ---- */\n.pollar-modal {\n width: 100%;\n max-width: 460px;\n border-radius: 1rem;\n border: 1px solid var(--pollar-border);\n padding: 2rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n background-color: var(--pollar-bg);\n transition: all 300ms;\n box-sizing: border-box;\n}\n\n/* ---- Header ---- */\n.pollar-header {\n margin-bottom: 1.75rem;\n text-align: center;\n}\n\n.pollar-logo-wrap {\n margin-bottom: 1rem;\n display: flex;\n justify-content: center;\n}\n\n.pollar-logo {\n height: 4rem;\n width: 4rem;\n object-fit: contain;\n filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));\n}\n\n.pollar-title {\n margin: 0 0 0.5rem;\n font-size: 1.875rem;\n font-weight: 700;\n color: var(--pollar-text);\n}\n\n.pollar-subtitle {\n margin: 0;\n font-size: 1rem;\n color: var(--pollar-muted);\n}\n\n/* ---- Error ---- */\n.pollar-error {\n margin: 0 0 1rem;\n padding: 10px 14px;\n border-radius: 8px;\n background-color: var(--pollar-error-bg);\n border: 1px solid var(--pollar-error-border);\n color: var(--pollar-error-text);\n font-size: 13px;\n line-height: 1.4;\n}\n\n/* ---- Email ---- */\n.pollar-email-section {\n margin-bottom: 1rem;\n}\n\n.pollar-email-input {\n width: 100%;\n border-radius: 0.5rem;\n border: 1px solid var(--pollar-border);\n background-color: var(--pollar-input-bg);\n padding: 0.875rem 1rem;\n font-size: 1rem;\n color: var(--pollar-text);\n outline: none;\n box-sizing: border-box;\n}\n\n.pollar-email-input::placeholder {\n color: var(--pollar-muted);\n}\n\n.pollar-email-input:focus {\n box-shadow: 0 0 0 2px var(--pollar-accent);\n border-color: transparent;\n}\n\n.pollar-email-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-submit-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 0.75rem;\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n border: none;\n border-radius: var(--pollar-buttons-border-radius, 0.5rem);\n padding: 0 0.875rem;\n font-size: 1rem;\n font-weight: 700;\n color: #fff;\n background-color: var(--pollar-accent);\n cursor: pointer;\n transition: all 0.15s;\n box-sizing: border-box;\n}\n\n.pollar-submit-btn:hover:not(:disabled) {\n opacity: 0.9;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n}\n\n.pollar-submit-btn:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.pollar-submit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Divider ---- */\n.pollar-divider {\n position: relative;\n margin: 1.25rem 0;\n}\n\n.pollar-divider-line {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.pollar-divider-line::after {\n content: '';\n width: 100%;\n border-top: 1px solid var(--pollar-border);\n}\n\n.pollar-divider-label {\n position: relative;\n display: flex;\n justify-content: center;\n font-size: 0.875rem;\n}\n\n.pollar-divider-text {\n padding: 0 1rem;\n font-weight: 500;\n color: var(--pollar-muted);\n background-color: var(--pollar-bg);\n}\n\n/* ---- Social ---- */\n.pollar-social-list {\n margin-bottom: 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n}\n\n.pollar-social-btn {\n display: flex;\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n align-items: center;\n justify-content: center;\n gap: 0.75rem;\n border-radius: var(--pollar-buttons-border-radius, 0.5rem);\n border: 1px solid var(--pollar-border);\n background-color: var(--pollar-input-bg);\n padding: 0 1rem;\n cursor: pointer;\n transition: all 0.15s;\n box-sizing: border-box;\n}\n\n.pollar-social-btn:hover:not(:disabled) {\n transform: scale(1.01);\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n}\n\n.pollar-social-btn:active:not(:disabled) {\n transform: scale(0.99);\n}\n\n.pollar-social-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-social-btn-text {\n font-size: 1rem;\n font-weight: 600;\n color: var(--pollar-text);\n}\n\n/* ---- Wallets ---- */\n.pollar-wallet-section {\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n}\n\n.pollar-wallet-label {\n margin: 0;\n font-size: 0.6875rem;\n font-weight: 500;\n text-align: center;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n}\n\n.pollar-wallet-btn {\n display: flex;\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n align-items: center;\n justify-content: center;\n gap: 0.625rem;\n border-radius: var(--pollar-buttons-border-radius, 0.5rem);\n border: 1px solid var(--pollar-accent);\n background-color: color-mix(in srgb, var(--pollar-accent) 6%, transparent);\n color: var(--pollar-accent);\n padding: 0 1rem;\n font-size: 1rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s;\n box-sizing: border-box;\n}\n\n.pollar-wallet-btn:hover:not(:disabled) {\n transform: scale(1.01);\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n}\n\n.pollar-wallet-btn:active:not(:disabled) {\n transform: scale(0.99);\n}\n\n.pollar-wallet-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-wallet-icon {\n width: 1.125rem;\n height: 1.125rem;\n flex-shrink: 0;\n}\n\n/* ---- Code input ---- */\n.pollar-code-section {\n margin-bottom: 1rem;\n}\n\n.pollar-code-label {\n margin: 0 0 1rem;\n font-size: 0.875rem;\n color: var(--pollar-muted);\n text-align: center;\n}\n\n.pollar-code-inputs {\n display: flex;\n gap: 0.5rem;\n justify-content: center;\n margin-bottom: 0.75rem;\n}\n\n.pollar-code-input {\n width: 2.75rem;\n height: 3rem;\n border-radius: 0.5rem;\n border: 1px solid var(--pollar-border);\n background-color: var(--pollar-input-bg);\n font-size: 1.25rem;\n font-weight: 700;\n color: var(--pollar-text);\n text-align: center;\n outline: none;\n box-sizing: border-box;\n}\n\n.pollar-code-input:focus {\n box-shadow: 0 0 0 2px var(--pollar-accent);\n border-color: transparent;\n}\n\n.pollar-code-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Status banner ---- */\n.pollar-status {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 14px;\n min-height: 40px;\n}\n\n.pollar-status span {\n font-size: 13px;\n font-weight: 500;\n}\n\n.pollar-status-cancel {\n margin-left: 4px;\n padding: 2px 8px;\n border-radius: var(--pollar-buttons-border-radius, 4px);\n border: 1px solid currentColor;\n background: transparent;\n color: inherit;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.15s;\n}\n\n.pollar-status-cancel:hover {\n opacity: 1;\n}\n\n.pollar-status[data-kind='ERROR'] {\n color: #ef4444;\n}\n\n.pollar-status[data-kind='SUCCESS'] {\n color: #10b981;\n}\n\n.pollar-status[data-kind='LOADING'] {\n color: var(--pollar-accent);\n}\n\n.pollar-status[data-kind='LOADING'] svg {\n animation: pollar-spin 1s linear infinite;\n}\n\n/* ---- Footer ---- */\n.pollar-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n border-top: 1px solid var(--pollar-border);\n padding-top: 1.5rem;\n}\n\n.pollar-footer-protected {\n font-size: 0.875rem;\n color: var(--pollar-muted);\n}\n\n.pollar-footer-brand {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.pollar-footer-logo {\n height: 18px;\n width: 18px;\n object-fit: contain;\n}\n\n.pollar-footer-name {\n font-size: 0.875rem;\n font-weight: 700;\n color: var(--pollar-text);\n}\n\n.pollar-footer-version {\n font-size: 0.7rem;\n color: var(--pollar-muted);\n opacity: 0.6;\n}\n\n/* ---- Overlay ---- */\n.pollar-overlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.5);\n}\n","/* ---- Transaction modal ---- */\n.pollar-tx-modal {\n width: 100%;\n max-width: 420px;\n border-radius: 1rem;\n border: 1px solid var(--pollar-border);\n padding: 1.75rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n background-color: var(--pollar-bg);\n box-sizing: border-box;\n font-family: inherit;\n}\n\n/* ---- Header ---- */\n.pollar-tx-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1.25rem;\n}\n\n.pollar-tx-title {\n font-size: 1.125rem;\n font-weight: 700;\n color: var(--pollar-text);\n margin: 0;\n}\n\n.pollar-tx-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--pollar-muted);\n padding: 4px;\n display: flex;\n align-items: center;\n border-radius: 6px;\n transition: color 150ms, background 150ms;\n}\n\n.pollar-tx-close:hover {\n color: var(--pollar-text);\n background: var(--pollar-border);\n}\n\n/* ---- Summary card ---- */\n.pollar-tx-summary {\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 10px;\n padding: 1rem 1.25rem;\n margin-bottom: 1rem;\n}\n\n.pollar-tx-summary-title {\n font-size: 0.8125rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n margin: 0 0 0.625rem;\n}\n\n.pollar-tx-summary-lines {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n overflow-x: auto;\n}\n\n.pollar-tx-summary-line {\n font-size: 0.875rem;\n font-family: monospace;\n white-space: nowrap;\n color: var(--pollar-text);\n}\n\n/* ---- Meta row (network / fee) ---- */\n.pollar-tx-meta {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 1.25rem;\n}\n\n.pollar-tx-meta-item {\n flex: 1;\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 8px;\n padding: 0.625rem 0.875rem;\n}\n\n.pollar-tx-meta-label {\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n display: block;\n margin-bottom: 0.125rem;\n}\n\n.pollar-tx-meta-value {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--pollar-text);\n}\n\n/* ---- Result (success hash) ---- */\n.pollar-tx-result {\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 8px;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n word-break: break-all;\n}\n\n.pollar-tx-result-label {\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n display: block;\n margin-bottom: 0.25rem;\n}\n\n.pollar-tx-result-hash {\n font-size: 0.8125rem;\n font-family: monospace;\n color: var(--pollar-text);\n}\n\n.pollar-tx-result-actions {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.625rem;\n}\n\n.pollar-tx-result-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.75rem;\n border-radius: 6px;\n border: 1px solid var(--pollar-border);\n background: none;\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--pollar-muted);\n cursor: pointer;\n text-decoration: none;\n transition: color 150ms, background 150ms;\n}\n\n.pollar-tx-result-btn:hover {\n color: var(--pollar-text);\n background: var(--pollar-input-bg);\n}\n\n/* ---- Sign button ---- */\n.pollar-tx-sign-btn {\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n border: none;\n border-radius: var(--pollar-buttons-border-radius, 8px);\n background: var(--pollar-accent, #005DB4);\n color: #fff;\n font-size: 0.9375rem;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 150ms;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n}\n\n.pollar-tx-sign-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-tx-sign-btn:not(:disabled):hover {\n opacity: 0.88;\n}\n\n/* ---- Spinner (reuse pollar-spin) ---- */\n.pollar-tx-spinner {\n animation: pollar-spin 0.9s linear infinite;\n}\n\n/* ---- Status banner ---- */\n.pollar-tx-status {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.8125rem;\n padding: 0.5rem 0;\n min-height: 1.75rem;\n color: var(--pollar-muted);\n}\n\n.pollar-tx-status[data-kind=\"ERROR\"] {\n color: var(--pollar-error-text, #dc2626);\n}\n\n.pollar-tx-status[data-kind=\"SUCCESS\"] {\n color: var(--pollar-success-text, #16a34a);\n}\n\n/* ---- Footer ---- */\n.pollar-tx-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n margin-top: 1rem;\n padding-top: 0.75rem;\n border-top: 1px solid var(--pollar-border);\n}\n\n.pollar-tx-footer-protected {\n font-size: 0.75rem;\n color: var(--pollar-muted);\n}\n\n.pollar-tx-footer-brand {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.pollar-tx-footer-logo {\n height: 14px;\n width: 14px;\n object-fit: contain;\n}\n\n.pollar-tx-footer-name {\n font-size: 0.75rem;\n font-weight: 700;\n color: var(--pollar-text);\n}\n\n/* ---- XDR toggle ---- */\n.pollar-tx-xdr {\n margin-bottom: 1rem;\n}\n\n.pollar-tx-xdr-toggle {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--pollar-muted);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n transition: color 150ms;\n}\n\n.pollar-tx-xdr-toggle:hover {\n color: var(--pollar-text);\n}\n\n.pollar-tx-xdr-content {\n margin: 0.5rem 0 0;\n padding: 0.75rem;\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 8px;\n font-family: monospace;\n font-size: 0.6875rem;\n color: var(--pollar-text);\n overflow-x: auto;\n white-space: pre;\n word-break: normal;\n max-height: 120px;\n overflow-y: auto;\n}","/* ---- Unauthenticated: login button ---- */\n/* flex items-center gap-3 rounded-xl px-6 py-3.5 text-base font-bold text-white shadow-lg transition-all */\n.wallet-login-btn {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n border-radius: 0.75rem;\n border: none;\n padding: 0.875rem 1.5rem;\n font-size: 1rem;\n font-weight: 700;\n color: #fff;\n cursor: pointer;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n transition: all 0.15s;\n}\n\n/* hover:opacity-90 hover:shadow-xl */\n.wallet-login-btn:hover {\n opacity: 0.9;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n}\n\n/* active:scale-[0.98] */\n.wallet-login-btn:active {\n transform: scale(0.98);\n}\n\n/* brightness-0 invert — white logo on colored background */\n.wallet-btn-logo {\n width: 22px;\n height: 22px;\n object-fit: contain;\n filter: brightness(0) invert(1);\n}\n\n/* ---- Authenticated: wrapper + dropdown ---- */\n.wallet-wrapper {\n position: relative;\n display: inline-block;\n}\n\n.wallet-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border-radius: 8px;\n color: #fff;\n font-size: 14px;\n font-weight: 500;\n border: none;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.wallet-btn:hover {\n opacity: 0.9;\n}\n\n.wallet-chevron {\n width: 12px;\n height: 12px;\n transition: transform 0.15s;\n}\n\n.wallet-chevron.open {\n transform: rotate(180deg);\n}\n\n.wallet-dropdown {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n min-width: 180px;\n border: 1px solid;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n z-index: 50;\n}\n\n.wallet-dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 11px 16px;\n font-size: 14px;\n font-weight: 400;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.wallet-dropdown-item:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wallet-dropdown-item.danger {\n color: #dc2626;\n}\n\n.wallet-dropdown-item.danger:hover {\n background: #fef2f2;\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/components/login-modal/GithubButton.css","../src/components/login-modal/GoogleButton.css","../src/components/login-modal/LoginModal.css","../src/components/transaction-modal/TransactionModal.css","../src/WalletButton.css"],"sourcesContent":[".github-button {\n -webkit-appearance: none;\n appearance: none;\n background-color: #24292f;\n border: 1px solid rgba(240, 246, 252, 0.1);\n border-radius: var(--pollar-buttons-border-radius, 6px);\n box-sizing: border-box;\n color: #ffffff;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: 500;\n height: var(--pollar-buttons-height, 40px);\n letter-spacing: 0.25px;\n outline: none;\n overflow: hidden;\n padding: 0 16px;\n transition: background-color 0.2s, box-shadow 0.2s;\n white-space: nowrap;\n width: auto;\n max-width: 400px;\n min-width: min-content;\n user-select: none;\n}\n\n.github-button-icon {\n width: 20px;\n height: 20px;\n object-fit: contain;\n flex-shrink: 0;\n}\n\n.github-button-contents {\n flex-grow: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.github-button:not(:disabled):hover {\n background-color: #32383f;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.15);\n}\n\n.github-button:not(:disabled):active {\n background-color: #3a4149;\n}\n\n.github-button:disabled {\n cursor: default;\n background-color: #24292f61;\n border-color: rgba(240, 246, 252, 0.05);\n}\n\n.github-button:disabled .github-button-icon,\n.github-button:disabled .github-button-contents {\n opacity: 38%;\n}",".gsi-material-button {\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n -webkit-appearance: none;\n background-color: WHITE;\n background-image: none;\n border: 1px solid #747775;\n -webkit-border-radius: var(--pollar-buttons-border-radius, 4px);\n border-radius: var(--pollar-buttons-border-radius, 4px);\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #1f1f1f;\n cursor: pointer;\n font-family: 'Roboto', arial, sans-serif;\n font-size: 14px;\n height: var(--pollar-buttons-height, 40px);\n letter-spacing: 0.25px;\n outline: none;\n overflow: hidden;\n padding: 0 12px;\n position: relative;\n text-align: center;\n -webkit-transition: background-color .218s, border-color .218s, box-shadow .218s;\n transition: background-color .218s, border-color .218s, box-shadow .218s;\n vertical-align: middle;\n white-space: nowrap;\n width: auto;\n max-width: 400px;\n min-width: min-content;\n}\n\n.gsi-material-button .gsi-material-button-icon {\n height: 20px;\n margin-right: 10px;\n min-width: 20px;\n width: 20px;\n}\n\n.gsi-material-button .gsi-material-button-content-wrapper {\n -webkit-align-items: center;\n align-items: center;\n display: flex;\n -webkit-flex-direction: row;\n flex-direction: row;\n -webkit-flex-wrap: nowrap;\n flex-wrap: nowrap;\n height: 100%;\n justify-content: space-between;\n position: relative;\n width: 100%;\n}\n\n.gsi-material-button .gsi-material-button-contents {\n -webkit-flex-grow: 1;\n flex-grow: 1;\n font-family: 'Roboto', arial, sans-serif;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: top;\n}\n\n.gsi-material-button .gsi-material-button-state {\n -webkit-transition: opacity .218s;\n transition: opacity .218s;\n bottom: 0;\n left: 0;\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.gsi-material-button:disabled {\n cursor: default;\n background-color: #ffffff61;\n border-color: #1f1f1f1f;\n}\n\n.gsi-material-button:disabled .gsi-material-button-contents {\n opacity: 38%;\n}\n\n.gsi-material-button:disabled .gsi-material-button-icon {\n opacity: 38%;\n}\n\n.gsi-material-button:not(:disabled):active .gsi-material-button-state,\n.gsi-material-button:not(:disabled):focus .gsi-material-button-state {\n background-color: #303030;\n opacity: 12%;\n}\n\n.gsi-material-button:not(:disabled):hover {\n -webkit-box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .30), 0 1px 3px 1px rgba(60, 64, 67, .15);\n box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .30), 0 1px 3px 1px rgba(60, 64, 67, .15);\n}\n\n.gsi-material-button:not(:disabled):hover .gsi-material-button-state {\n background-color: #303030;\n opacity: 8%;\n}\n","@keyframes pollar-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* ---- Modal card ---- */\n.pollar-modal {\n position: relative;\n width: 100%;\n max-width: 460px;\n border-radius: 1rem;\n border: 1px solid var(--pollar-border);\n padding: 2rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n background-color: var(--pollar-bg);\n transition: all 300ms;\n box-sizing: border-box;\n}\n\n/* ---- Back button ---- */\n.pollar-back-btn {\n position: absolute;\n top: 1rem;\n left: 1rem;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n border-radius: var(--pollar-buttons-border-radius, 6px);\n border: 1px solid var(--pollar-border);\n background-color: transparent;\n color: var(--pollar-muted);\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.pollar-back-btn:hover {\n background-color: var(--pollar-input-bg);\n color: var(--pollar-text);\n border-color: var(--pollar-text);\n}\n\n/* ---- Header ---- */\n.pollar-header {\n margin-bottom: 1.75rem;\n text-align: center;\n}\n\n.pollar-logo-wrap {\n margin-bottom: 1rem;\n display: flex;\n justify-content: center;\n}\n\n.pollar-logo {\n height: 4rem;\n width: 4rem;\n object-fit: contain;\n filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));\n}\n\n.pollar-title {\n margin: 0 0 0.5rem;\n font-size: 1.875rem;\n font-weight: 700;\n color: var(--pollar-text);\n}\n\n.pollar-subtitle {\n margin: 0;\n font-size: 1rem;\n color: var(--pollar-muted);\n}\n\n/* ---- Error ---- */\n.pollar-error {\n margin: 0 0 1rem;\n padding: 10px 14px;\n border-radius: 8px;\n background-color: var(--pollar-error-bg);\n border: 1px solid var(--pollar-error-border);\n color: var(--pollar-error-text);\n font-size: 13px;\n line-height: 1.4;\n}\n\n/* ---- Email ---- */\n.pollar-email-section {\n margin-bottom: 1rem;\n}\n\n.pollar-email-input {\n width: 100%;\n border-radius: 0.5rem;\n border: 1px solid var(--pollar-border);\n background-color: var(--pollar-input-bg);\n padding: 0.875rem 1rem;\n font-size: 1rem;\n color: var(--pollar-text);\n outline: none;\n box-sizing: border-box;\n}\n\n.pollar-email-input::placeholder {\n color: var(--pollar-muted);\n}\n\n.pollar-email-input:focus {\n box-shadow: 0 0 0 2px var(--pollar-accent);\n border-color: transparent;\n}\n\n.pollar-email-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-submit-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 0.75rem;\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n border: none;\n border-radius: var(--pollar-buttons-border-radius, 0.5rem);\n padding: 0 0.875rem;\n font-size: 1rem;\n font-weight: 700;\n color: #fff;\n background-color: var(--pollar-accent);\n cursor: pointer;\n transition: all 0.15s;\n box-sizing: border-box;\n}\n\n.pollar-submit-btn:hover:not(:disabled) {\n opacity: 0.9;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n}\n\n.pollar-submit-btn:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.pollar-submit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Divider ---- */\n.pollar-divider {\n position: relative;\n margin: 1.25rem 0;\n}\n\n.pollar-divider-line {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.pollar-divider-line::after {\n content: '';\n width: 100%;\n border-top: 1px solid var(--pollar-border);\n}\n\n.pollar-divider-label {\n position: relative;\n display: flex;\n justify-content: center;\n font-size: 0.875rem;\n}\n\n.pollar-divider-text {\n padding: 0 1rem;\n font-weight: 500;\n color: var(--pollar-muted);\n background-color: var(--pollar-bg);\n}\n\n/* ---- Social ---- */\n.pollar-social-list {\n margin-bottom: 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n}\n\n.pollar-social-btn {\n display: flex;\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n align-items: center;\n justify-content: center;\n gap: 0.75rem;\n border-radius: var(--pollar-buttons-border-radius, 0.5rem);\n border: 1px solid var(--pollar-border);\n background-color: var(--pollar-input-bg);\n padding: 0 1rem;\n cursor: pointer;\n transition: all 0.15s;\n box-sizing: border-box;\n}\n\n.pollar-social-btn:hover:not(:disabled) {\n transform: scale(1.01);\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n}\n\n.pollar-social-btn:active:not(:disabled) {\n transform: scale(0.99);\n}\n\n.pollar-social-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-social-btn-text {\n font-size: 1rem;\n font-weight: 600;\n color: var(--pollar-text);\n}\n\n/* ---- Wallets ---- */\n.pollar-wallet-section {\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n}\n\n.pollar-wallet-label {\n margin: 0;\n font-size: 0.6875rem;\n font-weight: 500;\n text-align: center;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n}\n\n.pollar-wallet-btn {\n display: flex;\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n align-items: center;\n justify-content: center;\n gap: 0.625rem;\n border-radius: var(--pollar-buttons-border-radius, 0.5rem);\n border: 1px solid var(--pollar-accent);\n background-color: color-mix(in srgb, var(--pollar-accent) 6%, transparent);\n color: var(--pollar-accent);\n padding: 0 1rem;\n font-size: 1rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s;\n box-sizing: border-box;\n}\n\n.pollar-wallet-btn:hover:not(:disabled) {\n transform: scale(1.01);\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n}\n\n.pollar-wallet-btn:active:not(:disabled) {\n transform: scale(0.99);\n}\n\n.pollar-wallet-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-wallet-icon {\n width: 1.125rem;\n height: 1.125rem;\n flex-shrink: 0;\n}\n\n/* ---- Code input ---- */\n.pollar-code-section {\n margin-bottom: 1rem;\n}\n\n.pollar-code-label {\n margin: 0 0 1rem;\n font-size: 0.875rem;\n color: var(--pollar-muted);\n text-align: center;\n}\n\n.pollar-code-inputs {\n display: flex;\n gap: 0.5rem;\n justify-content: center;\n margin-bottom: 0.75rem;\n}\n\n.pollar-code-input {\n width: 2.75rem;\n height: 3rem;\n border-radius: 0.5rem;\n border: 1px solid var(--pollar-border);\n background-color: var(--pollar-input-bg);\n font-size: 1.25rem;\n font-weight: 700;\n color: var(--pollar-text);\n text-align: center;\n outline: none;\n box-sizing: border-box;\n}\n\n.pollar-code-input:focus {\n box-shadow: 0 0 0 2px var(--pollar-accent);\n border-color: transparent;\n}\n\n.pollar-code-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Status banner ---- */\n.pollar-status {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 14px;\n min-height: 40px;\n}\n\n.pollar-status span {\n font-size: 13px;\n font-weight: 500;\n}\n\n.pollar-status-cancel {\n margin-left: 4px;\n padding: 2px 8px;\n border-radius: var(--pollar-buttons-border-radius, 4px);\n border: 1px solid currentColor;\n background: transparent;\n color: inherit;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.15s;\n}\n\n.pollar-status-cancel:hover {\n opacity: 1;\n}\n\n.pollar-status[data-kind='ERROR'] {\n color: #ef4444;\n}\n\n.pollar-status[data-kind='SUCCESS'] {\n color: #10b981;\n}\n\n.pollar-status[data-kind='LOADING'] {\n color: var(--pollar-accent);\n}\n\n.pollar-status[data-kind='LOADING'] svg {\n animation: pollar-spin 1s linear infinite;\n}\n\n/* ---- Footer ---- */\n.pollar-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n border-top: 1px solid var(--pollar-border);\n padding-top: 1.5rem;\n}\n\n.pollar-footer-protected {\n font-size: 0.875rem;\n color: var(--pollar-muted);\n}\n\n.pollar-footer-brand {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.pollar-footer-logo {\n height: 18px;\n width: 18px;\n object-fit: contain;\n}\n\n.pollar-footer-name {\n font-size: 0.875rem;\n font-weight: 700;\n color: var(--pollar-text);\n}\n\n.pollar-footer-version {\n font-size: 0.7rem;\n color: var(--pollar-muted);\n opacity: 0.6;\n}\n\n/* ---- Overlay ---- */\n.pollar-overlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.5);\n}\n","/* ---- Transaction modal ---- */\n.pollar-tx-modal {\n width: 100%;\n max-width: 420px;\n border-radius: 1rem;\n border: 1px solid var(--pollar-border);\n padding: 1.75rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n background-color: var(--pollar-bg);\n box-sizing: border-box;\n font-family: inherit;\n}\n\n/* ---- Header ---- */\n.pollar-tx-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1.25rem;\n}\n\n.pollar-tx-title {\n font-size: 1.125rem;\n font-weight: 700;\n color: var(--pollar-text);\n margin: 0;\n}\n\n.pollar-tx-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--pollar-muted);\n padding: 4px;\n display: flex;\n align-items: center;\n border-radius: 6px;\n transition: color 150ms, background 150ms;\n}\n\n.pollar-tx-close:hover {\n color: var(--pollar-text);\n background: var(--pollar-border);\n}\n\n/* ---- Summary card ---- */\n.pollar-tx-summary {\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 10px;\n padding: 1rem 1.25rem;\n margin-bottom: 1rem;\n}\n\n.pollar-tx-summary-title {\n font-size: 0.8125rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n margin: 0 0 0.625rem;\n}\n\n.pollar-tx-summary-lines {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n overflow-x: auto;\n}\n\n.pollar-tx-summary-line {\n font-size: 0.875rem;\n font-family: monospace;\n white-space: nowrap;\n color: var(--pollar-text);\n}\n\n/* ---- Meta row (network / fee) ---- */\n.pollar-tx-meta {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 1.25rem;\n}\n\n.pollar-tx-meta-item {\n flex: 1;\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 8px;\n padding: 0.625rem 0.875rem;\n}\n\n.pollar-tx-meta-label {\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n display: block;\n margin-bottom: 0.125rem;\n}\n\n.pollar-tx-meta-value {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--pollar-text);\n}\n\n/* ---- Result (success hash) ---- */\n.pollar-tx-result {\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 8px;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n word-break: break-all;\n}\n\n.pollar-tx-result-label {\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--pollar-muted);\n display: block;\n margin-bottom: 0.25rem;\n}\n\n.pollar-tx-result-hash {\n font-size: 0.8125rem;\n font-family: monospace;\n color: var(--pollar-text);\n}\n\n.pollar-tx-result-actions {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.625rem;\n}\n\n.pollar-tx-result-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.75rem;\n border-radius: 6px;\n border: 1px solid var(--pollar-border);\n background: none;\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--pollar-muted);\n cursor: pointer;\n text-decoration: none;\n transition: color 150ms, background 150ms;\n}\n\n.pollar-tx-result-btn:hover {\n color: var(--pollar-text);\n background: var(--pollar-input-bg);\n}\n\n/* ---- Sign button ---- */\n.pollar-tx-sign-btn {\n width: 100%;\n height: var(--pollar-buttons-height, 44px);\n border: none;\n border-radius: var(--pollar-buttons-border-radius, 8px);\n background: var(--pollar-accent, #005DB4);\n color: #fff;\n font-size: 0.9375rem;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 150ms;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n}\n\n.pollar-tx-sign-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pollar-tx-sign-btn:not(:disabled):hover {\n opacity: 0.88;\n}\n\n/* ---- Spinner (reuse pollar-spin) ---- */\n.pollar-tx-spinner {\n animation: pollar-spin 0.9s linear infinite;\n}\n\n/* ---- Status banner ---- */\n.pollar-tx-status {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.8125rem;\n padding: 0.5rem 0;\n min-height: 1.75rem;\n color: var(--pollar-muted);\n}\n\n.pollar-tx-status[data-kind=\"ERROR\"] {\n color: var(--pollar-error-text, #dc2626);\n}\n\n.pollar-tx-status[data-kind=\"SUCCESS\"] {\n color: var(--pollar-success-text, #16a34a);\n}\n\n/* ---- Footer ---- */\n.pollar-tx-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n margin-top: 1rem;\n padding-top: 0.75rem;\n border-top: 1px solid var(--pollar-border);\n}\n\n.pollar-tx-footer-protected {\n font-size: 0.75rem;\n color: var(--pollar-muted);\n}\n\n.pollar-tx-footer-brand {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.pollar-tx-footer-logo {\n height: 14px;\n width: 14px;\n object-fit: contain;\n}\n\n.pollar-tx-footer-name {\n font-size: 0.75rem;\n font-weight: 700;\n color: var(--pollar-text);\n}\n\n/* ---- XDR toggle ---- */\n.pollar-tx-xdr {\n margin-bottom: 1rem;\n}\n\n.pollar-tx-xdr-toggle {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--pollar-muted);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n transition: color 150ms;\n}\n\n.pollar-tx-xdr-toggle:hover {\n color: var(--pollar-text);\n}\n\n.pollar-tx-xdr-content {\n margin: 0.5rem 0 0;\n padding: 0.75rem;\n background: var(--pollar-input-bg, rgba(0,0,0,0.04));\n border: 1px solid var(--pollar-border);\n border-radius: 8px;\n font-family: monospace;\n font-size: 0.6875rem;\n color: var(--pollar-text);\n overflow-x: auto;\n white-space: pre;\n word-break: normal;\n max-height: 120px;\n overflow-y: auto;\n}","/* ---- Unauthenticated: login button ---- */\n/* flex items-center gap-3 rounded-xl px-6 py-3.5 text-base font-bold text-white shadow-lg transition-all */\n.wallet-login-btn {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n border-radius: 0.75rem;\n border: none;\n padding: 0.875rem 1.5rem;\n font-size: 1rem;\n font-weight: 700;\n color: #fff;\n cursor: pointer;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n transition: all 0.15s;\n}\n\n/* hover:opacity-90 hover:shadow-xl */\n.wallet-login-btn:hover {\n opacity: 0.9;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n}\n\n/* active:scale-[0.98] */\n.wallet-login-btn:active {\n transform: scale(0.98);\n}\n\n/* brightness-0 invert — white logo on colored background */\n.wallet-btn-logo {\n width: 22px;\n height: 22px;\n object-fit: contain;\n filter: brightness(0) invert(1);\n}\n\n/* ---- Authenticated: wrapper + dropdown ---- */\n.wallet-wrapper {\n position: relative;\n display: inline-block;\n}\n\n.wallet-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border-radius: 8px;\n color: #fff;\n font-size: 14px;\n font-weight: 500;\n border: none;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.wallet-btn:hover {\n opacity: 0.9;\n}\n\n.wallet-chevron {\n width: 12px;\n height: 12px;\n transition: transform 0.15s;\n}\n\n.wallet-chevron.open {\n transform: rotate(180deg);\n}\n\n.wallet-dropdown {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n min-width: 180px;\n border: 1px solid;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n z-index: 50;\n}\n\n.wallet-dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 11px 16px;\n font-size: 14px;\n font-weight: 400;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.wallet-dropdown-item:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wallet-dropdown-item.danger {\n color: #dc2626;\n}\n\n.wallet-dropdown-item.danger:hover {\n background: #fef2f2;\n}"],"mappings":";AAAA,CAAC;AACC,sBAAoB;AACpB,cAAY;AACZ,oBAAkB;AAClB,UAAQ,IAAI,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACtC,iBAAe,IAAI,8BAA8B,EAAE;AACnD,cAAY;AACZ,SAAO;AACP,UAAQ;AACR,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL;AAAA,IAAa,aAAa;AAAA,IAAE,kBAAkB;AAAA,IAAE,UAAU;AAAA,IAAE,SAAS;AAAA,IAAE,KAAK;AAAA,IAAE;AAC9E,aAAW;AACX,eAAa;AACb,UAAQ,IAAI,uBAAuB,EAAE;AACrC,kBAAgB;AAChB,WAAS;AACT,YAAU;AACV,WAAS,EAAE;AACX,cAAY,iBAAiB,IAAI,EAAE,WAAW;AAC9C,eAAa;AACb,SAAO;AACP,aAAW;AACX,aAAW;AACX,eAAa;AACf;AAEA,CAAC;AACC,SAAO;AACP,UAAQ;AACR,cAAY;AACZ,eAAa;AACf;AAEA,CAAC;AACC,aAAW;AACX,YAAU;AACV,iBAAe;AACjB;AAEA,CA1CC,aA0Ca,KAAK,UAAU;AAC3B,oBAAkB;AAClB,cAAY,EAAE,IAAI,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1E;AAEA,CA/CC,aA+Ca,KAAK,UAAU;AAC3B,oBAAkB;AACpB;AAEA,CAnDC,aAmDa;AACZ,UAAQ;AACR,oBAAkB;AAClB,gBAAc,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACpC;AAEA,CAzDC,aAyDa,UAAU,CA5BvB;AA6BD,CA1DC,aA0Da,UAAU,CAtBvB;AAuBC,WAAS;AACX;;;AC5DA,CAAC;AACG,oBAAkB;AAClB,uBAAqB;AACrB,mBAAiB;AACjB,sBAAoB;AACpB,oBAAkB;AAClB,oBAAkB;AAClB,UAAQ,IAAI,MAAM;AAClB,yBAAuB,IAAI,8BAA8B,EAAE;AAC3D,iBAAe,IAAI,8BAA8B,EAAE;AACnD,sBAAoB;AACpB,cAAY;AACZ,SAAO;AACP,UAAQ;AACR;AAAA,IAAa,QAAQ;AAAA,IAAE,KAAK;AAAA,IAAE;AAC9B,aAAW;AACX,UAAQ,IAAI,uBAAuB,EAAE;AACrC,kBAAgB;AAChB,WAAS;AACT,YAAU;AACV,WAAS,EAAE;AACX,YAAU;AACV,cAAY;AACZ;AAAA,IAAoB,iBAAiB,KAAK;AAAA,IAAE,aAAa,KAAK;AAAA,IAAE,WAAW;AAC3E;AAAA,IAAY,iBAAiB,KAAK;AAAA,IAAE,aAAa,KAAK;AAAA,IAAE,WAAW;AACnE,kBAAgB;AAChB,eAAa;AACb,SAAO;AACP,aAAW;AACX,aAAW;AACf;AAEA,CAhCC,oBAgCoB,CAAC;AAClB,UAAQ;AACR,gBAAc;AACd,aAAW;AACX,SAAO;AACX;AAEA,CAvCC,oBAuCoB,CAAC;AAClB,uBAAqB;AACrB,eAAa;AACb,WAAS;AACT,0BAAwB;AACxB,kBAAgB;AAChB,qBAAmB;AACnB,aAAW;AACX,UAAQ;AACR,mBAAiB;AACjB,YAAU;AACV,SAAO;AACX;AAEA,CArDC,oBAqDoB,CAAC;AAClB,qBAAmB;AACnB,aAAW;AACX;AAAA,IAAa,QAAQ;AAAA,IAAE,KAAK;AAAA,IAAE;AAC9B,eAAa;AACb,YAAU;AACV,iBAAe;AACf,kBAAgB;AACpB;AAEA,CA/DC,oBA+DoB,CAAC;AAClB,sBAAoB,QAAQ;AAC5B,cAAY,QAAQ;AACpB,UAAQ;AACR,QAAM;AACN,WAAS;AACT,YAAU;AACV,SAAO;AACP,OAAK;AACT;AAEA,CA1EC,mBA0EmB;AAChB,UAAQ;AACR,oBAAkB;AAClB,gBAAc;AAClB;AAEA,CAhFC,mBAgFmB,UAAU,CA3BR;AA4BlB,WAAS;AACb;AAEA,CApFC,mBAoFmB,UAAU,CApDR;AAqDlB,WAAS;AACb;AAEA,CAxFC,mBAwFmB,KAAK,UAAU,QAAQ,CAzBrB;AA0BtB,CAzFC,mBAyFmB,KAAK,UAAU,OAAO,CA1BpB;AA2BlB,oBAAkB;AAClB,WAAS;AACb;AAEA,CA9FC,mBA8FmB,KAAK,UAAU;AAC/B,sBAAoB,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtF,cAAY,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClF;AAEA,CAnGC,mBAmGmB,KAAK,UAAU,OAAO,CApCpB;AAqClB,oBAAkB;AAClB,WAAS;AACb;;;ACtGA,WAAW;AACP;AACI,eAAW,OAAO;AACtB;AACJ;AAGA,CAAC;AACG,YAAU;AACV,SAAO;AACP,aAAW;AACX,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,WAAS;AACT,cAAY,EAAE,KAAK,KAAK,MAAM,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5C,oBAAkB,IAAI;AACtB,cAAY,IAAI;AAChB,cAAY;AAChB;AAGA,CAAC;AACG,YAAU;AACV,OAAK;AACL,QAAM;AACN,WAAS;AACT,eAAa;AACb,OAAK;AACL,WAAS,SAAS;AAClB,iBAAe,IAAI,8BAA8B,EAAE;AACnD,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB;AAClB,SAAO,IAAI;AACX,aAAW;AACX,eAAa;AACb,UAAQ;AACR,cAAY,IAAI;AACpB;AAEA,CAlBC,eAkBe;AACZ,oBAAkB,IAAI;AACtB,SAAO,IAAI;AACX,gBAAc,IAAI;AACtB;AAGA,CAAC;AACG,iBAAe;AACf,cAAY;AAChB;AAEA,CAAC;AACG,iBAAe;AACf,WAAS;AACT,mBAAiB;AACrB;AAEA,CAAC;AACG,UAAQ;AACR,SAAO;AACP,cAAY;AACZ,UAAQ,YAAY,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChD;AAEA,CAAC;AACG,UAAQ,EAAE,EAAE;AACZ,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACf;AAEA,CAAC;AACG,UAAQ;AACR,aAAW;AACX,SAAO,IAAI;AACf;AAGA,CAAC;AACG,UAAQ,EAAE,EAAE;AACZ,WAAS,KAAK;AACd,iBAAe;AACf,oBAAkB,IAAI;AACtB,UAAQ,IAAI,MAAM,IAAI;AACtB,SAAO,IAAI;AACX,aAAW;AACX,eAAa;AACjB;AAGA,CAAC;AACG,iBAAe;AACnB;AAEA,CAAC;AACG,SAAO;AACP,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB,IAAI;AACtB,WAAS,SAAS;AAClB,aAAW;AACX,SAAO,IAAI;AACX,WAAS;AACT,cAAY;AAChB;AAEA,CAZC,kBAYkB;AACf,SAAO,IAAI;AACf;AAEA,CAhBC,kBAgBkB;AACf,cAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AAC1B,gBAAc;AAClB;AAEA,CArBC,kBAqBkB;AACf,WAAS;AACT,UAAQ;AACZ;AAEA,CAAC;AACG,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,cAAY;AACZ,SAAO;AACP,UAAQ,IAAI,uBAAuB,EAAE;AACrC,UAAQ;AACR,iBAAe,IAAI,8BAA8B,EAAE;AACnD,WAAS,EAAE;AACX,aAAW;AACX,eAAa;AACb,SAAO;AACP,oBAAkB,IAAI;AACtB,UAAQ;AACR,cAAY,IAAI;AAChB,cAAY;AAChB;AAEA,CAnBC,iBAmBiB,MAAM,KAAK;AACzB,WAAS;AACT,cAAY,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/C;AAEA,CAxBC,iBAwBiB,OAAO,KAAK;AAC1B,aAAW,MAAM;AACrB;AAEA,CA5BC,iBA4BiB;AACd,WAAS;AACT,UAAQ;AACZ;AAGA,CAAC;AACG,YAAU;AACV,UAAQ,QAAQ;AACpB;AAEA,CAAC;AACG,YAAU;AACV,SAAO;AACP,WAAS;AACT,eAAa;AACb,kBAAgB;AACpB;AAEA,CARC,mBAQmB;AAChB,WAAS;AACT,SAAO;AACP,cAAY,IAAI,MAAM,IAAI;AAC9B;AAEA,CAAC;AACG,YAAU;AACV,WAAS;AACT,mBAAiB;AACjB,aAAW;AACf;AAEA,CAAC;AACG,WAAS,EAAE;AACX,eAAa;AACb,SAAO,IAAI;AACX,oBAAkB,IAAI;AAC1B;AAGA,CAAC;AACG,iBAAe;AACf,WAAS;AACT,kBAAgB;AAChB,OAAK;AACT;AAEA,CAAC;AACG,WAAS;AACT,SAAO;AACP,UAAQ,IAAI,uBAAuB,EAAE;AACrC,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,iBAAe,IAAI,8BAA8B,EAAE;AACnD,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB,IAAI;AACtB,WAAS,EAAE;AACX,UAAQ;AACR,cAAY,IAAI;AAChB,cAAY;AAChB;AAEA,CAhBC,iBAgBiB,MAAM,KAAK;AACzB,aAAW,MAAM;AACjB,cAAY,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7C;AAEA,CArBC,iBAqBiB,OAAO,KAAK;AAC1B,aAAW,MAAM;AACrB;AAEA,CAzBC,iBAyBiB;AACd,WAAS;AACT,UAAQ;AACZ;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACf;AAGA,CAAC;AACG,WAAS;AACT,kBAAgB;AAChB,OAAK;AACT;AAEA,CAAC;AACG,UAAQ;AACR,aAAW;AACX,eAAa;AACb,cAAY;AACZ,kBAAgB;AAChB,kBAAgB;AAChB,SAAO,IAAI;AACf;AAEA,CAAC;AACG,WAAS;AACT,SAAO;AACP,UAAQ,IAAI,uBAAuB,EAAE;AACrC,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,iBAAe,IAAI,8BAA8B,EAAE;AACnD,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB,UAAU,GAAG,IAAI,EAAE,IAAI,iBAAiB,EAAE,EAAE;AAC9D,SAAO,IAAI;AACX,WAAS,EAAE;AACX,aAAW;AACX,eAAa;AACb,UAAQ;AACR,cAAY,IAAI;AAChB,cAAY;AAChB;AAEA,CAnBC,iBAmBiB,MAAM,KAAK;AACzB,aAAW,MAAM;AACjB,cAAY,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7C;AAEA,CAxBC,iBAwBiB,OAAO,KAAK;AAC1B,aAAW,MAAM;AACrB;AAEA,CA5BC,iBA4BiB;AACd,WAAS;AACT,UAAQ;AACZ;AAEA,CAAC;AACG,SAAO;AACP,UAAQ;AACR,eAAa;AACjB;AAGA,CAAC;AACG,iBAAe;AACnB;AAEA,CAAC;AACG,UAAQ,EAAE,EAAE;AACZ,aAAW;AACX,SAAO,IAAI;AACX,cAAY;AAChB;AAEA,CAAC;AACG,WAAS;AACT,OAAK;AACL,mBAAiB;AACjB,iBAAe;AACnB;AAEA,CAAC;AACG,SAAO;AACP,UAAQ;AACR,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB,IAAI;AACtB,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACX,cAAY;AACZ,WAAS;AACT,cAAY;AAChB;AAEA,CAdC,iBAciB;AACd,cAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AAC1B,gBAAc;AAClB;AAEA,CAnBC,iBAmBiB;AACd,WAAS;AACT,UAAQ;AACZ;AAGA,CAAC;AACG,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,WAAS,KAAK;AACd,cAAY;AAChB;AAEA,CATC,cASc;AACX,aAAW;AACX,eAAa;AACjB;AAEA,CAAC;AACG,eAAa;AACb,WAAS,IAAI;AACb,iBAAe,IAAI,8BAA8B,EAAE;AACnD,UAAQ,IAAI,MAAM;AAClB,cAAY;AACZ,SAAO;AACP,aAAW;AACX,eAAa;AACb,UAAQ;AACR,WAAS;AACT,cAAY,QAAQ;AACxB;AAEA,CAdC,oBAcoB;AACjB,WAAS;AACb;AAEA,CAhCC,aAgCa,CAAC;AACX,SAAO;AACX;AAEA,CApCC,aAoCa,CAAC;AACX,SAAO;AACX;AAEA,CAxCC,aAwCa,CAAC;AACX,SAAO,IAAI;AACf;AAEA,CA5CC,aA4Ca,CAAC,mBAAqB;AAChC,aAAW,YAAY,GAAG,OAAO;AACrC;AAGA,CAAC;AACG,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,cAAY,IAAI,MAAM,IAAI;AAC1B,eAAa;AACjB;AAEA,CAAC;AACG,aAAW;AACX,SAAO,IAAI;AACf;AAEA,CAAC;AACG,WAAS;AACT,eAAa;AACb,OAAK;AACT;AAEA,CAAC;AACG,UAAQ;AACR,SAAO;AACP,cAAY;AAChB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACf;AAEA,CAAC;AACG,aAAW;AACX,SAAO,IAAI;AACX,WAAS;AACb;AAGA,CAAC;AACG,YAAU;AACV,SAAO;AACP,WAAS;AACT,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,oBAAkB,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC;;;AC1aA,CAAC;AACG,SAAO;AACP,aAAW;AACX,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,WAAS;AACT,cAAY,EAAE,KAAK,KAAK,MAAM,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5C,oBAAkB,IAAI;AACtB,cAAY;AACZ,eAAa;AACjB;AAGA,CAAC;AACG,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,iBAAe;AACnB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACX,UAAQ;AACZ;AAEA,CAAC;AACG,cAAY;AACZ,UAAQ;AACR,UAAQ;AACR,SAAO,IAAI;AACX,WAAS;AACT,WAAS;AACT,eAAa;AACb,iBAAe;AACf,cAAY,MAAM,KAAK,EAAE,WAAW;AACxC;AAEA,CAZC,eAYe;AACZ,SAAO,IAAI;AACX,cAAY,IAAI;AACpB;AAGA,CAAC;AACG,cAAY,IAAI,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe;AACf,WAAS,KAAK;AACd,iBAAe;AACnB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,kBAAgB;AAChB,kBAAgB;AAChB,SAAO,IAAI;AACX,UAAQ,EAAE,EAAE;AAChB;AAEA,CAAC;AACG,cAAY;AACZ,WAAS;AACT,UAAQ;AACR,WAAS;AACT,kBAAgB;AAChB,OAAK;AACL,cAAY;AAChB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,eAAa;AACb,SAAO,IAAI;AACf;AAGA,CAAC;AACG,WAAS;AACT,OAAK;AACL,iBAAe;AACnB;AAEA,CAAC;AACG,QAAM;AACN,cAAY,IAAI,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe;AACf,WAAS,SAAS;AACtB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,kBAAgB;AAChB,kBAAgB;AAChB,SAAO,IAAI;AACX,WAAS;AACT,iBAAe;AACnB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACf;AAGA,CAAC;AACG,cAAY,IAAI,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe;AACf,WAAS,QAAQ;AACjB,iBAAe;AACf,cAAY;AAChB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,kBAAgB;AAChB,kBAAgB;AAChB,SAAO,IAAI;AACX,WAAS;AACT,iBAAe;AACnB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACf;AAEA,CAAC;AACG,WAAS;AACT,OAAK;AACL,cAAY;AAChB;AAEA,CAAC;AACG,WAAS;AACT,eAAa;AACb,OAAK;AACL,WAAS,SAAS;AAClB,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,cAAY;AACZ,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACX,UAAQ;AACR,mBAAiB;AACjB,cAAY,MAAM,KAAK,EAAE,WAAW;AACxC;AAEA,CAhBC,oBAgBoB;AACjB,SAAO,IAAI;AACX,cAAY,IAAI;AACpB;AAGA,CAAC;AACG,SAAO;AACP,UAAQ,IAAI,uBAAuB,EAAE;AACrC,UAAQ;AACR,iBAAe,IAAI,8BAA8B,EAAE;AACnD,cAAY,IAAI,eAAe,EAAE;AACjC,SAAO;AACP,aAAW;AACX,eAAa;AACb,UAAQ;AACR,cAAY,QAAQ;AACpB,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACT;AAEA,CAjBC,kBAiBkB;AACf,WAAS;AACT,UAAQ;AACZ;AAEA,CAtBC,kBAsBkB,KAAK,UAAU;AAC9B,WAAS;AACb;AAGA,CAAC;AACG,aAAW,YAAY,KAAK,OAAO;AACvC;AAGA,CAAC;AACG,WAAS;AACT,eAAa;AACb,OAAK;AACL,aAAW;AACX,WAAS,OAAO;AAChB,cAAY;AACZ,SAAO,IAAI;AACf;AAEA,CAVC,gBAUgB,CAAC;AACd,SAAO,IAAI,mBAAmB,EAAE;AACpC;AAEA,CAdC,gBAcgB,CAAC;AACd,SAAO,IAAI,qBAAqB,EAAE;AACtC;AAGA,CAAC;AACG,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,cAAY;AACZ,eAAa;AACb,cAAY,IAAI,MAAM,IAAI;AAC9B;AAEA,CAAC;AACG,aAAW;AACX,SAAO,IAAI;AACf;AAEA,CAAC;AACG,WAAS;AACT,eAAa;AACb,OAAK;AACT;AAEA,CAAC;AACG,UAAQ;AACR,SAAO;AACP,cAAY;AAChB;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACf;AAGA,CAAC;AACG,iBAAe;AACnB;AAEA,CAAC;AACG,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,UAAQ;AACR,aAAW;AACX,eAAa;AACb,SAAO,IAAI;AACX,WAAS;AACT,eAAa;AACb,OAAK;AACL,cAAY,MAAM;AACtB;AAEA,CAdC,oBAcoB;AACjB,SAAO,IAAI;AACf;AAEA,CAAC;AACG,UAAQ,OAAO,EAAE;AACjB,WAAS;AACT,cAAY,IAAI,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe;AACf,eAAa;AACb,aAAW;AACX,SAAO,IAAI;AACX,cAAY;AACZ,eAAa;AACb,cAAY;AACZ,cAAY;AACZ,cAAY;AAChB;;;AC5RA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK;AACL,iBAAe;AACf,UAAQ;AACR,WAAS,SAAS;AAClB,aAAW;AACX,eAAa;AACb,SAAO;AACP,UAAQ;AACR,cAAY,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9E,cAAY,IAAI;AAClB;AAGA,CAhBC,gBAgBgB;AACf,WAAS;AACT,cAAY,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClF;AAGA,CAtBC,gBAsBgB;AACf,aAAW,MAAM;AACnB;AAGA,CAAC;AACC,SAAO;AACP,UAAQ;AACR,cAAY;AACZ,UAAQ,WAAW,GAAG,OAAO;AAC/B;AAGA,CAAC;AACC,YAAU;AACV,WAAS;AACX;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK;AACL,WAAS,KAAK;AACd,iBAAe;AACf,SAAO;AACP,aAAW;AACX,eAAa;AACb,UAAQ;AACR,UAAQ;AACR,cAAY,WAAW;AACzB;AAEA,CAdC,UAcU;AACT,WAAS;AACX;AAEA,CAAC;AACC,SAAO;AACP,UAAQ;AACR,cAAY,UAAU;AACxB;AAEA,CANC,cAMc,CAAC;AACd,aAAW,OAAO;AACpB;AAEA,CAAC;AACC,YAAU;AACV,OAAK,KAAK,KAAK,EAAE;AACjB,SAAO;AACP,aAAW;AACX,UAAQ,IAAI;AACZ,iBAAe;AACf,cAAY,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,YAAU;AACV,WAAS;AACX;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK;AACL,SAAO;AACP,WAAS,KAAK;AACd,aAAW;AACX,eAAa;AACb,cAAY;AACZ,UAAQ;AACR,UAAQ;AACR,cAAY;AACZ,cAAY,WAAW;AACzB;AAEA,CAfC,oBAeoB;AACnB,cAAY,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5B;AAEA,CAnBC,oBAmBoB,CAAC;AACpB,SAAO;AACT;AAEA,CAvBC,oBAuBoB,CAJC,MAIM;AAC1B,cAAY;AACd;","names":[]}
package/dist/index.js CHANGED
@@ -44,52 +44,21 @@ var PollarModalFooter = () => {
44
44
  ] })
45
45
  ] });
46
46
  };
47
- var LOGIN_CODE_MESSAGES = {
48
- NONE: { text: "" },
49
- LOGOUT: { text: "Logged out" },
50
- CREATE_SESSION_START: { text: "Starting session\u2026" },
51
- CREATE_SESSION_ERROR: { text: "Failed to start session" },
52
- CREATE_SESSION_SUCCESS: { text: "Session ready" },
53
- EMAIL_AUTH_START: { text: "Sending code\u2026" },
54
- EMAIL_AUTH_START_ERROR: { text: "Failed to send code" },
55
- EMAIL_AUTH_START_SUCCESS: { text: "Code sent \u2014 check your inbox" },
56
- EMAIL_AUTH_CODE_ERROR: { text: "Invalid code \u2014 try again" },
57
- EMAIL_AUTH_CODE_SUCCESS: { text: "Code verified!" },
58
- WALLET_AUTH_START: { text: "Connecting wallet\u2026" },
59
- WALLET_AUTH_FREIGHTER_NOT_INSTALLED: { text: "Freighter is not installed" },
60
- WALLET_AUTH_ALBEDO_NOT_INSTALLED: { text: "Albedo is not installed" },
61
- WALLET_AUTH_CONNECTED: { text: "Wallet connected" },
62
- WALLET_AUTH_LOGIN_START: { text: "Signing in with wallet\u2026" },
63
- WALLET_AUTH_LOGIN_START_SUCCESS: { text: "Wallet signed in" },
64
- WALLET_AUTH_LOGIN_START_ERROR: { text: "Failed to sign in with wallet" },
65
- WALLET_AUTH_ERROR: { text: "Unknow wallet error" },
66
- STREAM_POLL_START: { text: "Waiting for authentication\u2026" },
67
- STREAM_POLL_EVENT: { text: "Waiting for authentication\u2026" },
68
- STREAM_POLL_READY: { text: "Authenticated!" },
69
- FETCH_SESSION_START: { text: "Loading session\u2026" },
70
- FETCH_SESSION_SUCCESS: { text: "Welcome back!" },
71
- FETCH_SESSION_ERROR: { text: "Failed to load session" },
72
- NO_RESTORED_SESSION: { text: "" },
73
- RESTORED_SESSION_SUCCESS: { text: "Session restored" },
74
- RESTORED_SESSION_ERROR: { text: "Failed to restore session" },
75
- SESSION_STORED: { text: "Session saved" },
76
- ERROR_UNKNOWN: { text: "Something went wrong" },
77
- ABORTED: { text: "Login cancelled" },
78
- // transaction
79
- BUILD_TRANSACTION_START: { text: "Building transaction\u2026" },
80
- BUILD_TRANSACTION_SUCCESS: { text: "Transaction built, ready to sign and send" },
81
- BUILD_TRANSACTION_ERROR: { text: "Failed to build transaction" },
82
- BUILD_TRANSACTION_ERROR_NO_WALLET: { text: "No wallet connected" },
83
- SIGN_SEND_TRANSACTION_START: { text: "Signing and sending transaction\u2026" },
84
- SIGN_SEND_TRANSACTION_SUCCESS: { text: "Transaction signed" },
85
- SIGN_SEND_TRANSACTION_ERROR: { text: "Signing rejected" }
47
+ var TRANSACTION_CODE_MESSAGES = {
48
+ NONE: "",
49
+ BUILD_TRANSACTION_START: "Building transaction\u2026",
50
+ BUILD_TRANSACTION_SUCCESS: "Transaction built, ready to sign and send",
51
+ BUILD_TRANSACTION_ERROR: "Failed to build transaction",
52
+ BUILD_TRANSACTION_ERROR_NO_WALLET: "No wallet connected",
53
+ SIGN_SEND_TRANSACTION_START: "Signing and sending transaction\u2026",
54
+ SIGN_SEND_TRANSACTION_SUCCESS: "Transaction signed",
55
+ SIGN_SEND_TRANSACTION_ERROR: "Signing rejected"
86
56
  };
87
- function ModalStatusBanner({ code, status, onCancel, onRetry }) {
88
- if (!code) {
57
+ function ModalStatusBanner({ message, status, onCancel, onRetry }) {
58
+ if (!message && status === core.StateStatus.NONE) {
89
59
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pollar-status" });
90
60
  }
91
- const { text } = LOGIN_CODE_MESSAGES[code] || { text: "" };
92
- const isLoading = status === "LOADING";
61
+ const isLoading = status === core.StateStatus.LOADING;
93
62
  const icon = status === "ERROR" ? /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": true, children: [
94
63
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "7", cy: "7", r: "7", fill: "currentColor" }),
95
64
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4.5 4.5l5 5M9.5 4.5l-5 5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" })
@@ -99,7 +68,7 @@ function ModalStatusBanner({ code, status, onCancel, onRetry }) {
99
68
  ] }) : status === "LOADING" ? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "7", cy: "7", r: "5.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeDasharray: "22 10" }) }) : null;
100
69
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pollar-status", "data-kind": status, children: [
101
70
  icon,
102
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: text }),
71
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: message }),
103
72
  isLoading && onCancel && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "pollar-status-cancel", onClick: onCancel, children: "Cancel" }),
104
73
  status === core.StateStatus.ERROR && onRetry && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "pollar-status-cancel", onClick: onRetry, children: "Retry" })
105
74
  ] });
@@ -210,6 +179,38 @@ var GoogleButton = ({ disabled, onClick }) => {
210
179
  ] })
211
180
  ] });
212
181
  };
182
+ var AUTH_STATE_MESSAGES = {
183
+ idle: "",
184
+ creating_session: "Initializing\u2026",
185
+ entering_email: "",
186
+ sending_email: "Sending\u2026",
187
+ entering_code: "Code sent \u2014 check your inbox",
188
+ verifying_email_code: "Verifying\u2026",
189
+ opening_oauth: "Redirecting\u2026",
190
+ connecting_wallet: "Connecting wallet\u2026",
191
+ wallet_not_installed: "Wallet not installed",
192
+ authenticating_wallet: "Signing in with wallet\u2026",
193
+ authenticating: "Authenticating\u2026",
194
+ authenticated: "Welcome!",
195
+ error: ""
196
+ };
197
+ function authStateToStatus(step) {
198
+ const loading = [
199
+ "creating_session",
200
+ "sending_email",
201
+ "verifying_email_code",
202
+ "opening_oauth",
203
+ "connecting_wallet",
204
+ "authenticating_wallet",
205
+ "authenticating"
206
+ ];
207
+ const success = ["authenticated", "entering_code"];
208
+ const error = ["error", "wallet_not_installed"];
209
+ if (loading.includes(step)) return core.StateStatus.LOADING;
210
+ if (success.includes(step)) return core.StateStatus.SUCCESS;
211
+ if (error.includes(step)) return core.StateStatus.ERROR;
212
+ return core.StateStatus.NONE;
213
+ }
213
214
  function LoginModalTemplate({
214
215
  theme,
215
216
  accentColor,
@@ -219,17 +220,16 @@ function LoginModalTemplate({
219
220
  providers,
220
221
  appName,
221
222
  email = "",
222
- status,
223
- error,
224
223
  onEmailChange,
225
224
  onEmailSubmit,
226
225
  onSocialLogin,
227
226
  onFreighterConnect,
228
227
  onAlbedoConnect,
229
- loginStateCode,
230
- awaitingEmailCode = false,
228
+ authState,
229
+ codeInputKey,
231
230
  onCodeSubmit,
232
- cancelLoginRef,
231
+ onBack,
232
+ onCancel,
233
233
  onRetry
234
234
  }) {
235
235
  const isDark = theme === "dark";
@@ -247,16 +247,22 @@ function LoginModalTemplate({
247
247
  "--pollar-error-border": isDark ? "#7f1d1d" : "#fecaca",
248
248
  "--pollar-error-text": isDark ? "#f87171" : "#dc2626"
249
249
  };
250
+ const status = authStateToStatus(authState.step);
250
251
  const isLoading = status === core.StateStatus.LOADING;
252
+ const isEmailCodeError = authState.step === "error" && (authState.errorCode === core.AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED || authState.errorCode === core.AUTH_ERROR_CODES.EMAIL_CODE_INVALID);
253
+ const awaitingEmailCode = authState.step === "entering_code" || authState.step === "verifying_email_code" || isEmailCodeError;
254
+ const statusMessage = authState.step === "error" ? authState.message : AUTH_STATE_MESSAGES[authState.step];
251
255
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pollar-modal", style: cssVars, onClick: (e) => e.stopPropagation(), children: [
252
256
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pollar-header", children: [
253
257
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pollar-logo-wrap", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoUrl ?? LOGO_POLLAR, alt: "Logo", className: "pollar-logo" }) }),
254
258
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "pollar-title", children: appName }),
255
259
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "pollar-subtitle", children: "Log in or sign up" })
256
260
  ] }),
257
- awaitingEmailCode ? /* @__PURE__ */ jsxRuntime.jsx(EmailCodeInput, { email, onSubmit: onCodeSubmit ?? (() => {
258
- }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
259
- error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pollar-error", children: error }),
261
+ awaitingEmailCode ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
262
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "pollar-back-btn", onClick: onBack, children: "\u2190 Back" }),
263
+ /* @__PURE__ */ jsxRuntime.jsx(EmailCodeInput, { email, onSubmit: onCodeSubmit ?? (() => {
264
+ }) }, codeInputKey)
265
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
260
266
  emailEnabled && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pollar-email-section", children: [
261
267
  /* @__PURE__ */ jsxRuntime.jsx(
262
268
  "input",
@@ -292,74 +298,68 @@ function LoginModalTemplate({
292
298
  ] })
293
299
  ] })
294
300
  ] }),
295
- /* @__PURE__ */ jsxRuntime.jsx(ModalStatusBanner, { code: loginStateCode, status, onCancel: () => cancelLoginRef.current?.(), onRetry }),
301
+ /* @__PURE__ */ jsxRuntime.jsx(
302
+ ModalStatusBanner,
303
+ {
304
+ message: statusMessage,
305
+ status,
306
+ onCancel,
307
+ onRetry: isEmailCodeError ? void 0 : onRetry
308
+ }
309
+ ),
296
310
  /* @__PURE__ */ jsxRuntime.jsx(PollarModalFooter, {})
297
311
  ] });
298
312
  }
299
- function isLoginCode(code) {
300
- return Object.values(core.STATE_VAR_CODES[core.PollarStateVar.AUTHENTICATION]).some((c) => code.startsWith(c));
301
- }
302
313
  function LoginModal({ onClose }) {
303
314
  const [email, setEmail] = react.useState("");
304
315
  const { getClient, styles, config } = usePollar();
305
- const [status, setStatus] = react.useState(core.StateStatus.NONE);
306
- const [error, setError] = react.useState(null);
307
- const [loginStateCode, setLoginStateCode] = react.useState(null);
308
- const [awaitingEmailCode, setAwaitingEmailCode] = react.useState(false);
309
- const [clientSessionId, setClientSessionId] = react.useState(null);
316
+ const [authState, setAuthState] = react.useState(() => getClient().getAuthState());
317
+ const [codeInputKey, setCodeInputKey] = react.useState(0);
318
+ const pendingEmail = react.useRef(null);
310
319
  react.useEffect(() => {
311
- return getClient().onStateChange((stateEntry) => {
312
- if (stateEntry.var === core.PollarStateVar.AUTHENTICATION && isLoginCode(stateEntry.code)) {
313
- setLoginStateCode(stateEntry.code);
314
- setStatus(stateEntry.status);
315
- if (stateEntry.code === core.STATE_VAR_CODES[core.PollarStateVar.AUTHENTICATION].STREAM_POLL_START) {
316
- const data = stateEntry.data;
317
- setClientSessionId(data.clientSessionId);
318
- }
319
- if (stateEntry.code === core.STATE_VAR_CODES[core.PollarStateVar.AUTHENTICATION].EMAIL_AUTH_START_SUCCESS) {
320
- const data = stateEntry.data;
321
- if (data?.code === "SDK_EMAIL_CODE_SENT") {
322
- setAwaitingEmailCode(true);
323
- setClientSessionId(data?.content?.clientSessionId);
324
- }
325
- }
326
- if (stateEntry.code === core.STATE_VAR_CODES[core.PollarStateVar.AUTHENTICATION].FETCH_SESSION_SUCCESS) {
327
- setAwaitingEmailCode(false);
328
- setTimeout(onClose, 1e3);
329
- }
320
+ return getClient().onAuthStateChange((next) => {
321
+ setAuthState(next);
322
+ if (next.step === "entering_email" && pendingEmail.current) {
323
+ getClient().sendEmailCode(pendingEmail.current);
324
+ pendingEmail.current = null;
325
+ }
326
+ if (next.step === "error" && next.errorCode === core.AUTH_ERROR_CODES.EMAIL_CODE_INVALID) {
327
+ setCodeInputKey((k) => k + 1);
328
+ }
329
+ if (next.step === "authenticated") {
330
+ setTimeout(onClose, 1e3);
330
331
  }
331
332
  });
332
333
  }, []);
333
334
  const { theme = "light", accentColor = "#005DB4", logoUrl, emailEnabled, embeddedWallets, providers } = styles;
334
335
  function handleClose() {
335
336
  setEmail("");
336
- setError(null);
337
- setAwaitingEmailCode(false);
338
- setClientSessionId(null);
337
+ getClient().cancelLogin();
339
338
  onClose();
340
339
  }
341
- const cancelLoginRef = react.useRef(null);
342
- function handleEmail() {
343
- if (!email) {
344
- return;
345
- }
346
- const { cancelLogin } = getClient().login({ provider: "email", email });
347
- cancelLoginRef.current = cancelLogin;
340
+ function handleEmailSubmit() {
341
+ if (!email) return;
342
+ pendingEmail.current = email;
343
+ getClient().beginEmailLogin();
348
344
  }
349
345
  function handleSocialLogin(provider) {
350
- const { cancelLogin } = getClient().login({ provider });
351
- cancelLoginRef.current = cancelLogin;
346
+ getClient().loginOAuth(provider);
352
347
  }
353
348
  function handleWalletConnect(type) {
354
- const { cancelLogin } = getClient().login({ provider: "wallet", type });
355
- cancelLoginRef.current = cancelLogin;
349
+ getClient().loginWallet(type);
356
350
  }
357
- async function handleVerifyCode(code) {
358
- if (!clientSessionId) return;
359
- void getClient().verifyEmailCode(clientSessionId, code);
351
+ function handleVerifyCode(code) {
352
+ getClient().verifyEmailCode(code);
353
+ }
354
+ function handleBack() {
355
+ setEmail("");
356
+ getClient().cancelLogin();
360
357
  }
361
358
  function handleRetry() {
362
359
  getClient().logout();
360
+ if (styles.emailEnabled) {
361
+ getClient().beginEmailLogin();
362
+ }
363
363
  }
364
364
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pollar-overlay", onClick: handleClose, children: /* @__PURE__ */ jsxRuntime.jsx(
365
365
  LoginModalTemplate,
@@ -378,17 +378,16 @@ function LoginModal({ onClose }) {
378
378
  },
379
379
  appName: config.application?.name ?? "Pollar",
380
380
  email,
381
- status,
382
- error,
383
381
  onEmailChange: setEmail,
384
- onEmailSubmit: handleEmail,
382
+ onEmailSubmit: handleEmailSubmit,
385
383
  onSocialLogin: handleSocialLogin,
386
384
  onFreighterConnect: () => handleWalletConnect(core.WalletType.FREIGHTER),
387
385
  onAlbedoConnect: () => handleWalletConnect(core.WalletType.ALBEDO),
388
- loginStateCode,
389
- awaitingEmailCode,
386
+ authState,
387
+ codeInputKey,
390
388
  onCodeSubmit: handleVerifyCode,
391
- cancelLoginRef,
389
+ onBack: handleBack,
390
+ onCancel: () => getClient().cancelLogin(),
392
391
  onRetry: handleRetry
393
392
  }
394
393
  ) });
@@ -536,7 +535,7 @@ function TransactionModalTemplate({
536
535
  /* @__PURE__ */ jsxRuntime.jsx(
537
536
  ModalStatusBanner,
538
537
  {
539
- code: transactionStateCode,
538
+ message: TRANSACTION_CODE_MESSAGES[transactionStateCode] ?? "",
540
539
  status
541
540
  }
542
541
  ),
@@ -620,13 +619,6 @@ function PollarProvider({ config, styles: propStyles, children }) {
620
619
  level: "info",
621
620
  ts: 0
622
621
  },
623
- authentication: {
624
- var: "authentication",
625
- code: core.STATE_VAR_CODES.authentication.NONE,
626
- status: core.StateStatus.NONE,
627
- level: "info",
628
- ts: 0
629
- },
630
622
  transaction: {
631
623
  var: "transaction",
632
624
  code: core.STATE_VAR_CODES.transaction.NONE,
@@ -641,25 +633,18 @@ function PollarProvider({ config, styles: propStyles, children }) {
641
633
  return pollarClient.onStateChange((stateEntry) => {
642
634
  setState((prevState) => {
643
635
  if (JSON.stringify(prevState[stateEntry.var]) !== JSON.stringify(stateEntry)) {
644
- return {
645
- ...prevState,
646
- [stateEntry.var]: stateEntry
647
- };
636
+ return { ...prevState, [stateEntry.var]: stateEntry };
648
637
  }
649
638
  return prevState;
650
639
  });
651
- if (stateEntry.var === "authentication") {
652
- if ((stateEntry.code === core.STATE_VAR_CODES.authentication.SESSION_STORED || core.STATE_VAR_CODES.authentication.RESTORED_SESSION_SUCCESS) && core.isValidSession(stateEntry.data)) {
653
- setSessionState((prevState) => {
654
- if (JSON.stringify(prevState) !== JSON.stringify(stateEntry.data)) {
655
- return stateEntry.data;
656
- }
657
- return prevState;
658
- });
659
- }
660
- if (stateEntry.code === core.STATE_VAR_CODES.authentication.LOGOUT) {
661
- setSessionState(null);
662
- }
640
+ });
641
+ }, [pollarClient]);
642
+ react.useEffect(() => {
643
+ return pollarClient.onAuthStateChange((authState) => {
644
+ if (authState.step === "authenticated") {
645
+ setSessionState((prev) => JSON.stringify(prev) !== JSON.stringify(authState.session) ? authState.session : prev);
646
+ } else if (authState.step === "idle") {
647
+ setSessionState(null);
663
648
  }
664
649
  });
665
650
  }, [pollarClient]);
@@ -681,14 +666,12 @@ function PollarProvider({ config, styles: propStyles, children }) {
681
666
  () => ({
682
667
  walletAddress: sessionState?.wallet?.publicKey || "",
683
668
  getClient: () => pollarClient,
684
- // client
685
669
  state,
686
670
  login: (options) => pollarClient.login(options),
687
671
  logout: () => pollarClient.logout(),
688
672
  isAuthenticated: pollarClient.isAuthenticated(),
689
673
  buildTx: (operation, params, options) => pollarClient.buildTx(operation, params, options),
690
674
  submitTx: (signedXdr) => pollarClient.submitTx(signedXdr),
691
- // react
692
675
  sendTransaction: (operation, params, options) => {
693
676
  void pollarClient.buildTx(operation, params, options);
694
677
  setTransactionModalOpen(true);
@@ -697,7 +680,6 @@ function PollarProvider({ config, styles: propStyles, children }) {
697
680
  openLoginModal: () => setLoginModalOpen(true),
698
681
  config: remoteConfig,
699
682
  styles,
700
- // stellar
701
683
  async getBalance(publicKey) {
702
684
  const pk = publicKey || sessionState?.wallet?.publicKey;
703
685
  if (pk) {