@pollar/react 0.11.2 → 0.11.3

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 CHANGED
@@ -3,7 +3,24 @@
3
3
  React bindings for [Pollar](https://pollar.xyz) — drop-in authentication UI, transaction modals, and hooks for
4
4
  Stellar and Solana applications.
5
5
 
6
- > **0.11.2** requires `@pollar/core@^0.11.2`. The **Transaction History modal
6
+ > **0.11.3** requires `@pollar/core@^0.11.3`. Non-breaking. A **pre-built `PollarClient`
7
+ > passed to `PollarProvider` no longer loses passkey support**: the provider installs the
8
+ > browser passkey ceremony on every path (via core's new `setPasskeyDefaults()`), and an
9
+ > explicit `passkey: undefined` no longer wipes the default. `browserPasskeyCeremony` and
10
+ > `browserPasskeySigner` are now exported for consumers who build their own client or want
11
+ > to wrap the ceremony. Also, **StrictMode no longer leaves an orphaned `PollarClient`
12
+ > running**: the provider keys the client it builds on the config object, so StrictMode's
13
+ > second render pass reuses the first pass's instance instead of constructing a second
14
+ > client whose refresh loop could clear the session the real login just wrote (dev only,
15
+ > no API change). Packaging: **`@pollar/core` moved from `dependencies` to
16
+ > `peerDependencies`**, so npm no longer installs a package-local duplicate of core (the
17
+ > configuration that broke `instanceof` and split the live-client registry); the provider
18
+ > now discriminates with core's new `isPollarClient()` guard, which works across copies.
19
+ > npm 7+ installs peers automatically; on npm 6, Yarn 1 or `--legacy-peer-deps`, add
20
+ > `@pollar/core` to your own dependencies. If you pin exact versions, keep both packages
21
+ > on the same version.
22
+ >
23
+ > Earlier: **0.11.2** required `@pollar/core@^0.11.2`. The **Transaction History modal
7
24
  > goes multichain**: the same network picker and address chip as the Balance /
8
25
  > Send modals, a server-side chain filter (pagination is server-side, so
9
26
  > switching networks refetches and resets to page 1), per-chain explorer links
package/dist/index.css CHANGED
@@ -15,7 +15,7 @@
15
15
  .pollar-overlay {
16
16
  position: fixed;
17
17
  inset: 0;
18
- z-index: 50;
18
+ z-index: var(--pollar-overlay-z-index, 50);
19
19
  display: flex;
20
20
  align-items: center;
21
21
  justify-content: center;
@@ -27,7 +27,7 @@
27
27
  .pollar-modal-card {
28
28
  position: relative;
29
29
  width: 100%;
30
- border-radius: 1rem;
30
+ border-radius: var(--pollar-modal-border-radius, 1rem);
31
31
  border: 1px solid var(--pollar-border);
32
32
  padding: var(--pollar-modal-padding, 1.75rem);
33
33
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
@@ -130,7 +130,7 @@
130
130
  border: none;
131
131
  border-radius: var(--pollar-buttons-border-radius, 0.5rem);
132
132
  background-color: var(--pollar-accent);
133
- color: #fff;
133
+ color: var(--pollar-btn-primary-fg, #fff);
134
134
  font-size: 0.9375rem;
135
135
  font-weight: 700;
136
136
  cursor: pointer;
@@ -152,8 +152,8 @@
152
152
  padding: 0 1rem;
153
153
  border: 1px solid var(--pollar-border);
154
154
  border-radius: var(--pollar-buttons-border-radius, 0.5rem);
155
- background-color: transparent;
156
- color: var(--pollar-muted);
155
+ background-color: var(--pollar-btn-secondary-bg, transparent);
156
+ color: var(--pollar-btn-secondary-fg, var(--pollar-muted));
157
157
  font-size: 0.9375rem;
158
158
  font-weight: 600;
159
159
  cursor: pointer;
@@ -180,8 +180,8 @@
180
180
  border-width: 2px;
181
181
  }
182
182
  .pollar-btn-primary .pollar-spinner {
183
- border-color: rgba(255, 255, 255, 0.35);
184
- border-top-color: #fff;
183
+ border-color: color-mix(in srgb, var(--pollar-btn-primary-fg, #fff) 35%, transparent);
184
+ border-top-color: var(--pollar-btn-primary-fg, #fff);
185
185
  }
186
186
  .pollar-spinner-current {
187
187
  border-color: color-mix(in srgb, currentColor 25%, transparent);
@@ -760,7 +760,7 @@
760
760
  padding: 0.875rem 1rem;
761
761
  border-radius: var(--pollar-card-border-radius, 10px);
762
762
  border: 1px solid var(--pollar-border);
763
- background-color: var(--pollar-input-bg);
763
+ background-color: var(--pollar-btn-secondary-bg, var(--pollar-input-bg));
764
764
  cursor: pointer;
765
765
  transition: all 0.15s;
766
766
  box-sizing: border-box;
@@ -776,7 +776,7 @@
776
776
  .pollar-kyc-provider-name {
777
777
  font-size: 0.9375rem;
778
778
  font-weight: 600;
779
- color: var(--pollar-text);
779
+ color: var(--pollar-btn-secondary-fg, var(--pollar-text));
780
780
  }
781
781
  .pollar-kyc-provider-flow {
782
782
  font-size: 0.75rem;
@@ -1092,7 +1092,7 @@
1092
1092
  gap: 0.75rem;
1093
1093
  border-radius: var(--pollar-buttons-border-radius, 0.5rem);
1094
1094
  border: 1px solid var(--pollar-border);
1095
- background-color: var(--pollar-input-bg);
1095
+ background-color: var(--pollar-btn-secondary-bg, var(--pollar-input-bg));
1096
1096
  padding: 0 1rem;
1097
1097
  cursor: pointer;
1098
1098
  transition: all 0.15s;
@@ -1112,7 +1112,7 @@
1112
1112
  .pollar-social-btn-text {
1113
1113
  font-size: 1rem;
1114
1114
  font-weight: 600;
1115
- color: var(--pollar-text);
1115
+ color: var(--pollar-btn-secondary-fg, var(--pollar-text));
1116
1116
  }
1117
1117
  .pollar-wallet-section {
1118
1118
  display: flex;
@@ -1135,8 +1135,8 @@
1135
1135
  padding: 0 1rem;
1136
1136
  border-radius: var(--pollar-buttons-border-radius, 0.5rem);
1137
1137
  border: 1px solid var(--pollar-border);
1138
- background-color: var(--pollar-input-bg);
1139
- color: var(--pollar-text);
1138
+ background-color: var(--pollar-btn-secondary-bg, var(--pollar-input-bg));
1139
+ color: var(--pollar-btn-secondary-fg, var(--pollar-text));
1140
1140
  font-size: 1rem;
1141
1141
  font-weight: 500;
1142
1142
  cursor: pointer;
@@ -1185,8 +1185,8 @@
1185
1185
  gap: 0.75rem;
1186
1186
  border-radius: var(--pollar-buttons-border-radius, 0.5rem);
1187
1187
  border: 1px solid var(--pollar-border);
1188
- background-color: var(--pollar-input-bg);
1189
- color: var(--pollar-text);
1188
+ background-color: var(--pollar-btn-secondary-bg, var(--pollar-input-bg));
1189
+ color: var(--pollar-btn-secondary-fg, var(--pollar-text));
1190
1190
  padding: 0 1rem;
1191
1191
  font-size: 1rem;
1192
1192
  font-weight: 500;
@@ -1214,8 +1214,8 @@
1214
1214
  gap: 0.75rem;
1215
1215
  border-radius: var(--pollar-buttons-border-radius, 0.5rem);
1216
1216
  border: 1px solid var(--pollar-border);
1217
- background-color: var(--pollar-input-bg);
1218
- color: var(--pollar-text);
1217
+ background-color: var(--pollar-btn-secondary-bg, var(--pollar-input-bg));
1218
+ color: var(--pollar-btn-secondary-fg, var(--pollar-text));
1219
1219
  padding: 0 1rem;
1220
1220
  font-size: 1rem;
1221
1221
  font-weight: 500;
@@ -1297,6 +1297,33 @@
1297
1297
  font-size: var(--pollar-modal-subtitle-size, 0.9rem);
1298
1298
  color: var(--pollar-muted);
1299
1299
  }
1300
+ .pollar-ramp-steps {
1301
+ display: flex;
1302
+ flex-direction: column;
1303
+ gap: 0.5rem;
1304
+ margin-bottom: 1.25rem;
1305
+ }
1306
+ .pollar-ramp-steps-label {
1307
+ font-size: 0.6875rem;
1308
+ font-weight: 600;
1309
+ letter-spacing: 0.05em;
1310
+ text-transform: uppercase;
1311
+ color: var(--pollar-muted);
1312
+ }
1313
+ .pollar-ramp-steps-track {
1314
+ display: flex;
1315
+ gap: 0.375rem;
1316
+ }
1317
+ .pollar-ramp-steps-segment {
1318
+ flex: 1;
1319
+ height: 4px;
1320
+ border-radius: 999px;
1321
+ background: var(--pollar-border);
1322
+ transition: background-color 0.2s;
1323
+ }
1324
+ .pollar-ramp-steps-segment[data-done] {
1325
+ background: var(--pollar-accent);
1326
+ }
1300
1327
  .pollar-ramp-field {
1301
1328
  margin-bottom: 1rem;
1302
1329
  }
@@ -1331,6 +1358,17 @@
1331
1358
  font-size: 0.75rem;
1332
1359
  color: var(--pollar-error-text, #dc2626);
1333
1360
  }
1361
+ .pollar-ramp-field-hint {
1362
+ display: block;
1363
+ margin-top: 0.375rem;
1364
+ font-size: 0.75rem;
1365
+ color: var(--pollar-muted);
1366
+ }
1367
+ .pollar-ramp-field-optional {
1368
+ font-weight: 400;
1369
+ text-transform: none;
1370
+ color: var(--pollar-muted);
1371
+ }
1334
1372
  .pollar-ramp-input-row {
1335
1373
  display: flex;
1336
1374
  gap: 0.625rem;
@@ -1398,11 +1436,19 @@
1398
1436
  transition: all 0.15s;
1399
1437
  box-sizing: border-box;
1400
1438
  }
1439
+ .pollar-ramp-route-card[data-busy] {
1440
+ cursor: wait;
1441
+ border-color: var(--pollar-accent);
1442
+ }
1443
+ .pollar-ramp-route-card[data-disabled] {
1444
+ opacity: 0.5;
1445
+ cursor: not-allowed;
1446
+ }
1401
1447
  .pollar-ramp-route-card[data-recommended=true] {
1402
1448
  border-color: var(--pollar-accent);
1403
1449
  background-color: color-mix(in srgb, var(--pollar-accent) 5%, var(--pollar-input-bg));
1404
1450
  }
1405
- .pollar-ramp-route-card:hover {
1451
+ .pollar-ramp-route-card:not([data-disabled]):hover {
1406
1452
  border-color: var(--pollar-accent);
1407
1453
  }
1408
1454
  .pollar-ramp-route-left {
@@ -1475,6 +1521,18 @@
1475
1521
  letter-spacing: 0.03em;
1476
1522
  font-family: monospace;
1477
1523
  }
1524
+ .pollar-ramp-qr {
1525
+ display: flex;
1526
+ justify-content: center;
1527
+ width: 100%;
1528
+ color: var(--pollar-text);
1529
+ }
1530
+ .pollar-ramp-qr svg {
1531
+ width: 100%;
1532
+ max-width: 220px;
1533
+ height: auto;
1534
+ display: block;
1535
+ }
1478
1536
  .pollar-ramp-copy-btn {
1479
1537
  padding: 0.25rem 0.625rem;
1480
1538
  border-radius: var(--pollar-buttons-border-radius, 6px);