@pollar/react 0.10.1-rc.8 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -25
- package/dist/index.css +121 -196
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +688 -317
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +688 -317
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -8,15 +8,8 @@ Stellar-based applications.
|
|
|
8
8
|
> live SEP-24 on/off-ramps through `<RampWidget>` (now wired to
|
|
9
9
|
> `client.createOnRamp` / `client.createOffRamp`); and a self-driving Privy
|
|
10
10
|
> adapter (registered interactive adapters are auto-driven to completion before
|
|
11
|
-
> `login({ provider })`).
|
|
12
|
-
> upgrading.
|
|
13
|
-
>
|
|
14
|
-
> **0.8.0 reshapes `<PollarProvider>` props (breaking).** `config` > `client`
|
|
15
|
-
> (now accepts a `PollarClient` instance or a `PollarClientConfig`); `styles`
|
|
16
|
-
> moves under `appConfig.styles`; new `appConfig` prop is the opt-out switch
|
|
17
|
-
> for the remote `/applications/config` fetch (pass it - even `{}` - to skip
|
|
18
|
-
> the fetch). Read the [CHANGELOG](../../CHANGELOG.md) and
|
|
19
|
-
> [UPGRADE.md](../../UPGRADE.md) before upgrading.
|
|
11
|
+
> `login({ provider })`). See the [CHANGELOG](../../CHANGELOG.md) and
|
|
12
|
+
> [UPGRADE.md](../../UPGRADE.md) for the full version history before upgrading.
|
|
20
13
|
|
|
21
14
|
## Installation
|
|
22
15
|
|
|
@@ -107,12 +100,6 @@ Context provider that initialises the Pollar client and makes it available to ch
|
|
|
107
100
|
| `appConfig` | `PollarConfig` | No | Local override of `/applications/config`. **Presence is the opt-out switch**: pass it (even `{}`) and the remote fetch is skipped. Omit it to keep the existing remote-fetch-on-mount behaviour |
|
|
108
101
|
| `adapters` | `PollarAdapters` | No | Named set of `PollarAdapter` objects (e.g. Trustless Work). See below |
|
|
109
102
|
|
|
110
|
-
> **Renamed in 0.8.0** — `config` → `client`, `styles` → `appConfig.styles`.
|
|
111
|
-
> If you were passing `styles={{ ... }}` directly, move it to
|
|
112
|
-
> `appConfig={{ styles: { ... } }}` (which also opts you out of the remote
|
|
113
|
-
> `/applications/config` fetch). See [UPGRADE.md](../../UPGRADE.md) for the
|
|
114
|
-
> full migration matrix.
|
|
115
|
-
|
|
116
103
|
---
|
|
117
104
|
|
|
118
105
|
### `usePollar()`
|
|
@@ -169,6 +156,14 @@ const {
|
|
|
169
156
|
swap, // (quote: SwapQuote, opts?) => Promise<SubmitOutcome>
|
|
170
157
|
openSwapModal, // () => void
|
|
171
158
|
|
|
159
|
+
// Earn (yield vaults + lending — DeFindex + Blend)
|
|
160
|
+
getEarnProviders, // () => Promise<EarnProviderId[]> ([] means Earn is disabled)
|
|
161
|
+
getEarnOpportunities, // (provider: EarnProviderId) => Promise<EarnOpportunity[]>
|
|
162
|
+
getEarnPosition, // (params: EarnPositionParams) => Promise<EarnPosition>
|
|
163
|
+
earnDeposit, // (params: EarnTxParams) => Promise<SubmitOutcome>
|
|
164
|
+
earnWithdraw, // (params: EarnTxParams) => Promise<SubmitOutcome>
|
|
165
|
+
openEarnModal, // () => void
|
|
166
|
+
|
|
172
167
|
// Distribution rules
|
|
173
168
|
openDistributionRulesModal, // () => void
|
|
174
169
|
|
|
@@ -198,9 +193,6 @@ const {
|
|
|
198
193
|
Custody is derived from `wallet`, not a separate field - e.g.
|
|
199
194
|
`wallet?.custody === 'external' ? wallet.provider : null`.
|
|
200
195
|
|
|
201
|
-
> **0.6.0 renames** - `transaction` > `tx`, `openTransactionModal` > `openTxModal`, `config` > `appConfig`,
|
|
202
|
-
> `openRampWidget` > `openRampModal`, `refreshBalance` > `refreshWalletBalance`. Existing code on 0.5.x must update.
|
|
203
|
-
|
|
204
196
|
#### Login options
|
|
205
197
|
|
|
206
198
|
```ts
|
|
@@ -246,15 +238,16 @@ already wired inside `<PollarProvider>` — but they're exported in case you wan
|
|
|
246
238
|
|
|
247
239
|
| Component | Purpose |
|
|
248
240
|
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
249
|
-
| `<WalletButton>` | Drop-in button. Opens login when signed out; signed in, shows the wallet address with a dropdown (Send, Receive, copy address, balance, history, ramp, KYC, distribution rules, sessions, sign out). Inline arc spinner during in-progress transactions |
|
|
241
|
+
| `<WalletButton>` | Drop-in button. Opens login when signed out; signed in, shows the wallet address with a dropdown (Send, Receive, copy address, balance, history, ramp, KYC, distribution rules, sessions, sign out, plus a "Create account" action when the external wallet has no on-chain account yet). Inline arc spinner during in-progress transactions |
|
|
250
242
|
| `<SendModal>` | Full send flow: asset picker, amount, destination, inline build > sign > success/error |
|
|
251
|
-
| `<SwapModal>` | On-chain asset-to-asset swap: pick from/to assets and amount, quote across venues, execute (auto-trustline on the buy asset when needed)
|
|
243
|
+
| `<SwapModal>` | On-chain asset-to-asset swap: pick from/to assets and amount, quote across venues, execute (auto-trustline on the buy asset when needed); paste a custom buy token (code + issuer) |
|
|
244
|
+
| `<EarnModal>` | Deposit/withdraw across DeFindex vaults and Blend pools: provider + opportunity selection with live APY, wallet balance, over-spend guards, and auto-trustline on deposit |
|
|
252
245
|
| `<ReceiveModal>` | Wallet address as QR code with copy-to-clipboard (no external QR dependency required) |
|
|
253
246
|
| `<TxHistoryModal>` | Paginated transaction history with auto-fetch on open and stellar.expert explorer links |
|
|
254
247
|
| `<WalletBalanceModal>` | Stellar account balances with refresh button |
|
|
255
248
|
| `<EnabledAssetsModal>` | The application's dashboard-enabled assets with per-asset trustline state; establish/remove trustlines |
|
|
256
249
|
| `<DistributionRulesModal>` | Manage the wallet's distribution rules |
|
|
257
|
-
| `<SessionsModal>` |
|
|
250
|
+
| `<SessionsModal>` | Lists every active refresh-token family for the current user with device metadata, marks the local session, per-row revoke, and a "Sign out everywhere" button |
|
|
258
251
|
| `<KycModal>` | Identity verification flow - provider selection + status polling _(UI preview - backend coming soon)_ |
|
|
259
252
|
| `<RampWidget>` | Buy/sell crypto via SEP-24 - direction tabs, route comparison, payment instructions (wired to `client.createOnRamp` / `client.createOffRamp`) |
|
|
260
253
|
|
|
@@ -292,7 +285,7 @@ want to swap the chrome but keep the data wiring from `usePollar()`.
|
|
|
292
285
|
`<TxStatusView>` is the shared status component (build → sign → success/error) reused by `TransactionModal` and
|
|
293
286
|
`SendModal`; it's exported on its own for consumers that want to embed the lifecycle elsewhere.
|
|
294
287
|
|
|
295
|
-
>
|
|
288
|
+
> `onWalletConnect` is **optional** on `<LoginModalTemplate>` (defaults to a no-op).
|
|
296
289
|
|
|
297
290
|
---
|
|
298
291
|
|
|
@@ -314,9 +307,6 @@ const trustlessWork: PollarAdapter = {
|
|
|
314
307
|
</PollarProvider>;
|
|
315
308
|
```
|
|
316
309
|
|
|
317
|
-
> **Renamed in 0.7.0** — `EscrowFn` → `AdapterFn` and `EscrowAdapter` → `PollarAdapter`. Runtime contract is
|
|
318
|
-
> unchanged; rename your imports.
|
|
319
|
-
|
|
320
310
|
#### `createPollarAdapterHook(key)`
|
|
321
311
|
|
|
322
312
|
Factory that generates a fully-typed hook mirroring an adapter's API with automatic XDR signing built in:
|
package/dist/index.css
CHANGED
|
@@ -113,29 +113,7 @@
|
|
|
113
113
|
top: 1rem;
|
|
114
114
|
left: 1rem;
|
|
115
115
|
}
|
|
116
|
-
.pollar-modal-refresh-
|
|
117
|
-
background: none;
|
|
118
|
-
border: 1px solid var(--pollar-border);
|
|
119
|
-
cursor: pointer;
|
|
120
|
-
color: var(--pollar-muted);
|
|
121
|
-
padding: 5px 10px;
|
|
122
|
-
display: flex;
|
|
123
|
-
align-items: center;
|
|
124
|
-
gap: 0.375rem;
|
|
125
|
-
border-radius: 6px;
|
|
126
|
-
font-size: 0.75rem;
|
|
127
|
-
font-weight: 500;
|
|
128
|
-
transition: color 150ms, background 150ms;
|
|
129
|
-
}
|
|
130
|
-
.pollar-modal-refresh-btn:hover:not(:disabled) {
|
|
131
|
-
color: var(--pollar-text);
|
|
132
|
-
background: var(--pollar-border);
|
|
133
|
-
}
|
|
134
|
-
.pollar-modal-refresh-btn:disabled {
|
|
135
|
-
opacity: 0.5;
|
|
136
|
-
cursor: not-allowed;
|
|
137
|
-
}
|
|
138
|
-
.pollar-modal-refresh-icon.spinning {
|
|
116
|
+
.pollar-modal-refresh-icon.pollar-spinning {
|
|
139
117
|
animation: pollar-spin 0.8s linear infinite;
|
|
140
118
|
}
|
|
141
119
|
.pollar-modal-actions {
|
|
@@ -186,12 +164,75 @@
|
|
|
186
164
|
border-color: var(--pollar-text);
|
|
187
165
|
}
|
|
188
166
|
.pollar-spinner {
|
|
167
|
+
display: inline-block;
|
|
168
|
+
vertical-align: middle;
|
|
189
169
|
width: 2rem;
|
|
190
170
|
height: 2rem;
|
|
191
171
|
border: 3px solid color-mix(in srgb, var(--pollar-accent) 20%, transparent);
|
|
192
172
|
border-top-color: var(--pollar-accent);
|
|
193
173
|
border-radius: 50%;
|
|
194
174
|
animation: pollar-spin 0.8s linear infinite;
|
|
175
|
+
flex-shrink: 0;
|
|
176
|
+
}
|
|
177
|
+
.pollar-spinner-sm {
|
|
178
|
+
width: 1rem;
|
|
179
|
+
height: 1rem;
|
|
180
|
+
border-width: 2px;
|
|
181
|
+
}
|
|
182
|
+
.pollar-btn-primary .pollar-spinner {
|
|
183
|
+
border-color: rgba(255, 255, 255, 0.35);
|
|
184
|
+
border-top-color: #fff;
|
|
185
|
+
}
|
|
186
|
+
.pollar-spinner-current {
|
|
187
|
+
border-color: color-mix(in srgb, currentColor 25%, transparent);
|
|
188
|
+
border-top-color: currentColor;
|
|
189
|
+
}
|
|
190
|
+
.pollar-loading-block {
|
|
191
|
+
display: flex;
|
|
192
|
+
flex-direction: column;
|
|
193
|
+
align-items: center;
|
|
194
|
+
gap: 0.75rem;
|
|
195
|
+
padding: 2rem 1rem;
|
|
196
|
+
color: var(--pollar-muted);
|
|
197
|
+
font-size: 0.875rem;
|
|
198
|
+
}
|
|
199
|
+
.pollar-inline-loading {
|
|
200
|
+
display: flex;
|
|
201
|
+
align-items: center;
|
|
202
|
+
justify-content: center;
|
|
203
|
+
gap: 0.5rem;
|
|
204
|
+
}
|
|
205
|
+
.pollar-select-loading {
|
|
206
|
+
display: flex;
|
|
207
|
+
align-items: center;
|
|
208
|
+
gap: 0.5rem;
|
|
209
|
+
color: var(--pollar-muted);
|
|
210
|
+
}
|
|
211
|
+
.pollar-tabs {
|
|
212
|
+
display: flex;
|
|
213
|
+
gap: 4px;
|
|
214
|
+
margin-bottom: 1.25rem;
|
|
215
|
+
padding: 4px;
|
|
216
|
+
border: 1px solid var(--pollar-border);
|
|
217
|
+
border-radius: var(--pollar-card-border-radius, 10px);
|
|
218
|
+
background: var(--pollar-input-bg);
|
|
219
|
+
}
|
|
220
|
+
.pollar-tab {
|
|
221
|
+
flex: 1;
|
|
222
|
+
height: 36px;
|
|
223
|
+
border: none;
|
|
224
|
+
border-radius: 6px;
|
|
225
|
+
background: transparent;
|
|
226
|
+
color: var(--pollar-muted);
|
|
227
|
+
font-size: 14px;
|
|
228
|
+
font-weight: 600;
|
|
229
|
+
cursor: pointer;
|
|
230
|
+
transition: color 0.15s, background-color 0.15s;
|
|
231
|
+
}
|
|
232
|
+
.pollar-tab[data-active=true] {
|
|
233
|
+
background: var(--pollar-bg);
|
|
234
|
+
color: var(--pollar-accent);
|
|
235
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
195
236
|
}
|
|
196
237
|
.pollar-modal-empty {
|
|
197
238
|
text-align: center;
|
|
@@ -467,7 +508,7 @@
|
|
|
467
508
|
padding: 0.1875rem 0.5rem;
|
|
468
509
|
white-space: nowrap;
|
|
469
510
|
}
|
|
470
|
-
.pollar-asset-trustline.established {
|
|
511
|
+
.pollar-asset-trustline.pollar-established {
|
|
471
512
|
color: var(--pollar-success-text);
|
|
472
513
|
border-color: var(--pollar-success-text);
|
|
473
514
|
}
|
|
@@ -499,11 +540,11 @@
|
|
|
499
540
|
background: var(--pollar-accent);
|
|
500
541
|
color: #fff;
|
|
501
542
|
}
|
|
502
|
-
.pollar-asset-btn.danger {
|
|
543
|
+
.pollar-asset-btn.pollar-danger {
|
|
503
544
|
color: var(--pollar-error-text);
|
|
504
545
|
border-color: var(--pollar-error-border);
|
|
505
546
|
}
|
|
506
|
-
.pollar-asset-btn.danger:hover:not(:disabled) {
|
|
547
|
+
.pollar-asset-btn.pollar-danger:hover:not(:disabled) {
|
|
507
548
|
background: var(--pollar-error-text);
|
|
508
549
|
color: #fff;
|
|
509
550
|
}
|
|
@@ -541,32 +582,6 @@
|
|
|
541
582
|
padding: 0.5rem 0.75rem;
|
|
542
583
|
margin-bottom: 1rem;
|
|
543
584
|
}
|
|
544
|
-
.pollar-modal-back {
|
|
545
|
-
display: flex;
|
|
546
|
-
align-items: center;
|
|
547
|
-
justify-content: center;
|
|
548
|
-
width: 2rem;
|
|
549
|
-
height: 2rem;
|
|
550
|
-
padding: 0;
|
|
551
|
-
border-radius: var(--pollar-buttons-border-radius, 6px);
|
|
552
|
-
border: 1px solid var(--pollar-border);
|
|
553
|
-
background-color: transparent;
|
|
554
|
-
color: var(--pollar-muted);
|
|
555
|
-
cursor: pointer;
|
|
556
|
-
transition:
|
|
557
|
-
background-color 0.15s,
|
|
558
|
-
color 0.15s,
|
|
559
|
-
border-color 0.15s;
|
|
560
|
-
}
|
|
561
|
-
.pollar-modal-back:hover:not(:disabled) {
|
|
562
|
-
background-color: var(--pollar-input-bg);
|
|
563
|
-
color: var(--pollar-text);
|
|
564
|
-
border-color: var(--pollar-text);
|
|
565
|
-
}
|
|
566
|
-
.pollar-modal-back:disabled {
|
|
567
|
-
opacity: 0.5;
|
|
568
|
-
cursor: not-allowed;
|
|
569
|
-
}
|
|
570
585
|
.pollar-asset-custom-hint {
|
|
571
586
|
font-size: 0.75rem;
|
|
572
587
|
color: var(--pollar-muted);
|
|
@@ -592,26 +607,6 @@
|
|
|
592
607
|
font-size: 0.6875rem;
|
|
593
608
|
color: var(--pollar-error-text);
|
|
594
609
|
}
|
|
595
|
-
.pollar-asset-submit {
|
|
596
|
-
width: 100%;
|
|
597
|
-
height: var(--pollar-buttons-height, 44px);
|
|
598
|
-
border: none;
|
|
599
|
-
border-radius: var(--pollar-buttons-border-radius, 6px);
|
|
600
|
-
background-color: var(--pollar-accent);
|
|
601
|
-
color: #fff;
|
|
602
|
-
font-size: 0.9375rem;
|
|
603
|
-
font-weight: 700;
|
|
604
|
-
cursor: pointer;
|
|
605
|
-
margin-bottom: 1rem;
|
|
606
|
-
transition: opacity 0.15s;
|
|
607
|
-
}
|
|
608
|
-
.pollar-asset-submit:hover:not(:disabled) {
|
|
609
|
-
opacity: 0.9;
|
|
610
|
-
}
|
|
611
|
-
.pollar-asset-submit:disabled {
|
|
612
|
-
opacity: 0.5;
|
|
613
|
-
cursor: not-allowed;
|
|
614
|
-
}
|
|
615
610
|
|
|
616
611
|
/* src/components/kyc-modal/KycModal.css */
|
|
617
612
|
.pollar-kyc-badge {
|
|
@@ -636,15 +631,11 @@
|
|
|
636
631
|
.pollar-kyc-modal {
|
|
637
632
|
max-width: 500px;
|
|
638
633
|
}
|
|
639
|
-
.pollar-kyc-header {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
margin: 0 0 0.375rem;
|
|
645
|
-
font-size: var(--pollar-modal-heading-size, 1.375rem);
|
|
646
|
-
font-weight: 700;
|
|
647
|
-
color: var(--pollar-text);
|
|
634
|
+
.pollar-kyc-header-text {
|
|
635
|
+
display: flex;
|
|
636
|
+
flex-direction: column;
|
|
637
|
+
gap: 0.25rem;
|
|
638
|
+
min-width: 0;
|
|
648
639
|
}
|
|
649
640
|
.pollar-kyc-subtitle {
|
|
650
641
|
margin: 0;
|
|
@@ -746,7 +737,7 @@
|
|
|
746
737
|
}
|
|
747
738
|
|
|
748
739
|
/* src/components/login-modal/GithubButton.css */
|
|
749
|
-
.github-button {
|
|
740
|
+
.pollar-github-button {
|
|
750
741
|
-webkit-appearance: none;
|
|
751
742
|
appearance: none;
|
|
752
743
|
background-color: var(--pollar-input-bg);
|
|
@@ -778,35 +769,35 @@
|
|
|
778
769
|
width: 100%;
|
|
779
770
|
user-select: none;
|
|
780
771
|
}
|
|
781
|
-
.github-button-icon {
|
|
772
|
+
.pollar-github-button-icon {
|
|
782
773
|
width: 20px;
|
|
783
774
|
height: 20px;
|
|
784
775
|
flex-shrink: 0;
|
|
785
776
|
}
|
|
786
|
-
.github-button-contents {
|
|
777
|
+
.pollar-github-button-contents {
|
|
787
778
|
flex-grow: 0;
|
|
788
779
|
overflow: hidden;
|
|
789
780
|
text-overflow: ellipsis;
|
|
790
781
|
}
|
|
791
|
-
.github-button:not(:disabled):hover {
|
|
782
|
+
.pollar-github-button:not(:disabled):hover {
|
|
792
783
|
border-color: var(--pollar-accent);
|
|
793
784
|
color: var(--pollar-accent);
|
|
794
785
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
795
786
|
}
|
|
796
|
-
.github-button:not(:disabled):active {
|
|
787
|
+
.pollar-github-button:not(:disabled):active {
|
|
797
788
|
transform: scale(0.99);
|
|
798
789
|
}
|
|
799
|
-
.github-button:disabled {
|
|
790
|
+
.pollar-github-button:disabled {
|
|
800
791
|
cursor: default;
|
|
801
792
|
opacity: 0.5;
|
|
802
793
|
}
|
|
803
|
-
.github-button:disabled .github-button-icon,
|
|
804
|
-
.github-button:disabled .github-button-contents {
|
|
794
|
+
.pollar-github-button:disabled .pollar-github-button-icon,
|
|
795
|
+
.pollar-github-button:disabled .pollar-github-button-contents {
|
|
805
796
|
opacity: 38%;
|
|
806
797
|
}
|
|
807
798
|
|
|
808
799
|
/* src/components/login-modal/GoogleButton.css */
|
|
809
|
-
.gsi-material-button {
|
|
800
|
+
.pollar-gsi-material-button {
|
|
810
801
|
-moz-user-select: none;
|
|
811
802
|
-webkit-user-select: none;
|
|
812
803
|
-ms-user-select: none;
|
|
@@ -840,14 +831,14 @@
|
|
|
840
831
|
white-space: nowrap;
|
|
841
832
|
width: 100%;
|
|
842
833
|
}
|
|
843
|
-
.gsi-material-button .gsi-material-button-icon {
|
|
834
|
+
.pollar-gsi-material-button .pollar-gsi-material-button-icon {
|
|
844
835
|
height: 20px;
|
|
845
836
|
margin-right: 0;
|
|
846
837
|
min-width: 20px;
|
|
847
838
|
width: 20px;
|
|
848
839
|
flex-shrink: 0;
|
|
849
840
|
}
|
|
850
|
-
.gsi-material-button .gsi-material-button-content-wrapper {
|
|
841
|
+
.pollar-gsi-material-button .pollar-gsi-material-button-content-wrapper {
|
|
851
842
|
-webkit-align-items: center;
|
|
852
843
|
align-items: center;
|
|
853
844
|
display: flex;
|
|
@@ -861,7 +852,7 @@
|
|
|
861
852
|
position: relative;
|
|
862
853
|
width: 100%;
|
|
863
854
|
}
|
|
864
|
-
.gsi-material-button .gsi-material-button-contents {
|
|
855
|
+
.pollar-gsi-material-button .pollar-gsi-material-button-contents {
|
|
865
856
|
font-family:
|
|
866
857
|
-apple-system,
|
|
867
858
|
BlinkMacSystemFont,
|
|
@@ -872,7 +863,7 @@
|
|
|
872
863
|
text-overflow: ellipsis;
|
|
873
864
|
flex-grow: 0;
|
|
874
865
|
}
|
|
875
|
-
.gsi-material-button .gsi-material-button-state {
|
|
866
|
+
.pollar-gsi-material-button .pollar-gsi-material-button-state {
|
|
876
867
|
-webkit-transition: opacity 0.218s;
|
|
877
868
|
transition: opacity 0.218s;
|
|
878
869
|
bottom: 0;
|
|
@@ -882,31 +873,31 @@
|
|
|
882
873
|
right: 0;
|
|
883
874
|
top: 0;
|
|
884
875
|
}
|
|
885
|
-
.gsi-material-button:disabled {
|
|
876
|
+
.pollar-gsi-material-button:disabled {
|
|
886
877
|
cursor: default;
|
|
887
878
|
background-color: #ffffff61;
|
|
888
879
|
border-color: #1f1f1f1f;
|
|
889
880
|
}
|
|
890
|
-
.gsi-material-button:disabled .gsi-material-button-contents {
|
|
881
|
+
.pollar-gsi-material-button:disabled .pollar-gsi-material-button-contents {
|
|
891
882
|
opacity: 38%;
|
|
892
883
|
}
|
|
893
|
-
.gsi-material-button:disabled .gsi-material-button-icon {
|
|
884
|
+
.pollar-gsi-material-button:disabled .pollar-gsi-material-button-icon {
|
|
894
885
|
opacity: 38%;
|
|
895
886
|
}
|
|
896
|
-
.gsi-material-button:not(:disabled):active .gsi-material-button-state,
|
|
897
|
-
.gsi-material-button:not(:disabled):focus .gsi-material-button-state {
|
|
887
|
+
.pollar-gsi-material-button:not(:disabled):active .pollar-gsi-material-button-state,
|
|
888
|
+
.pollar-gsi-material-button:not(:disabled):focus .pollar-gsi-material-button-state {
|
|
898
889
|
background-color: #303030;
|
|
899
890
|
opacity: 12%;
|
|
900
891
|
}
|
|
901
|
-
.gsi-material-button:not(:disabled):hover {
|
|
892
|
+
.pollar-gsi-material-button:not(:disabled):hover {
|
|
902
893
|
border-color: var(--pollar-accent);
|
|
903
894
|
color: var(--pollar-accent);
|
|
904
895
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
905
896
|
}
|
|
906
|
-
.gsi-material-button:not(:disabled):active {
|
|
897
|
+
.pollar-gsi-material-button:not(:disabled):active {
|
|
907
898
|
transform: scale(0.99);
|
|
908
899
|
}
|
|
909
|
-
.gsi-material-button:not(:disabled):hover .gsi-material-button-state {
|
|
900
|
+
.pollar-gsi-material-button:not(:disabled):hover .pollar-gsi-material-button-state {
|
|
910
901
|
background-color: transparent;
|
|
911
902
|
opacity: 0;
|
|
912
903
|
}
|
|
@@ -954,29 +945,6 @@
|
|
|
954
945
|
.pollar-email-section {
|
|
955
946
|
margin-bottom: 1rem;
|
|
956
947
|
}
|
|
957
|
-
.pollar-email-input {
|
|
958
|
-
width: 100%;
|
|
959
|
-
height: var(--pollar-input-height, 44px);
|
|
960
|
-
padding: 0 1rem;
|
|
961
|
-
border-radius: var(--pollar-input-border-radius, 0.5rem);
|
|
962
|
-
border: 1px solid var(--pollar-border);
|
|
963
|
-
background-color: var(--pollar-input-bg);
|
|
964
|
-
font-size: 1rem;
|
|
965
|
-
color: var(--pollar-text);
|
|
966
|
-
outline: none;
|
|
967
|
-
box-sizing: border-box;
|
|
968
|
-
}
|
|
969
|
-
.pollar-email-input::placeholder {
|
|
970
|
-
color: var(--pollar-muted);
|
|
971
|
-
}
|
|
972
|
-
.pollar-email-input:focus {
|
|
973
|
-
box-shadow: 0 0 0 2px var(--pollar-accent);
|
|
974
|
-
border-color: transparent;
|
|
975
|
-
}
|
|
976
|
-
.pollar-email-input:disabled {
|
|
977
|
-
opacity: 0.5;
|
|
978
|
-
cursor: not-allowed;
|
|
979
|
-
}
|
|
980
948
|
.pollar-divider {
|
|
981
949
|
position: relative;
|
|
982
950
|
margin: 1.25rem 0;
|
|
@@ -1225,34 +1193,6 @@
|
|
|
1225
1193
|
font-size: var(--pollar-modal-subtitle-size, 0.9rem);
|
|
1226
1194
|
color: var(--pollar-muted);
|
|
1227
1195
|
}
|
|
1228
|
-
.pollar-ramp-input-loading {
|
|
1229
|
-
display: flex;
|
|
1230
|
-
align-items: center;
|
|
1231
|
-
color: var(--pollar-muted);
|
|
1232
|
-
}
|
|
1233
|
-
.pollar-ramp-tabs {
|
|
1234
|
-
display: flex;
|
|
1235
|
-
gap: 0;
|
|
1236
|
-
border: 1px solid var(--pollar-border);
|
|
1237
|
-
border-radius: var(--pollar-input-border-radius, 0.5rem);
|
|
1238
|
-
overflow: hidden;
|
|
1239
|
-
margin-bottom: 1.25rem;
|
|
1240
|
-
}
|
|
1241
|
-
.pollar-ramp-tab {
|
|
1242
|
-
flex: 1;
|
|
1243
|
-
height: 40px;
|
|
1244
|
-
border: none;
|
|
1245
|
-
background: transparent;
|
|
1246
|
-
color: var(--pollar-muted);
|
|
1247
|
-
font-size: 0.875rem;
|
|
1248
|
-
font-weight: 600;
|
|
1249
|
-
cursor: pointer;
|
|
1250
|
-
transition: all 0.15s;
|
|
1251
|
-
}
|
|
1252
|
-
.pollar-ramp-tab[data-active=true] {
|
|
1253
|
-
background-color: var(--pollar-accent);
|
|
1254
|
-
color: #fff;
|
|
1255
|
-
}
|
|
1256
1196
|
.pollar-ramp-field {
|
|
1257
1197
|
margin-bottom: 1rem;
|
|
1258
1198
|
}
|
|
@@ -1281,6 +1221,12 @@
|
|
|
1281
1221
|
box-shadow: 0 0 0 2px var(--pollar-accent);
|
|
1282
1222
|
border-color: transparent;
|
|
1283
1223
|
}
|
|
1224
|
+
.pollar-ramp-field-error {
|
|
1225
|
+
display: block;
|
|
1226
|
+
margin-top: 0.375rem;
|
|
1227
|
+
font-size: 0.75rem;
|
|
1228
|
+
color: var(--pollar-error-text, #dc2626);
|
|
1229
|
+
}
|
|
1284
1230
|
.pollar-ramp-input-row {
|
|
1285
1231
|
display: flex;
|
|
1286
1232
|
gap: 0.625rem;
|
|
@@ -1294,6 +1240,10 @@
|
|
|
1294
1240
|
gap: 0.625rem;
|
|
1295
1241
|
padding: 1.5rem 0;
|
|
1296
1242
|
}
|
|
1243
|
+
.pollar-ramp-loading-spinner {
|
|
1244
|
+
align-self: center;
|
|
1245
|
+
margin-bottom: 0.5rem;
|
|
1246
|
+
}
|
|
1297
1247
|
.pollar-ramp-loading-row {
|
|
1298
1248
|
display: flex;
|
|
1299
1249
|
align-items: center;
|
|
@@ -1848,31 +1798,6 @@
|
|
|
1848
1798
|
}
|
|
1849
1799
|
|
|
1850
1800
|
/* src/components/earn-modal/EarnModal.css */
|
|
1851
|
-
.pollar-earn-tabs {
|
|
1852
|
-
display: flex;
|
|
1853
|
-
gap: 4px;
|
|
1854
|
-
margin-bottom: 12px;
|
|
1855
|
-
padding: 4px;
|
|
1856
|
-
border: 1px solid var(--pollar-border);
|
|
1857
|
-
border-radius: var(--pollar-card-border-radius);
|
|
1858
|
-
background: var(--pollar-input-bg);
|
|
1859
|
-
}
|
|
1860
|
-
.pollar-earn-tab {
|
|
1861
|
-
flex: 1;
|
|
1862
|
-
height: 36px;
|
|
1863
|
-
border: none;
|
|
1864
|
-
border-radius: 6px;
|
|
1865
|
-
background: transparent;
|
|
1866
|
-
color: var(--pollar-muted);
|
|
1867
|
-
font-size: 14px;
|
|
1868
|
-
font-weight: 600;
|
|
1869
|
-
cursor: pointer;
|
|
1870
|
-
}
|
|
1871
|
-
.pollar-earn-tab-active {
|
|
1872
|
-
background: var(--pollar-bg);
|
|
1873
|
-
color: var(--pollar-accent);
|
|
1874
|
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
1875
|
-
}
|
|
1876
1801
|
.pollar-earn-amount {
|
|
1877
1802
|
position: relative;
|
|
1878
1803
|
display: flex;
|
|
@@ -2235,7 +2160,7 @@
|
|
|
2235
2160
|
}
|
|
2236
2161
|
|
|
2237
2162
|
/* src/components/wallet-button/WalletButton.css */
|
|
2238
|
-
.wallet-login-btn {
|
|
2163
|
+
.pollar-wallet-login-btn {
|
|
2239
2164
|
display: flex;
|
|
2240
2165
|
align-items: center;
|
|
2241
2166
|
gap: 0.75rem;
|
|
@@ -2249,24 +2174,24 @@
|
|
|
2249
2174
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
2250
2175
|
transition: all 0.15s;
|
|
2251
2176
|
}
|
|
2252
|
-
.wallet-login-btn:hover {
|
|
2177
|
+
.pollar-wallet-login-btn:hover {
|
|
2253
2178
|
opacity: 0.9;
|
|
2254
2179
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
|
2255
2180
|
}
|
|
2256
|
-
.wallet-login-btn:active {
|
|
2181
|
+
.pollar-wallet-login-btn:active {
|
|
2257
2182
|
transform: scale(0.98);
|
|
2258
2183
|
}
|
|
2259
|
-
.wallet-btn-logo {
|
|
2184
|
+
.pollar-wallet-btn-logo {
|
|
2260
2185
|
width: 22px;
|
|
2261
2186
|
height: 22px;
|
|
2262
2187
|
object-fit: contain;
|
|
2263
2188
|
filter: brightness(0) invert(1);
|
|
2264
2189
|
}
|
|
2265
|
-
.wallet-wrapper {
|
|
2190
|
+
.pollar-wallet-wrapper {
|
|
2266
2191
|
position: relative;
|
|
2267
2192
|
display: inline-block;
|
|
2268
2193
|
}
|
|
2269
|
-
.wallet-btn {
|
|
2194
|
+
.pollar-wallet-btn {
|
|
2270
2195
|
display: flex;
|
|
2271
2196
|
align-items: center;
|
|
2272
2197
|
gap: 8px;
|
|
@@ -2279,18 +2204,18 @@
|
|
|
2279
2204
|
cursor: pointer;
|
|
2280
2205
|
transition: background 0.15s;
|
|
2281
2206
|
}
|
|
2282
|
-
.wallet-btn:hover {
|
|
2207
|
+
.pollar-wallet-btn:hover {
|
|
2283
2208
|
opacity: 0.9;
|
|
2284
2209
|
}
|
|
2285
|
-
.wallet-chevron {
|
|
2210
|
+
.pollar-wallet-chevron {
|
|
2286
2211
|
width: 12px;
|
|
2287
2212
|
height: 12px;
|
|
2288
2213
|
transition: transform 0.15s;
|
|
2289
2214
|
}
|
|
2290
|
-
.wallet-chevron.open {
|
|
2215
|
+
.pollar-wallet-chevron.pollar-open {
|
|
2291
2216
|
transform: rotate(180deg);
|
|
2292
2217
|
}
|
|
2293
|
-
.wallet-dropdown {
|
|
2218
|
+
.pollar-wallet-dropdown {
|
|
2294
2219
|
position: absolute;
|
|
2295
2220
|
top: calc(100% + 6px);
|
|
2296
2221
|
right: 0;
|
|
@@ -2301,7 +2226,7 @@
|
|
|
2301
2226
|
overflow: hidden;
|
|
2302
2227
|
z-index: 50;
|
|
2303
2228
|
}
|
|
2304
|
-
.wallet-dropdown-item {
|
|
2229
|
+
.pollar-wallet-dropdown-item {
|
|
2305
2230
|
display: flex;
|
|
2306
2231
|
align-items: center;
|
|
2307
2232
|
gap: 10px;
|
|
@@ -2315,32 +2240,32 @@
|
|
|
2315
2240
|
text-align: left;
|
|
2316
2241
|
transition: background 0.1s;
|
|
2317
2242
|
}
|
|
2318
|
-
.wallet-dropdown-item:hover {
|
|
2243
|
+
.pollar-wallet-dropdown-item:hover {
|
|
2319
2244
|
background: rgba(0, 0, 0, 0.05);
|
|
2320
2245
|
}
|
|
2321
|
-
.wallet-dropdown-item.danger {
|
|
2246
|
+
.pollar-wallet-dropdown-item.pollar-danger {
|
|
2322
2247
|
color: #dc2626;
|
|
2323
2248
|
}
|
|
2324
|
-
.wallet-dropdown-item.danger:hover {
|
|
2249
|
+
.pollar-wallet-dropdown-item.pollar-danger:hover {
|
|
2325
2250
|
background: #fef2f2;
|
|
2326
2251
|
}
|
|
2327
|
-
.wallet-dropdown-divider {
|
|
2252
|
+
.pollar-wallet-dropdown-divider {
|
|
2328
2253
|
height: 1px;
|
|
2329
2254
|
background: rgba(0, 0, 0, 0.08);
|
|
2330
2255
|
margin: 2px 0;
|
|
2331
2256
|
}
|
|
2332
|
-
.wallet-btn-label {
|
|
2257
|
+
.pollar-wallet-btn-label {
|
|
2333
2258
|
overflow: hidden;
|
|
2334
2259
|
text-overflow: ellipsis;
|
|
2335
2260
|
white-space: nowrap;
|
|
2336
2261
|
flex: 1;
|
|
2337
2262
|
min-width: 0;
|
|
2338
2263
|
}
|
|
2339
|
-
.wallet-btn:disabled {
|
|
2264
|
+
.pollar-wallet-btn:disabled {
|
|
2340
2265
|
cursor: not-allowed;
|
|
2341
2266
|
opacity: 1;
|
|
2342
2267
|
}
|
|
2343
|
-
.wallet-btn-spinner {
|
|
2268
|
+
.pollar-wallet-btn-spinner {
|
|
2344
2269
|
flex-shrink: 0;
|
|
2345
2270
|
animation: pollar-wallet-spin 1.1s linear infinite;
|
|
2346
2271
|
}
|