@pollar/react 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1,3 +1,360 @@
1
+ /* src/components/shared.css */
2
+ @keyframes pollar-spin {
3
+ to {
4
+ transform: rotate(360deg);
5
+ }
6
+ }
7
+ @keyframes pollar-pulse {
8
+ 0%, 100% {
9
+ opacity: 1;
10
+ }
11
+ 50% {
12
+ opacity: 0.4;
13
+ }
14
+ }
15
+ .pollar-overlay {
16
+ position: fixed;
17
+ inset: 0;
18
+ z-index: 50;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ background-color: rgba(0, 0, 0, 0.5);
23
+ }
24
+ .pollar-modal-header {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: space-between;
28
+ margin-bottom: 1.25rem;
29
+ }
30
+ .pollar-modal-title {
31
+ font-size: 1.125rem;
32
+ font-weight: 700;
33
+ color: var(--pollar-text);
34
+ margin: 0;
35
+ }
36
+ .pollar-modal-header-actions {
37
+ display: flex;
38
+ align-items: center;
39
+ gap: 0.5rem;
40
+ }
41
+ .pollar-modal-close {
42
+ background: none;
43
+ border: none;
44
+ cursor: pointer;
45
+ color: var(--pollar-muted);
46
+ padding: 4px;
47
+ display: flex;
48
+ align-items: center;
49
+ border-radius: 6px;
50
+ transition: color 150ms, background 150ms;
51
+ }
52
+ .pollar-modal-close:hover {
53
+ color: var(--pollar-text);
54
+ background: var(--pollar-border);
55
+ }
56
+ .pollar-modal-refresh-btn {
57
+ background: none;
58
+ border: 1px solid var(--pollar-border);
59
+ cursor: pointer;
60
+ color: var(--pollar-muted);
61
+ padding: 5px 10px;
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 0.375rem;
65
+ border-radius: 6px;
66
+ font-size: 0.75rem;
67
+ font-weight: 500;
68
+ transition: color 150ms, background 150ms;
69
+ }
70
+ .pollar-modal-refresh-btn:hover:not(:disabled) {
71
+ color: var(--pollar-text);
72
+ background: var(--pollar-border);
73
+ }
74
+ .pollar-modal-refresh-btn:disabled {
75
+ opacity: 0.5;
76
+ cursor: not-allowed;
77
+ }
78
+ .pollar-modal-refresh-icon.spinning {
79
+ animation: pollar-spin 0.8s linear infinite;
80
+ }
81
+ .pollar-modal-actions {
82
+ display: flex;
83
+ gap: 0.625rem;
84
+ margin-top: 1rem;
85
+ }
86
+ .pollar-btn-primary {
87
+ flex: 1;
88
+ height: var(--pollar-buttons-height, 44px);
89
+ border: none;
90
+ border-radius: var(--pollar-buttons-border-radius, 0.5rem);
91
+ background-color: var(--pollar-accent);
92
+ color: #fff;
93
+ font-size: 0.9375rem;
94
+ font-weight: 700;
95
+ cursor: pointer;
96
+ transition: opacity 0.15s;
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ gap: 0.5rem;
101
+ }
102
+ .pollar-btn-primary:hover:not(:disabled) {
103
+ opacity: 0.9;
104
+ }
105
+ .pollar-btn-primary:disabled {
106
+ opacity: 0.5;
107
+ cursor: not-allowed;
108
+ }
109
+ .pollar-btn-secondary {
110
+ height: var(--pollar-buttons-height, 44px);
111
+ padding: 0 1rem;
112
+ border: 1px solid var(--pollar-border);
113
+ border-radius: var(--pollar-buttons-border-radius, 0.5rem);
114
+ background-color: transparent;
115
+ color: var(--pollar-muted);
116
+ font-size: 0.9375rem;
117
+ font-weight: 600;
118
+ cursor: pointer;
119
+ transition: all 0.15s;
120
+ }
121
+ .pollar-btn-secondary:hover:not(:disabled) {
122
+ color: var(--pollar-text);
123
+ border-color: var(--pollar-text);
124
+ }
125
+ .pollar-spinner {
126
+ width: 2rem;
127
+ height: 2rem;
128
+ border: 3px solid color-mix(in srgb, var(--pollar-accent) 20%, transparent);
129
+ border-top-color: var(--pollar-accent);
130
+ border-radius: 50%;
131
+ animation: pollar-spin 0.8s linear infinite;
132
+ }
133
+ .pollar-modal-empty {
134
+ text-align: center;
135
+ padding: 2rem 1rem;
136
+ color: var(--pollar-muted);
137
+ font-size: 0.875rem;
138
+ }
139
+ .pollar-modal-error {
140
+ text-align: center;
141
+ padding: 1.5rem 1rem;
142
+ color: var(--pollar-error-text, #dc2626);
143
+ font-size: 0.875rem;
144
+ }
145
+ .pollar-footer {
146
+ display: flex;
147
+ align-items: center;
148
+ justify-content: center;
149
+ gap: 0.5rem;
150
+ border-top: 1px solid var(--pollar-border);
151
+ padding-top: 1.5rem;
152
+ }
153
+ .pollar-footer-protected {
154
+ font-size: 0.875rem;
155
+ color: var(--pollar-muted);
156
+ }
157
+ .pollar-footer-brand {
158
+ display: flex;
159
+ align-items: center;
160
+ gap: 0.5rem;
161
+ }
162
+ .pollar-footer-logo {
163
+ height: 18px;
164
+ width: 18px;
165
+ object-fit: contain;
166
+ }
167
+ .pollar-footer-name {
168
+ font-size: 0.875rem;
169
+ font-weight: 700;
170
+ color: var(--pollar-text);
171
+ }
172
+ .pollar-footer-version {
173
+ font-size: 0.7rem;
174
+ color: var(--pollar-muted);
175
+ opacity: 0.6;
176
+ }
177
+ .pollar-status {
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: center;
181
+ gap: 8px;
182
+ padding: 10px 14px;
183
+ min-height: 40px;
184
+ }
185
+ .pollar-status span {
186
+ font-size: 13px;
187
+ font-weight: 500;
188
+ }
189
+ .pollar-status-cancel {
190
+ margin-left: 4px;
191
+ padding: 2px 8px;
192
+ border-radius: var(--pollar-buttons-border-radius, 4px);
193
+ border: 1px solid currentColor;
194
+ background: transparent;
195
+ color: inherit;
196
+ font-size: 11px;
197
+ font-weight: 600;
198
+ cursor: pointer;
199
+ opacity: 0.7;
200
+ transition: opacity 0.15s;
201
+ }
202
+ .pollar-status-cancel:hover {
203
+ opacity: 1;
204
+ }
205
+ .pollar-status[data-kind=ERROR] {
206
+ color: #ef4444;
207
+ }
208
+ .pollar-status[data-kind=SUCCESS] {
209
+ color: #10b981;
210
+ }
211
+ .pollar-status[data-kind=LOADING] {
212
+ color: var(--pollar-accent);
213
+ }
214
+ .pollar-status[data-kind=LOADING] svg {
215
+ animation: pollar-spin 1s linear infinite;
216
+ }
217
+
218
+ /* src/components/kyc-modal/KycModal.css */
219
+ .pollar-kyc-badge {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ gap: 0.375rem;
223
+ padding: 0.25rem 0.625rem;
224
+ border-radius: 999px;
225
+ font-size: 0.75rem;
226
+ font-weight: 600;
227
+ color: var(--pollar-kyc-color, #6b7280);
228
+ background-color: color-mix(in srgb, var(--pollar-kyc-color, #6b7280) 12%, transparent);
229
+ border: 1px solid color-mix(in srgb, var(--pollar-kyc-color, #6b7280) 30%, transparent);
230
+ }
231
+ .pollar-kyc-badge-dot {
232
+ width: 6px;
233
+ height: 6px;
234
+ border-radius: 50%;
235
+ background-color: var(--pollar-kyc-color, #6b7280);
236
+ animation: pollar-pulse 1.5s ease-in-out infinite;
237
+ }
238
+ .pollar-kyc-modal {
239
+ position: relative;
240
+ width: 100%;
241
+ max-width: 500px;
242
+ border-radius: 1rem;
243
+ border: 1px solid var(--pollar-border);
244
+ padding: 2rem;
245
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
246
+ background-color: var(--pollar-bg);
247
+ box-sizing: border-box;
248
+ }
249
+ .pollar-kyc-header {
250
+ margin-bottom: 1.5rem;
251
+ text-align: center;
252
+ }
253
+ .pollar-kyc-title {
254
+ margin: 0 0 0.375rem;
255
+ font-size: 1.375rem;
256
+ font-weight: 700;
257
+ color: var(--pollar-text);
258
+ }
259
+ .pollar-kyc-subtitle {
260
+ margin: 0;
261
+ font-size: 0.9rem;
262
+ color: var(--pollar-muted);
263
+ }
264
+ .pollar-kyc-providers {
265
+ display: flex;
266
+ flex-direction: column;
267
+ gap: 0.625rem;
268
+ margin-bottom: 1.5rem;
269
+ }
270
+ .pollar-kyc-provider-btn {
271
+ display: flex;
272
+ align-items: center;
273
+ justify-content: space-between;
274
+ width: 100%;
275
+ padding: 0.875rem 1rem;
276
+ border-radius: 0.625rem;
277
+ border: 1px solid var(--pollar-border);
278
+ background-color: var(--pollar-input-bg);
279
+ cursor: pointer;
280
+ transition: all 0.15s;
281
+ box-sizing: border-box;
282
+ }
283
+ .pollar-kyc-provider-btn:hover:not(:disabled) {
284
+ border-color: var(--pollar-accent);
285
+ box-shadow: 0 0 0 1px var(--pollar-accent);
286
+ }
287
+ .pollar-kyc-provider-btn:disabled {
288
+ opacity: 0.5;
289
+ cursor: not-allowed;
290
+ }
291
+ .pollar-kyc-provider-name {
292
+ font-size: 0.9375rem;
293
+ font-weight: 600;
294
+ color: var(--pollar-text);
295
+ }
296
+ .pollar-kyc-provider-flow {
297
+ font-size: 0.75rem;
298
+ color: var(--pollar-muted);
299
+ text-transform: uppercase;
300
+ letter-spacing: 0.04em;
301
+ }
302
+ .pollar-kyc-iframe-wrap {
303
+ width: 100%;
304
+ height: 400px;
305
+ border-radius: 0.5rem;
306
+ border: 1px solid var(--pollar-border);
307
+ overflow: hidden;
308
+ margin-bottom: 1rem;
309
+ }
310
+ .pollar-kyc-iframe {
311
+ width: 100%;
312
+ height: 100%;
313
+ border: none;
314
+ }
315
+ .pollar-kyc-iframe-mock {
316
+ display: flex;
317
+ flex-direction: column;
318
+ align-items: center;
319
+ justify-content: center;
320
+ gap: 0.75rem;
321
+ width: 100%;
322
+ height: 100%;
323
+ background-color: var(--pollar-input-bg);
324
+ color: var(--pollar-muted);
325
+ font-size: 0.875rem;
326
+ text-align: center;
327
+ padding: 1.5rem;
328
+ box-sizing: border-box;
329
+ }
330
+ .pollar-kyc-polling {
331
+ display: flex;
332
+ flex-direction: column;
333
+ align-items: center;
334
+ gap: 1rem;
335
+ padding: 2rem 0;
336
+ text-align: center;
337
+ }
338
+ .pollar-kyc-polling-text {
339
+ font-size: 0.9rem;
340
+ color: var(--pollar-muted);
341
+ }
342
+ .pollar-kyc-result {
343
+ display: flex;
344
+ flex-direction: column;
345
+ align-items: center;
346
+ gap: 1rem;
347
+ padding: 1.5rem 0;
348
+ text-align: center;
349
+ }
350
+ .pollar-kyc-result-icon {
351
+ font-size: 2.5rem;
352
+ }
353
+ .pollar-kyc-result-text {
354
+ font-size: 0.9rem;
355
+ color: var(--pollar-muted);
356
+ }
357
+
1
358
  /* src/components/login-modal/GithubButton.css */
2
359
  .github-button {
3
360
  -webkit-appearance: none;
@@ -169,11 +526,6 @@
169
526
  }
170
527
 
171
528
  /* src/components/login-modal/LoginModal.css */
172
- @keyframes pollar-spin {
173
- to {
174
- transform: rotate(360deg);
175
- }
176
- }
177
529
  .pollar-modal {
178
530
  position: relative;
179
531
  width: 100%;
@@ -447,86 +799,244 @@
447
799
  opacity: 0.5;
448
800
  cursor: not-allowed;
449
801
  }
450
- .pollar-status {
451
- display: flex;
452
- align-items: center;
453
- justify-content: center;
454
- gap: 8px;
455
- padding: 10px 14px;
456
- min-height: 40px;
802
+
803
+ /* src/components/ramp-widget/RampWidget.css */
804
+ .pollar-ramp-modal {
805
+ position: relative;
806
+ width: 100%;
807
+ max-width: 480px;
808
+ border-radius: 1rem;
809
+ border: 1px solid var(--pollar-border);
810
+ padding: 2rem;
811
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
812
+ background-color: var(--pollar-bg);
813
+ box-sizing: border-box;
457
814
  }
458
- .pollar-status span {
459
- font-size: 13px;
460
- font-weight: 500;
815
+ .pollar-ramp-header {
816
+ margin-bottom: 1.5rem;
817
+ text-align: center;
461
818
  }
462
- .pollar-status-cancel {
463
- margin-left: 4px;
464
- padding: 2px 8px;
465
- border-radius: var(--pollar-buttons-border-radius, 4px);
466
- border: 1px solid currentColor;
819
+ .pollar-ramp-title {
820
+ margin: 0 0 0.375rem;
821
+ font-size: 1.375rem;
822
+ font-weight: 700;
823
+ color: var(--pollar-text);
824
+ }
825
+ .pollar-ramp-subtitle {
826
+ margin: 0;
827
+ font-size: 0.9rem;
828
+ color: var(--pollar-muted);
829
+ }
830
+ .pollar-ramp-tabs {
831
+ display: flex;
832
+ gap: 0;
833
+ border: 1px solid var(--pollar-border);
834
+ border-radius: 0.5rem;
835
+ overflow: hidden;
836
+ margin-bottom: 1.25rem;
837
+ }
838
+ .pollar-ramp-tab {
839
+ flex: 1;
840
+ height: 40px;
841
+ border: none;
467
842
  background: transparent;
468
- color: inherit;
469
- font-size: 11px;
843
+ color: var(--pollar-muted);
844
+ font-size: 0.875rem;
470
845
  font-weight: 600;
471
846
  cursor: pointer;
472
- opacity: 0.7;
473
- transition: opacity 0.15s;
847
+ transition: all 0.15s;
474
848
  }
475
- .pollar-status-cancel:hover {
476
- opacity: 1;
849
+ .pollar-ramp-tab[data-active=true] {
850
+ background-color: var(--pollar-accent);
851
+ color: #fff;
477
852
  }
478
- .pollar-status[data-kind=ERROR] {
479
- color: #ef4444;
853
+ .pollar-ramp-field {
854
+ margin-bottom: 1rem;
480
855
  }
481
- .pollar-status[data-kind=SUCCESS] {
482
- color: #10b981;
856
+ .pollar-ramp-label {
857
+ display: block;
858
+ margin-bottom: 0.375rem;
859
+ font-size: 0.8125rem;
860
+ font-weight: 600;
861
+ color: var(--pollar-muted);
862
+ text-transform: uppercase;
863
+ letter-spacing: 0.04em;
864
+ }
865
+ .pollar-ramp-input {
866
+ width: 100%;
867
+ height: var(--pollar-buttons-height, 44px);
868
+ padding: 0 1rem;
869
+ border-radius: 0.5rem;
870
+ border: 1px solid var(--pollar-border);
871
+ background-color: var(--pollar-input-bg);
872
+ color: var(--pollar-text);
873
+ font-size: 1rem;
874
+ outline: none;
875
+ box-sizing: border-box;
876
+ }
877
+ .pollar-ramp-input:focus {
878
+ box-shadow: 0 0 0 2px var(--pollar-accent);
879
+ border-color: transparent;
880
+ }
881
+ .pollar-ramp-input-row {
882
+ display: flex;
883
+ gap: 0.625rem;
884
+ }
885
+ .pollar-ramp-input-row .pollar-ramp-field {
886
+ flex: 1;
887
+ }
888
+ .pollar-ramp-loading {
889
+ display: flex;
890
+ flex-direction: column;
891
+ gap: 0.625rem;
892
+ padding: 1.5rem 0;
893
+ }
894
+ .pollar-ramp-loading-row {
895
+ display: flex;
896
+ align-items: center;
897
+ gap: 0.625rem;
898
+ font-size: 0.875rem;
899
+ color: var(--pollar-muted);
900
+ opacity: 0;
901
+ transform: translateY(4px);
902
+ animation: pollar-ramp-appear 0.3s ease forwards;
903
+ }
904
+ .pollar-ramp-loading-row:nth-child(1) {
905
+ animation-delay: 0ms;
906
+ }
907
+ .pollar-ramp-loading-row:nth-child(2) {
908
+ animation-delay: 400ms;
909
+ }
910
+ .pollar-ramp-loading-row:nth-child(3) {
911
+ animation-delay: 800ms;
912
+ }
913
+ @keyframes pollar-ramp-appear {
914
+ to {
915
+ opacity: 1;
916
+ transform: translateY(0);
917
+ }
918
+ }
919
+ .pollar-ramp-loading-dot {
920
+ width: 8px;
921
+ height: 8px;
922
+ border-radius: 50%;
923
+ background-color: var(--pollar-accent);
924
+ flex-shrink: 0;
925
+ }
926
+ .pollar-ramp-route-list {
927
+ display: flex;
928
+ flex-direction: column;
929
+ gap: 0.625rem;
930
+ margin-bottom: 1.25rem;
931
+ }
932
+ .pollar-ramp-route-card {
933
+ display: flex;
934
+ align-items: center;
935
+ justify-content: space-between;
936
+ padding: 0.875rem 1rem;
937
+ border-radius: 0.625rem;
938
+ border: 1px solid var(--pollar-border);
939
+ background-color: var(--pollar-input-bg);
940
+ cursor: pointer;
941
+ transition: all 0.15s;
942
+ box-sizing: border-box;
943
+ }
944
+ .pollar-ramp-route-card[data-recommended=true] {
945
+ border-color: var(--pollar-accent);
946
+ background-color: color-mix(in srgb, var(--pollar-accent) 5%, var(--pollar-input-bg));
947
+ }
948
+ .pollar-ramp-route-card:hover {
949
+ border-color: var(--pollar-accent);
950
+ }
951
+ .pollar-ramp-route-left {
952
+ display: flex;
953
+ flex-direction: column;
954
+ gap: 0.25rem;
955
+ }
956
+ .pollar-ramp-route-provider {
957
+ font-size: 0.9375rem;
958
+ font-weight: 700;
959
+ color: var(--pollar-text);
960
+ }
961
+ .pollar-ramp-route-meta {
962
+ font-size: 0.75rem;
963
+ color: var(--pollar-muted);
964
+ }
965
+ .pollar-ramp-route-right {
966
+ display: flex;
967
+ flex-direction: column;
968
+ align-items: flex-end;
969
+ gap: 0.25rem;
970
+ }
971
+ .pollar-ramp-route-fee {
972
+ font-size: 0.875rem;
973
+ font-weight: 700;
974
+ color: var(--pollar-text);
483
975
  }
484
- .pollar-status[data-kind=LOADING] {
976
+ .pollar-ramp-route-badge {
977
+ font-size: 0.6875rem;
978
+ font-weight: 700;
485
979
  color: var(--pollar-accent);
980
+ text-transform: uppercase;
981
+ letter-spacing: 0.04em;
486
982
  }
487
- .pollar-status[data-kind=LOADING] svg {
488
- animation: pollar-spin 1s linear infinite;
983
+ .pollar-ramp-payment {
984
+ display: flex;
985
+ flex-direction: column;
986
+ gap: 1rem;
489
987
  }
490
- .pollar-footer {
988
+ .pollar-ramp-payment-title {
989
+ font-size: 0.8125rem;
990
+ font-weight: 600;
991
+ color: var(--pollar-muted);
992
+ text-transform: uppercase;
993
+ letter-spacing: 0.04em;
994
+ margin: 0;
995
+ }
996
+ .pollar-ramp-payment-field {
491
997
  display: flex;
492
- align-items: center;
493
- justify-content: center;
494
- gap: 0.5rem;
495
- border-top: 1px solid var(--pollar-border);
496
- padding-top: 1.5rem;
998
+ flex-direction: column;
999
+ gap: 0.375rem;
497
1000
  }
498
- .pollar-footer-protected {
499
- font-size: 0.875rem;
1001
+ .pollar-ramp-payment-label {
1002
+ font-size: 0.75rem;
500
1003
  color: var(--pollar-muted);
501
1004
  }
502
- .pollar-footer-brand {
1005
+ .pollar-ramp-payment-value {
503
1006
  display: flex;
504
1007
  align-items: center;
505
- gap: 0.5rem;
506
- }
507
- .pollar-footer-logo {
508
- height: 18px;
509
- width: 18px;
510
- object-fit: contain;
1008
+ justify-content: space-between;
1009
+ padding: 0.75rem 1rem;
1010
+ border-radius: 0.5rem;
1011
+ border: 1px solid var(--pollar-border);
1012
+ background-color: var(--pollar-input-bg);
511
1013
  }
512
- .pollar-footer-name {
513
- font-size: 0.875rem;
1014
+ .pollar-ramp-payment-value code {
1015
+ font-size: 1rem;
514
1016
  font-weight: 700;
515
1017
  color: var(--pollar-text);
1018
+ letter-spacing: 0.03em;
1019
+ font-family: monospace;
516
1020
  }
517
- .pollar-footer-version {
518
- font-size: 0.7rem;
1021
+ .pollar-ramp-copy-btn {
1022
+ padding: 0.25rem 0.625rem;
1023
+ border-radius: 4px;
1024
+ border: 1px solid var(--pollar-border);
1025
+ background: transparent;
519
1026
  color: var(--pollar-muted);
520
- opacity: 0.6;
1027
+ font-size: 0.75rem;
1028
+ cursor: pointer;
1029
+ transition: all 0.15s;
521
1030
  }
522
- .pollar-overlay {
523
- position: fixed;
524
- inset: 0;
525
- z-index: 50;
526
- display: flex;
527
- align-items: center;
528
- justify-content: center;
529
- background-color: rgba(0, 0, 0, 0.5);
1031
+ .pollar-ramp-copy-btn:hover {
1032
+ color: var(--pollar-text);
1033
+ border-color: var(--pollar-accent);
1034
+ }
1035
+ .pollar-ramp-payment-note {
1036
+ font-size: 0.8125rem;
1037
+ color: var(--pollar-muted);
1038
+ text-align: center;
1039
+ margin: 0;
530
1040
  }
531
1041
 
532
1042
  /* src/components/transaction-modal/TransactionModal.css */
@@ -541,33 +1051,6 @@
541
1051
  box-sizing: border-box;
542
1052
  font-family: inherit;
543
1053
  }
544
- .pollar-tx-header {
545
- display: flex;
546
- align-items: center;
547
- justify-content: space-between;
548
- margin-bottom: 1.25rem;
549
- }
550
- .pollar-tx-title {
551
- font-size: 1.125rem;
552
- font-weight: 700;
553
- color: var(--pollar-text);
554
- margin: 0;
555
- }
556
- .pollar-tx-close {
557
- background: none;
558
- border: none;
559
- cursor: pointer;
560
- color: var(--pollar-muted);
561
- padding: 4px;
562
- display: flex;
563
- align-items: center;
564
- border-radius: 6px;
565
- transition: color 150ms, background 150ms;
566
- }
567
- .pollar-tx-close:hover {
568
- color: var(--pollar-text);
569
- background: var(--pollar-border);
570
- }
571
1054
  .pollar-tx-summary {
572
1055
  background: var(--pollar-input-bg, rgba(0,0,0,0.04));
573
1056
  border: 1px solid var(--pollar-border);
@@ -672,29 +1155,7 @@
672
1155
  }
673
1156
  .pollar-tx-sign-btn {
674
1157
  width: 100%;
675
- height: var(--pollar-buttons-height, 44px);
676
- border: none;
677
- border-radius: var(--pollar-buttons-border-radius, 8px);
678
- background: var(--pollar-accent, #005DB4);
679
- color: #fff;
680
- font-size: 0.9375rem;
681
1158
  font-weight: 600;
682
- cursor: pointer;
683
- transition: opacity 150ms;
684
- display: flex;
685
- align-items: center;
686
- justify-content: center;
687
- gap: 0.5rem;
688
- }
689
- .pollar-tx-sign-btn:disabled {
690
- opacity: 0.5;
691
- cursor: not-allowed;
692
- }
693
- .pollar-tx-sign-btn:not(:disabled):hover {
694
- opacity: 0.88;
695
- }
696
- .pollar-tx-spinner {
697
- animation: pollar-spin 0.9s linear infinite;
698
1159
  }
699
1160
  .pollar-tx-status {
700
1161
  display: flex;
@@ -711,34 +1172,6 @@
711
1172
  .pollar-tx-status[data-kind=SUCCESS] {
712
1173
  color: var(--pollar-success-text, #16a34a);
713
1174
  }
714
- .pollar-tx-footer {
715
- display: flex;
716
- align-items: center;
717
- justify-content: center;
718
- gap: 0.5rem;
719
- margin-top: 1rem;
720
- padding-top: 0.75rem;
721
- border-top: 1px solid var(--pollar-border);
722
- }
723
- .pollar-tx-footer-protected {
724
- font-size: 0.75rem;
725
- color: var(--pollar-muted);
726
- }
727
- .pollar-tx-footer-brand {
728
- display: flex;
729
- align-items: center;
730
- gap: 0.25rem;
731
- }
732
- .pollar-tx-footer-logo {
733
- height: 14px;
734
- width: 14px;
735
- object-fit: contain;
736
- }
737
- .pollar-tx-footer-name {
738
- font-size: 0.75rem;
739
- font-weight: 700;
740
- color: var(--pollar-text);
741
- }
742
1175
  .pollar-tx-xdr {
743
1176
  margin-bottom: 1rem;
744
1177
  }
@@ -773,6 +1206,198 @@
773
1206
  max-height: 120px;
774
1207
  overflow-y: auto;
775
1208
  }
1209
+ .pollar-tx-error-details {
1210
+ margin-bottom: 1rem;
1211
+ }
1212
+ .pollar-tx-error-details-label {
1213
+ font-size: 0.75rem;
1214
+ font-weight: 600;
1215
+ color: var(--pollar-error-text);
1216
+ margin: 0 0 0.375rem;
1217
+ text-transform: uppercase;
1218
+ letter-spacing: 0.04em;
1219
+ }
1220
+ .pollar-tx-error-details-content {
1221
+ margin: 0;
1222
+ padding: 0.75rem;
1223
+ background: var(--pollar-input-bg, rgba(0,0,0,0.04));
1224
+ border: 1px solid var(--pollar-border);
1225
+ border-radius: 8px;
1226
+ font-family: monospace;
1227
+ font-size: 0.6875rem;
1228
+ color: var(--pollar-error-text);
1229
+ white-space: pre-wrap;
1230
+ word-break: break-word;
1231
+ max-height: 160px;
1232
+ overflow-y: auto;
1233
+ }
1234
+
1235
+ /* src/components/tx-history-modal/TxHistoryModal.css */
1236
+ .pollar-hist-modal {
1237
+ width: 100%;
1238
+ max-width: 480px;
1239
+ border-radius: 1rem;
1240
+ border: 1px solid var(--pollar-border);
1241
+ padding: 1.75rem;
1242
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
1243
+ background-color: var(--pollar-bg);
1244
+ box-sizing: border-box;
1245
+ font-family: inherit;
1246
+ }
1247
+ .pollar-hist-list {
1248
+ display: flex;
1249
+ flex-direction: column;
1250
+ gap: 0.625rem;
1251
+ max-height: 360px;
1252
+ overflow-y: auto;
1253
+ margin-bottom: 1rem;
1254
+ }
1255
+ .pollar-hist-item {
1256
+ display: grid;
1257
+ grid-template-columns: 1fr auto;
1258
+ grid-template-rows: auto auto;
1259
+ column-gap: 0.75rem;
1260
+ row-gap: 0.125rem;
1261
+ background: var(--pollar-input-bg, rgba(0,0,0,0.04));
1262
+ border: 1px solid var(--pollar-border);
1263
+ border-radius: 10px;
1264
+ padding: 0.75rem 1rem;
1265
+ }
1266
+ .pollar-hist-item-summary {
1267
+ font-size: 0.875rem;
1268
+ font-weight: 500;
1269
+ color: var(--pollar-text);
1270
+ overflow: hidden;
1271
+ text-overflow: ellipsis;
1272
+ white-space: nowrap;
1273
+ }
1274
+ .pollar-hist-item-meta {
1275
+ font-size: 0.75rem;
1276
+ color: var(--pollar-muted);
1277
+ display: flex;
1278
+ gap: 0.5rem;
1279
+ align-items: center;
1280
+ }
1281
+ .pollar-hist-item-badge {
1282
+ grid-row: 1 / 3;
1283
+ grid-column: 2;
1284
+ align-self: center;
1285
+ font-size: 0.6875rem;
1286
+ font-weight: 600;
1287
+ padding: 3px 8px;
1288
+ border-radius: 999px;
1289
+ text-transform: uppercase;
1290
+ letter-spacing: 0.04em;
1291
+ white-space: nowrap;
1292
+ }
1293
+ .pollar-hist-item-badge[data-status=SUCCESS] {
1294
+ background: rgba(22, 163, 74, 0.12);
1295
+ color: var(--pollar-success-text, #16a34a);
1296
+ }
1297
+ .pollar-hist-item-badge[data-status=FAILED] {
1298
+ background: rgba(220, 38, 38, 0.1);
1299
+ color: var(--pollar-error-text, #dc2626);
1300
+ }
1301
+ .pollar-hist-item-badge[data-status=PENDING] {
1302
+ background: rgba(107, 114, 128, 0.12);
1303
+ color: var(--pollar-muted);
1304
+ }
1305
+ .pollar-hist-pagination {
1306
+ display: flex;
1307
+ align-items: center;
1308
+ justify-content: space-between;
1309
+ margin-bottom: 0.75rem;
1310
+ }
1311
+ .pollar-hist-pagination-info {
1312
+ font-size: 0.75rem;
1313
+ color: var(--pollar-muted);
1314
+ }
1315
+ .pollar-hist-pagination-btns {
1316
+ display: flex;
1317
+ gap: 0.375rem;
1318
+ }
1319
+ .pollar-hist-page-btn {
1320
+ background: none;
1321
+ border: 1px solid var(--pollar-border);
1322
+ border-radius: 6px;
1323
+ padding: 4px 10px;
1324
+ font-size: 0.75rem;
1325
+ font-weight: 500;
1326
+ color: var(--pollar-muted);
1327
+ cursor: pointer;
1328
+ transition: color 150ms, background 150ms;
1329
+ }
1330
+ .pollar-hist-page-btn:hover:not(:disabled) {
1331
+ color: var(--pollar-text);
1332
+ background: var(--pollar-border);
1333
+ }
1334
+ .pollar-hist-page-btn:disabled {
1335
+ opacity: 0.4;
1336
+ cursor: not-allowed;
1337
+ }
1338
+
1339
+ /* src/components/wallet-balance-modal/WalletBalanceModal.css */
1340
+ .pollar-bal-modal {
1341
+ width: 100%;
1342
+ max-width: 380px;
1343
+ border-radius: 1rem;
1344
+ border: 1px solid var(--pollar-border);
1345
+ padding: 1.75rem;
1346
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
1347
+ background-color: var(--pollar-bg);
1348
+ box-sizing: border-box;
1349
+ font-family: inherit;
1350
+ }
1351
+ .pollar-bal-address {
1352
+ font-size: 0.75rem;
1353
+ font-family: monospace;
1354
+ color: var(--pollar-muted);
1355
+ background: var(--pollar-input-bg, rgba(0,0,0,0.04));
1356
+ border: 1px solid var(--pollar-border);
1357
+ border-radius: 6px;
1358
+ padding: 0.375rem 0.75rem;
1359
+ margin-bottom: 1rem;
1360
+ overflow: hidden;
1361
+ text-overflow: ellipsis;
1362
+ white-space: nowrap;
1363
+ }
1364
+ .pollar-bal-list {
1365
+ display: flex;
1366
+ flex-direction: column;
1367
+ gap: 0.5rem;
1368
+ margin-bottom: 1rem;
1369
+ }
1370
+ .pollar-bal-item {
1371
+ display: flex;
1372
+ align-items: center;
1373
+ justify-content: space-between;
1374
+ background: var(--pollar-input-bg, rgba(0,0,0,0.04));
1375
+ border: 1px solid var(--pollar-border);
1376
+ border-radius: 10px;
1377
+ padding: 0.75rem 1rem;
1378
+ }
1379
+ .pollar-bal-asset {
1380
+ font-size: 0.875rem;
1381
+ font-weight: 600;
1382
+ color: var(--pollar-text);
1383
+ }
1384
+ .pollar-bal-amounts {
1385
+ display: flex;
1386
+ flex-direction: column;
1387
+ align-items: flex-end;
1388
+ gap: 0.125rem;
1389
+ }
1390
+ .pollar-bal-amount {
1391
+ font-size: 0.9375rem;
1392
+ font-weight: 700;
1393
+ color: var(--pollar-text);
1394
+ font-variant-numeric: tabular-nums;
1395
+ }
1396
+ .pollar-bal-available {
1397
+ font-size: 0.6875rem;
1398
+ color: var(--pollar-muted);
1399
+ font-variant-numeric: tabular-nums;
1400
+ }
776
1401
 
777
1402
  /* src/WalletButton.css */
778
1403
  .wallet-login-btn {