@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 +23 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +112 -130
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +113 -131
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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;
|
package/dist/index.css.map
CHANGED
|
@@ -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
|
|
48
|
-
NONE:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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({
|
|
88
|
-
if (!
|
|
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
|
|
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:
|
|
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
|
-
|
|
230
|
-
|
|
228
|
+
authState,
|
|
229
|
+
codeInputKey,
|
|
231
230
|
onCodeSubmit,
|
|
232
|
-
|
|
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.
|
|
258
|
-
|
|
259
|
-
|
|
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(
|
|
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 [
|
|
306
|
-
const [
|
|
307
|
-
const
|
|
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().
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
|
|
337
|
-
setAwaitingEmailCode(false);
|
|
338
|
-
setClientSessionId(null);
|
|
337
|
+
getClient().cancelLogin();
|
|
339
338
|
onClose();
|
|
340
339
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
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
|
-
|
|
351
|
-
cancelLoginRef.current = cancelLogin;
|
|
346
|
+
getClient().loginOAuth(provider);
|
|
352
347
|
}
|
|
353
348
|
function handleWalletConnect(type) {
|
|
354
|
-
|
|
355
|
-
cancelLoginRef.current = cancelLogin;
|
|
349
|
+
getClient().loginWallet(type);
|
|
356
350
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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:
|
|
382
|
+
onEmailSubmit: handleEmailSubmit,
|
|
385
383
|
onSocialLogin: handleSocialLogin,
|
|
386
384
|
onFreighterConnect: () => handleWalletConnect(core.WalletType.FREIGHTER),
|
|
387
385
|
onAlbedoConnect: () => handleWalletConnect(core.WalletType.ALBEDO),
|
|
388
|
-
|
|
389
|
-
|
|
386
|
+
authState,
|
|
387
|
+
codeInputKey,
|
|
390
388
|
onCodeSubmit: handleVerifyCode,
|
|
391
|
-
|
|
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
|
-
|
|
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
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
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) {
|