@coin-voyage/swapkit 0.4.0-beta.0 → 0.4.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.
@@ -1,1205 +1,1206 @@
1
1
  import styled from "../styles/styled";
2
- export const FormStack = styled.div `
3
- display: flex;
4
- width: 100%;
5
- flex-direction: column;
6
- gap: 6px;
7
- `;
8
- export const Toolbar = styled.div `
9
- display: flex;
10
- align-items: center;
11
- justify-content: space-between;
12
- min-height: 36px;
13
- `;
14
- export const ToolbarGroup = styled.div `
15
- position: relative;
16
- display: flex;
17
- align-items: center;
18
- gap: 8px;
19
- margin-left: ${({ $pushRight }) => ($pushRight ? "auto" : "0")};
20
- `;
21
- export const IconButton = styled.button `
22
- display: inline-flex;
23
- min-width: 36px;
24
- height: 36px;
25
- align-items: center;
26
- justify-content: center;
27
- gap: 6px;
28
- margin: 0;
29
- padding: 0 10px;
30
- border: 1px solid var(--sk-border);
31
- border-radius: 10px;
32
- color: var(--sk-text);
33
- background: var(--sk-surface);
34
- cursor: pointer;
35
- font-size: 14px;
36
- font-weight: 500;
37
- line-height: 20px;
38
- transition:
39
- background 140ms ease,
40
- border-color 140ms ease;
41
-
42
- &:hover:not(:disabled) {
43
- background: var(--sk-surface-elevated);
44
- border-color: var(--sk-accent);
45
- }
46
-
47
- &:disabled {
48
- cursor: not-allowed;
49
- opacity: 0.5;
50
- }
51
- `;
52
- export const WalletLabel = styled.span `
53
- max-width: 150px;
54
- overflow: hidden;
55
- font-size: 12px;
56
- font-weight: 600;
57
- text-overflow: ellipsis;
58
- white-space: nowrap;
59
- `;
60
- export const FloatingPanel = styled.div `
61
- position: absolute;
62
- z-index: 20;
63
- top: calc(100% + 8px);
64
- right: 0;
65
- width: 250px;
66
- padding: 14px;
67
- border: 1px solid var(--sk-border);
68
- border-radius: var(--sk-radius);
69
- color: var(--sk-text);
70
- background: var(--sk-surface);
71
- box-shadow: var(--sk-shadow);
72
- `;
73
- export const SettingsPanel = styled(FloatingPanel) `
74
- width: min(320px, calc(100vw - 32px));
75
- padding: 16px;
76
- `;
77
- export const SettingsRow = styled.div `
78
- display: flex;
79
- align-items: center;
80
- justify-content: space-between;
81
- gap: 16px;
82
- `;
83
- export const SettingsLabel = styled.span `
84
- display: inline-flex;
85
- align-items: center;
86
- gap: 5px;
87
- color: var(--sk-text);
88
- font-size: 14px;
89
- font-weight: 500;
90
- white-space: nowrap;
91
- `;
92
- export const InfoWrap = styled.span `
93
- position: relative;
94
- display: inline-flex;
95
- `;
96
- export const InfoButton = styled.button `
97
- display: inline-flex;
98
- width: 18px;
99
- height: 18px;
100
- align-items: center;
101
- justify-content: center;
102
- padding: 0;
103
- border: 0;
104
- border-radius: 50%;
105
- color: var(--sk-text-muted);
106
- background: transparent;
107
- cursor: help;
108
- `;
109
- export const SettingsTooltip = styled.span `
110
- position: absolute;
111
- z-index: 2;
112
- top: calc(100% + 10px);
113
- left: -14px;
114
- width: 278px;
115
- padding: 12px;
116
- border: 1px solid var(--sk-border);
117
- border-radius: 10px;
118
- color: var(--sk-text-muted);
119
- background: var(--sk-surface);
120
- box-shadow: var(--sk-shadow);
121
- font-size: 12px;
122
- font-weight: 400;
123
- line-height: 1.45;
124
- white-space: normal;
125
- `;
126
- export const SlippageControl = styled.div `
127
- display: inline-flex;
128
- height: 36px;
129
- align-items: center;
130
- gap: 2px;
131
- padding: 3px;
132
- border: 1px solid var(--sk-border);
133
- border-radius: 999px;
134
- background: var(--sk-surface-elevated);
135
- `;
136
- export const SlippageModeButton = styled.button `
137
- height: 28px;
138
- padding: 0 10px;
139
- border: 0;
140
- border-radius: 999px;
141
- color: ${({ $active }) => ($active ? "var(--sk-accent)" : "var(--sk-text-muted)")};
142
- background: ${({ $active }) => ($active ? "color-mix(in srgb, var(--sk-accent) 14%, transparent)" : "transparent")};
143
- cursor: pointer;
144
- font-size: 14px;
145
- font-weight: 600;
146
- `;
147
- export const SlippageInputWrap = styled.label `
148
- display: inline-flex;
149
- height: 28px;
150
- align-items: center;
151
- padding: 0 9px;
152
- border-radius: 999px;
153
- color: ${({ $active }) => ($active ? "var(--sk-text)" : "var(--sk-text-muted)")};
154
- background: ${({ $active }) => ($active ? "color-mix(in srgb, var(--sk-accent) 10%, transparent)" : "transparent")};
155
- cursor: text;
156
- font-size: 14px;
157
- font-weight: 500;
158
- `;
159
- export const SlippageInput = styled.input `
160
- width: 38px;
161
- padding: 0;
162
- border: 0;
163
- color: inherit;
164
- background: transparent;
165
- font-size: inherit;
166
- font-weight: inherit;
167
- text-align: right;
168
- outline: none;
169
-
170
- &:focus,
171
- &&:focus-visible {
172
- outline: none;
173
- box-shadow: none;
174
- }
175
- `;
176
- export const FieldLabel = styled.label `
177
- display: block;
178
- margin-bottom: 8px;
179
- color: var(--sk-text-muted);
180
- font-size: 12px;
181
- font-weight: 600;
182
- `;
183
- export const CompactInput = styled.input `
184
- width: 100%;
185
- height: 38px;
186
- padding: 0 10px;
187
- border: 1px solid var(--sk-border);
188
- border-radius: 8px;
189
- color: var(--sk-text);
190
- background: var(--sk-surface-elevated);
191
- `;
192
- export const Hint = styled.p `
193
- margin: 8px 0 0;
194
- color: ${({ $tone }) => $tone === "danger" ? "var(--sk-danger)" : $tone === "warning" ? "var(--sk-warning)" : "var(--sk-text-muted)"};
195
- font-size: 12px;
196
- line-height: 1.4;
197
- `;
198
- export const CardWrap = styled.div `
199
- position: relative;
200
- `;
201
- export const CurrencyCard = styled.section `
202
- position: relative;
203
- width: 100%;
204
- min-height: 128px;
205
- padding: 14px 14px 8px;
206
- border: 0;
207
- border-style: none;
208
- border-radius: var(--sk-radius);
209
- color: var(--sk-text);
210
- background: var(--sk-surface);
211
-
212
- &:hover [data-quick-amounts],
213
- &:focus-within [data-quick-amounts] {
214
- opacity: 1;
215
- pointer-events: auto;
216
- transform: translateY(0);
217
- }
218
-
219
- @media (hover: none) {
220
- [data-quick-amounts] {
221
- opacity: 1;
222
- pointer-events: auto;
223
- transform: translateY(0);
224
- }
225
- }
226
- `;
227
- export const CardTitle = styled.div `
228
- margin-bottom: 12px;
229
- color: #6b7280;
230
- font-size: 12px;
231
- font-weight: 500;
232
- line-height: 16px;
233
- `;
234
- export const QuickAmountActions = styled.div `
235
- position: absolute;
236
- top: 10px;
237
- right: 12px;
238
- display: flex;
239
- align-items: center;
240
- gap: 4px;
241
- opacity: 0;
242
- pointer-events: none;
243
- transform: translateY(-2px);
244
- transition:
245
- opacity 120ms ease,
246
- transform 120ms ease;
247
-
248
- @media (prefers-reduced-motion: reduce) {
249
- transition: none;
250
- }
251
- `;
252
- export const QuickAmountButton = styled.button `
253
- min-width: 34px;
254
- height: 24px;
255
- padding: 0 7px;
256
- border: 1px solid var(--sk-border);
257
- border-radius: 999px;
258
- color: var(--sk-text);
259
- background: var(--sk-surface-elevated);
260
- cursor: pointer;
261
- font-size: 11px;
262
- font-weight: 600;
263
- line-height: 22px;
264
-
265
- &:hover:not(:disabled) {
266
- border-color: var(--sk-accent);
267
- color: var(--sk-accent);
268
- }
269
-
270
- &:disabled {
271
- cursor: not-allowed;
272
- opacity: 0.5;
273
- }
274
- `;
275
- export const AmountRow = styled.div `
276
- display: grid;
277
- grid-template-columns: minmax(0, 1fr) auto;
278
- align-items: center;
279
- gap: 12px;
280
- `;
281
- export const AmountInput = styled.input `
282
- min-width: 0;
283
- width: 100%;
284
- padding: 0;
285
- border: 0;
286
- color: var(--sk-text);
287
- caret-color: var(--sk-text);
288
- background: transparent;
289
- font-size: 24px;
290
- font-weight: 700;
291
- line-height: 32px;
292
- box-shadow: none;
293
-
294
- && {
295
- color: var(--sk-text);
296
- font-family: var(--sk-font-family);
297
- font-size: 24px;
298
- font-weight: 700;
299
- line-height: 32px;
300
- }
301
-
302
- &::placeholder {
303
- color: var(--sk-text);
304
- opacity: 1;
305
- }
306
-
307
- &:focus,
308
- &&:focus-visible {
309
- outline: none;
310
- box-shadow: none;
311
- }
312
-
313
- &:disabled {
314
- opacity: 0.7;
315
- }
316
- `;
317
- const Skeleton = styled.span `
318
- display: block;
319
- border-radius: 5px;
320
- background: var(--sk-surface-elevated);
321
- animation: sk-skeleton-pulse 1.4s ease-in-out infinite;
322
-
323
- @keyframes sk-skeleton-pulse {
324
- 0%,
325
- 100% {
326
- opacity: 0.58;
327
- }
328
-
329
- 50% {
330
- opacity: 1;
331
- }
332
- }
333
- `;
334
- export const AmountSkeleton = styled(Skeleton) `
335
- width: min(128px, 70%);
336
- height: 32px;
337
- `;
338
- export const QuoteValueSkeleton = styled(Skeleton) `
339
- width: 64px;
340
- height: 16px;
341
- `;
342
- export const TokenButton = styled.button `
343
- display: inline-flex;
344
- max-width: 170px;
345
- min-width: 124px;
346
- height: 40px;
347
- align-items: center;
348
- gap: 8px;
349
- padding: 8px;
350
- border: 1px solid var(--sk-border);
351
- border-radius: 8px;
352
- color: var(--sk-text);
353
- background: transparent;
354
- cursor: pointer;
355
- font-size: 14px;
356
- font-weight: 500;
357
- line-height: 20px;
358
-
359
- > svg:last-child {
360
- flex: 0 0 auto;
361
- margin-left: auto;
362
- }
363
- `;
364
- export const TokenIconWrap = styled.span `
365
- position: relative;
366
- display: inline-flex;
367
- width: ${({ $size }) => $size}px;
368
- height: ${({ $size }) => $size}px;
369
- flex: 0 0 ${({ $size }) => $size}px;
370
- `;
371
- export const TokenImage = styled.img `
372
- width: 100%;
373
- height: 100%;
374
- border-radius: 50%;
375
- object-fit: contain;
376
- `;
377
- export const TokenFallback = styled.span `
378
- display: inline-flex;
379
- width: 100%;
380
- height: 100%;
381
- align-items: center;
382
- justify-content: center;
383
- border-radius: 50%;
384
- color: var(--sk-accent-text);
385
- background: var(--sk-accent);
386
- font-size: 10px;
387
- font-weight: 800;
388
- `;
389
- export const ChainBadge = styled.span `
390
- position: absolute;
391
- right: 0;
392
- bottom: 0;
393
- display: inline-flex;
394
- width: ${({ $size }) => $size}px;
395
- height: ${({ $size }) => $size}px;
396
- flex: 0 0 ${({ $size }) => $size}px;
397
- align-items: center;
398
- justify-content: center;
399
- overflow: hidden;
400
- border: 0;
401
- border-radius: 22.5%;
402
- background: ${({ $fillBackground }) => ($fillBackground ? "#4ca3ff" : "var(--sk-surface-elevated)")};
403
- box-shadow: 0 0 0 1px #374151;
404
-
405
- svg,
406
- img {
407
- display: block;
408
- width: 100%;
409
- height: 100%;
410
- max-width: none;
411
- flex: 0 0 100%;
412
- }
413
- `;
414
- export const CardFooter = styled.div `
415
- display: flex;
416
- align-items: center;
417
- justify-content: space-between;
418
- gap: 12px;
419
- margin-top: 12px;
420
- color: #6b7280;
421
- font-size: 12px;
422
- font-weight: 400;
423
- line-height: 16px;
424
- `;
425
- export const InlineActions = styled.div `
426
- display: flex;
427
- min-width: 0;
428
- align-items: center;
429
- gap: 8px;
430
- `;
431
- export const OutputWalletControl = styled.span `
432
- position: relative;
433
- display: inline-flex;
434
- `;
435
- export const OutputWalletTrigger = styled.button `
436
- display: inline-flex;
437
- min-width: 0;
438
- align-items: center;
439
- gap: 4px;
440
- padding: 0;
441
- border: 0;
442
- color: var(--sk-accent);
443
- background: transparent;
444
- cursor: pointer;
445
- font-size: 12px;
446
- font-weight: 500;
447
- line-height: 16px;
448
- white-space: nowrap;
449
-
450
- > svg {
451
- flex: 0 0 16px;
452
- transition: transform 180ms ease;
453
- }
454
- `;
455
- export const OutputWalletMenu = styled.span `
456
- position: absolute;
457
- z-index: 20;
458
- top: calc(100% + 8px);
459
- right: 0;
460
- display: grid;
461
- width: 192px;
462
- gap: 4px;
463
- padding: 12px;
464
- border: 1px solid var(--sk-border);
465
- border-radius: 10px;
466
- background: var(--sk-surface);
467
- box-shadow: var(--sk-shadow);
468
- `;
469
- export const OutputWalletOption = styled.button `
470
- display: flex;
471
- width: 100%;
472
- min-height: 36px;
473
- align-items: center;
474
- justify-content: space-between;
475
- gap: 8px;
476
- padding: 8px;
477
- border: 1px solid transparent;
478
- border-radius: 7px;
479
- color: var(--sk-text);
480
- background: var(--sk-surface-elevated);
481
- cursor: pointer;
482
- font-size: 12px;
483
- font-weight: 400;
484
- line-height: 16px;
485
- text-align: left;
486
-
487
- &:first-child {
488
- color: var(--sk-accent);
489
- }
490
-
491
- &:hover {
492
- border-color: var(--sk-accent);
493
- }
494
- `;
495
- export const SwitchButton = styled(IconButton) `
496
- position: absolute;
497
- z-index: 5;
498
- left: 50%;
499
- bottom: -29px;
500
- width: 52px;
501
- height: 52px;
502
- transform: translateX(-50%);
503
- border: 6px solid var(--sk-background);
504
- border-radius: 50%;
505
- background: var(--sk-surface);
506
-
507
- &:hover:not(:disabled) {
508
- border-color: var(--sk-background);
509
- color: var(--sk-text-muted);
510
- background: var(--sk-surface);
511
- }
512
-
513
- &:hover:not(:disabled) > svg {
514
- transform: rotate(180deg);
515
- }
516
- `;
517
- export const BreakdownCard = styled.section `
518
- overflow: hidden;
519
- border: 1px solid var(--sk-border);
520
- border-radius: var(--sk-radius);
521
- background: var(--sk-surface);
522
- `;
523
- export const BreakdownToggle = styled.button `
524
- display: flex;
525
- width: 100%;
526
- align-items: center;
527
- justify-content: space-between;
528
- gap: 16px;
529
- padding: 13px 14px;
530
- border: 0;
531
- color: var(--sk-text);
532
- background: transparent;
533
- cursor: pointer;
534
- font-size: 12px;
535
- font-weight: 600;
536
- `;
537
- export const BreakdownMeta = styled.span `
538
- display: inline-flex;
539
- align-items: center;
540
- gap: 12px;
541
- margin-left: auto;
542
- color: var(--sk-text-muted);
543
- font-weight: 400;
544
- `;
545
- export const NetworkCost = styled.span `
546
- display: inline-flex;
547
- align-items: center;
548
- gap: 4px;
549
- white-space: nowrap;
550
- `;
551
- export const BreakdownBody = styled.div `
552
- display: grid;
553
- gap: 10px;
554
- padding: 0 14px 14px;
555
- border-top: 1px solid var(--sk-border);
556
- `;
557
- export const DetailRow = styled.div `
558
- display: flex;
559
- align-items: center;
560
- justify-content: space-between;
561
- gap: 18px;
562
- padding-top: 10px;
563
- color: var(--sk-text-muted);
564
- font-size: 12px;
565
-
566
- strong {
567
- color: var(--sk-text);
568
- font-weight: 600;
569
- }
570
- `;
571
- export const FreeFeeBadge = styled.span `
572
- display: inline-flex;
573
- align-items: center;
574
- padding: 3px 8px;
575
- border: 1px solid color-mix(in srgb, var(--sk-success) 35%, transparent);
576
- border-radius: 999px;
577
- color: var(--sk-success);
578
- background: color-mix(in srgb, var(--sk-success) 12%, transparent);
579
- font-size: 11px;
580
- font-weight: 700;
581
- letter-spacing: 0.01em;
582
- line-height: 1;
583
- `;
584
- export const ErrorBox = styled.div `
585
- padding: 11px 13px;
586
- border: 1px solid color-mix(in srgb, var(--sk-danger) 45%, transparent);
587
- border-radius: 9px;
588
- color: var(--sk-danger);
589
- background: color-mix(in srgb, var(--sk-danger) 10%, transparent);
590
- font-size: 12px;
591
- `;
592
- export const PrimaryButton = styled.button `
593
- display: inline-flex;
594
- width: 100%;
595
- min-height: 36px;
596
- align-items: center;
597
- justify-content: center;
598
- gap: 8px;
599
- padding: 0 18px;
600
- border: 0;
601
- border-radius: 8px;
602
- color: var(--sk-accent-text);
603
- background: var(--sk-accent);
604
- cursor: pointer;
605
- font-size: 14px;
606
- font-weight: 500;
607
- transition:
608
- background 140ms ease,
609
- opacity 140ms ease;
610
-
611
- &:hover:not(:disabled) {
612
- background: var(--sk-accent-hover);
613
- }
614
-
615
- &:disabled {
616
- cursor: not-allowed;
617
- opacity: 0.52;
618
- }
619
- `;
620
- export const WalletRequirementButton = styled(PrimaryButton) `
621
- font-weight: 600;
622
- `;
623
- export const Overlay = styled.div `
624
- position: fixed;
625
- z-index: 2147483000;
626
- inset: 0;
627
- display: flex;
628
- align-items: center;
629
- justify-content: center;
630
- padding: 16px;
631
- background: var(--sk-overlay);
632
- backdrop-filter: blur(5px);
633
- `;
634
- export const Dialog = styled.div `
635
- width: min(100%, ${({ $maxWidth }) => $maxWidth ?? 440}px);
636
- max-height: min(720px, calc(100vh - 32px));
637
- overflow: auto;
638
- padding: 20px;
639
- border: 1px solid var(--sk-border);
640
- border-radius: 16px;
641
- color: var(--sk-text);
642
- background: var(--sk-surface);
643
- box-shadow: var(--sk-shadow);
644
- scrollbar-color: #cdcdcd transparent;
645
- -ms-overflow-style: thin;
646
- scrollbar-width: thin;
647
- `;
648
- export const DialogHeader = styled.div `
649
- display: flex;
650
- align-items: center;
651
- justify-content: space-between;
652
- gap: 12px;
653
- margin-bottom: 16px;
654
-
655
- h2 {
656
- margin: 0;
657
- font-size: 18px;
658
- }
659
- `;
660
- export const DialogCloseButton = styled.button `
661
- display: inline-flex;
662
- width: 32px;
663
- height: 32px;
664
- flex: 0 0 32px;
665
- align-items: center;
666
- justify-content: center;
667
- padding: 0;
668
- border: 0;
669
- border-radius: 7px;
670
- color: var(--sk-text);
671
- background: transparent;
672
- cursor: pointer;
673
-
674
- &:hover {
675
- background: var(--sk-surface-elevated);
676
- }
677
- `;
678
- export const SearchInput = styled(CompactInput) `
679
- height: 36px;
680
- min-width: 0;
681
- padding: 0;
682
- border: 0;
683
- color: var(--sk-text);
684
- background: transparent;
685
- font-size: 14px;
686
- font-weight: 500;
687
- line-height: 20px;
688
- outline: none;
689
-
690
- &::placeholder {
691
- color: var(--sk-text-muted);
692
- opacity: 1;
693
- }
694
-
695
- &:focus,
696
- &:focus-visible {
697
- outline: none;
698
- box-shadow: none;
699
- }
700
- `;
701
- export const SearchField = styled.div `
702
- display: flex;
703
- width: 100%;
704
- height: 36px;
705
- min-width: 0;
706
- align-items: center;
707
- gap: 8px;
708
- padding: 0 12px;
709
- border: 1px solid var(--sk-border);
710
- border-radius: 8px;
711
- background: var(--sk-background);
712
-
713
- > svg {
714
- flex: 0 0 16px;
715
- color: var(--sk-text-muted);
716
- opacity: 0.5;
717
- pointer-events: none;
718
- }
719
- `;
720
- export const PickerBody = styled.div `
721
- position: relative;
722
- min-width: 0;
723
- `;
724
- export const PickerControls = styled.div `
725
- position: relative;
726
- display: grid;
727
- grid-template-columns: minmax(0, 1fr) auto;
728
- gap: 8px;
729
- margin-bottom: 12px;
730
- `;
731
- export const NetworkButton = styled(IconButton) `
732
- max-width: 150px;
733
- height: 38px;
734
- white-space: nowrap;
735
- `;
736
- export const NetworkMenu = styled.div `
737
- position: absolute;
738
- z-index: 4;
739
- top: 44px;
740
- right: 0;
741
- display: grid;
742
- width: min(202px, 100%);
743
- max-height: min(360px, calc(100vh - 160px));
744
- align-content: start;
745
- padding: 4px;
746
- overflow-y: auto;
747
- border: 1px solid var(--sk-border);
748
- border-radius: 6px;
749
- background: var(--sk-background);
750
- box-shadow: var(--sk-shadow);
751
- scrollbar-color: #cdcdcd transparent;
752
- -ms-overflow-style: thin;
753
- scrollbar-width: thin;
754
-
755
- &::-webkit-scrollbar {
756
- width: 6px;
757
- }
758
-
759
- &::-webkit-scrollbar-track {
760
- background: transparent;
761
- }
762
-
763
- &::-webkit-scrollbar-thumb {
764
- border-radius: 999px;
765
- background: #cdcdcd;
766
- }
767
- `;
768
- export const NetworkOption = styled.button `
769
- display: flex;
770
- width: 100%;
771
- align-items: center;
772
- gap: 8px;
773
- min-height: 32px;
774
- padding: 6px 8px;
775
- border: 0;
776
- border-radius: 4px;
777
- color: var(--sk-text-muted);
778
- background: transparent;
779
- cursor: pointer;
780
- font-size: 14px;
781
- font-weight: 400;
782
- line-height: 20px;
783
- text-align: left;
784
-
785
- &:hover {
786
- color: var(--sk-text);
787
- background: var(--sk-surface);
788
- }
789
-
790
- &[aria-selected="true"] {
791
- color: var(--sk-text);
792
- background: var(--sk-surface);
793
- }
794
- `;
795
- export const NetworkLogo = styled.span `
796
- display: inline-flex;
797
- width: 16px;
798
- height: 16px;
799
- align-items: center;
800
- justify-content: center;
801
- overflow: hidden;
802
- border-radius: 50%;
803
-
804
- svg,
805
- img {
806
- width: 100%;
807
- height: 100%;
808
- }
809
- `;
810
- export const AllNetworksLogo = styled.span `
811
- position: relative;
812
- display: inline-flex;
813
- width: 32px;
814
- height: 18px;
815
- flex: 0 0 32px;
816
-
817
- > span {
818
- position: absolute;
819
- top: 1px;
820
- display: inline-flex;
821
- width: 16px;
822
- height: 16px;
823
- overflow: hidden;
824
- border: 1px solid var(--sk-surface-elevated);
825
- border-radius: 50%;
826
- background: var(--sk-surface-elevated);
827
-
828
- &:nth-child(1) {
829
- left: 0;
830
- }
831
-
832
- &:nth-child(2) {
833
- left: 8px;
834
- }
835
-
836
- &:nth-child(3) {
837
- left: 16px;
838
- }
839
-
840
- svg,
841
- img {
842
- width: 100%;
843
- height: 100%;
844
- }
845
- }
846
- `;
847
- export const TokenList = styled.div `
848
- display: grid;
849
- max-height: min(390px, 55vh);
850
- gap: 7px;
851
- overflow-y: auto;
852
- padding-right: 3px;
853
- scrollbar-color: #cdcdcd transparent;
854
- -ms-overflow-style: thin;
855
- scrollbar-width: thin;
856
-
857
- &::-webkit-scrollbar {
858
- width: 6px;
859
- }
860
-
861
- &::-webkit-scrollbar-track {
862
- background: transparent;
863
- }
864
-
865
- &::-webkit-scrollbar-thumb {
866
- border-radius: 999px;
867
- background: #cdcdcd;
868
- }
869
- `;
870
- export const TokenOption = styled.button `
871
- display: grid;
872
- grid-template-columns: auto minmax(0, 1fr) auto;
873
- align-items: center;
874
- gap: 10px;
875
- width: 100%;
876
- min-height: 64px;
877
- padding: 9px 11px;
878
- border: 1px solid var(--sk-border);
879
- border-radius: 12px;
880
- color: var(--sk-text);
881
- background: transparent;
882
- cursor: pointer;
883
- text-align: left;
884
-
885
- &:hover {
886
- background: var(--sk-surface-elevated);
887
- }
888
- `;
889
- export const TokenMeta = styled.span `
890
- min-width: 0;
891
-
892
- strong,
893
- small {
894
- display: block;
895
- overflow: hidden;
896
- text-overflow: ellipsis;
897
- white-space: nowrap;
898
- }
899
-
900
- small {
901
- margin-top: 2px;
902
- color: var(--sk-text-muted);
903
- font-size: 11px;
904
- }
905
-
906
- strong {
907
- font-size: 14px;
908
- }
909
- `;
910
- export const TokenBalance = styled.span `
911
- text-align: right;
912
-
913
- strong,
914
- small {
915
- display: block;
916
- white-space: nowrap;
917
- }
918
-
919
- strong {
920
- color: var(--sk-text);
921
- font-size: 14px;
922
- }
923
-
924
- small {
925
- margin-top: 3px;
926
- color: var(--sk-text-muted);
927
- font-size: 11px;
928
- }
929
- `;
930
- export const EmptyState = styled.div `
931
- padding: 24px 8px;
932
- color: var(--sk-text-muted);
933
- font-size: 13px;
934
- text-align: center;
935
- `;
936
- export const WalletList = styled.div `
937
- display: grid;
938
- gap: 6px;
939
- `;
940
- export const WalletOption = styled.button `
941
- display: grid;
942
- grid-template-columns: auto minmax(0, 1fr);
943
- align-items: center;
944
- gap: 12px;
945
- width: 100%;
946
- min-height: 56px;
947
- padding: 10px 12px;
948
- border: 1px solid var(--sk-border);
949
- border-radius: 12px;
950
- color: var(--sk-text);
951
- background: transparent;
952
- cursor: pointer;
953
- text-align: left;
954
-
955
- &:hover {
956
- background: var(--sk-surface);
957
- }
958
-
959
- &:disabled {
960
- cursor: wait;
961
- opacity: 0.6;
962
- }
963
- `;
964
- export const WalletIconFrame = styled.span `
965
- display: inline-flex;
966
- width: ${({ $size = 32 }) => $size}px;
967
- height: ${({ $size = 32 }) => $size}px;
968
- flex: 0 0 ${({ $size = 32 }) => $size}px;
969
- align-items: center;
970
- justify-content: center;
971
- overflow: hidden;
972
- border-radius: 50%;
973
- `;
974
- export const WalletImage = styled.img `
975
- width: 100%;
976
- height: 100%;
977
- object-fit: contain;
978
- `;
979
- export const WalletFallback = styled.span `
980
- display: inline-flex;
981
- width: 100%;
982
- height: 100%;
983
- align-items: center;
984
- justify-content: center;
985
- border-radius: 50%;
986
- color: var(--sk-accent-text);
987
- background: var(--sk-accent);
988
- font-size: 10px;
989
- font-weight: 700;
990
- `;
991
- export const WalletOptionMeta = styled.span `
992
- min-width: 0;
993
-
994
- > span:first-child {
995
- display: flex;
996
- align-items: center;
997
- gap: 8px;
998
- }
999
-
1000
- strong {
1001
- overflow: hidden;
1002
- font-size: 14px;
1003
- font-weight: 600;
1004
- text-overflow: ellipsis;
1005
- white-space: nowrap;
1006
- }
1007
-
1008
- small {
1009
- display: block;
1010
- margin-top: 3px;
1011
- overflow: hidden;
1012
- color: var(--sk-text-muted);
1013
- font-size: 12px;
1014
- text-overflow: ellipsis;
1015
- white-space: nowrap;
1016
- }
1017
- `;
1018
- export const MultichainBadge = styled.span `
1019
- padding: 2px 6px;
1020
- border: 1px solid color-mix(in srgb, var(--sk-accent) 45%, transparent);
1021
- border-radius: 999px;
1022
- color: var(--sk-accent);
1023
- background: color-mix(in srgb, var(--sk-accent) 10%, transparent);
1024
- font-size: 10px;
1025
- font-weight: 600;
1026
- line-height: 14px;
1027
- `;
1028
- export const ConnectedWalletPanel = styled(FloatingPanel) `
1029
- right: auto;
1030
- left: 0;
1031
- width: 288px;
1032
- padding: 0;
1033
- overflow: hidden;
1034
- `;
1035
- export const WalletPanelHeader = styled.div `
1036
- padding: 12px 14px;
1037
- border-bottom: 1px solid var(--sk-border);
1038
- font-size: 14px;
1039
- font-weight: 600;
1040
- `;
1041
- export const ConnectedWalletRow = styled.div `
1042
- display: flex;
1043
- align-items: center;
1044
- justify-content: space-between;
1045
- gap: 12px;
1046
- padding: 10px 12px;
1047
- `;
1048
- export const WalletIdentity = styled.div `
1049
- display: flex;
1050
- min-width: 0;
1051
- align-items: center;
1052
- gap: 10px;
1053
- `;
1054
- export const WalletDetails = styled.div `
1055
- min-width: 0;
1056
-
1057
- strong,
1058
- small {
1059
- display: block;
1060
- overflow: hidden;
1061
- text-overflow: ellipsis;
1062
- white-space: nowrap;
1063
- }
1064
-
1065
- strong {
1066
- font-size: 14px;
1067
- font-weight: 500;
1068
- }
1069
-
1070
- small {
1071
- margin-top: 2px;
1072
- color: var(--sk-text-muted);
1073
- font-size: 12px;
1074
- }
1075
- `;
1076
- export const WalletActions = styled.div `
1077
- display: flex;
1078
- flex: 0 0 auto;
1079
- align-items: center;
1080
- gap: 4px;
1081
- `;
1082
- export const WalletSwitchButton = styled.button `
1083
- height: 28px;
1084
- padding: 0 8px;
1085
- border: 0;
1086
- border-radius: 6px;
1087
- color: var(--sk-text-muted);
1088
- background: transparent;
1089
- cursor: pointer;
1090
- font-size: 12px;
1091
- font-weight: 500;
1092
-
1093
- &:hover {
1094
- color: var(--sk-accent);
1095
- background: color-mix(in srgb, var(--sk-accent) 12%, transparent);
1096
- }
1097
- `;
1098
- export const WalletDisconnectButton = styled.button `
1099
- display: inline-flex;
1100
- width: 28px;
1101
- height: 28px;
1102
- flex: 0 0 28px;
1103
- align-items: center;
1104
- justify-content: center;
1105
- padding: 0;
1106
- border: 0;
1107
- border-radius: 50%;
1108
- color: var(--sk-text-muted);
1109
- background: transparent;
1110
- cursor: pointer;
1111
-
1112
- &:hover {
1113
- color: var(--sk-danger);
1114
- background: color-mix(in srgb, var(--sk-danger) 12%, transparent);
1115
- }
1116
- `;
1117
- export const DisconnectAllButton = styled.button `
1118
- display: flex;
1119
- width: calc(100% - 12px);
1120
- align-items: center;
1121
- gap: 8px;
1122
- margin: 6px;
1123
- padding: 9px 10px;
1124
- border: 0;
1125
- border-radius: 7px;
1126
- color: var(--sk-accent);
1127
- background: color-mix(in srgb, var(--sk-accent) 12%, transparent);
1128
- cursor: pointer;
1129
- font-size: 14px;
1130
- font-weight: 500;
1131
-
1132
- &:hover {
1133
- background: color-mix(in srgb, var(--sk-accent) 18%, transparent);
1134
- }
1135
- `;
1136
- export const TriggerWalletIcons = styled.span `
1137
- display: flex;
1138
- align-items: center;
1139
-
1140
- > span + span {
1141
- margin-left: -5px;
1142
- border: 1px solid var(--sk-surface);
1143
- }
1144
- `;
1145
- export const ExecutionContent = styled.div `
1146
- display: grid;
1147
- gap: 16px;
1148
- `;
1149
- export const TokenRoute = styled.div `
1150
- display: flex;
1151
- align-items: center;
1152
- justify-content: space-between;
1153
- gap: 16px;
1154
- `;
1155
- export const TokenAmount = styled.div `
1156
- display: flex;
1157
- min-width: 0;
1158
- flex: 1;
1159
- flex-direction: column;
1160
- align-items: ${({ $align }) => ($align === "end" ? "flex-end" : "flex-start")};
1161
- gap: 8px;
1162
-
1163
- strong {
1164
- max-width: 100%;
1165
- overflow: hidden;
1166
- color: var(--sk-text);
1167
- font-size: 14px;
1168
- font-weight: 600;
1169
- text-overflow: ellipsis;
1170
- white-space: nowrap;
1171
- }
1172
- `;
1173
- export const RouteArrow = styled.span `
1174
- display: inline-flex;
1175
- flex: 0 0 auto;
1176
- color: var(--sk-text-muted);
1177
- `;
1178
- export const ProgressList = styled.ol `
1179
- margin: 0;
1180
- padding: 16px;
1181
- border: 1px solid var(--sk-border);
1182
- border-radius: var(--sk-radius);
1183
- list-style: none;
1184
- `;
1185
- export const ProgressItem = styled.li `
1186
- display: grid;
1187
- grid-template-columns: 24px minmax(0, 1fr);
1188
- column-gap: 12px;
1189
- `;
1190
- export const ProgressMarkerColumn = styled.span `
1191
- display: flex;
1192
- align-items: center;
1193
- flex-direction: column;
1194
- `;
1195
- export const ProgressMarker = styled.span `
1196
- display: inline-flex;
1197
- width: 24px;
1198
- height: 24px;
1199
- flex: 0 0 24px;
1200
- align-items: center;
1201
- justify-content: center;
1202
- border: 1px solid
2
+ export const FormStack = styled.div `
3
+ display: flex;
4
+ width: 100%;
5
+ flex-direction: column;
6
+ gap: 6px;
7
+ `;
8
+ export const Toolbar = styled.div `
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: space-between;
12
+ min-height: 36px;
13
+ `;
14
+ export const ToolbarGroup = styled.div `
15
+ position: relative;
16
+ display: flex;
17
+ align-items: center;
18
+ gap: 8px;
19
+ margin-left: ${({ $pushRight }) => ($pushRight ? "auto" : "0")};
20
+ `;
21
+ export const IconButton = styled.button `
22
+ display: inline-flex;
23
+ min-width: 36px;
24
+ height: 36px;
25
+ align-items: center;
26
+ justify-content: center;
27
+ gap: 6px;
28
+ margin: 0;
29
+ padding: 0 10px;
30
+ border: 1px solid var(--sk-border);
31
+ border-radius: 10px;
32
+ color: var(--sk-text);
33
+ background: var(--sk-surface);
34
+ cursor: pointer;
35
+ font-size: 14px;
36
+ font-weight: 500;
37
+ line-height: 20px;
38
+ transition:
39
+ background 140ms ease,
40
+ border-color 140ms ease;
41
+
42
+ &:hover:not(:disabled) {
43
+ background: var(--sk-surface-elevated);
44
+ border-color: var(--sk-accent);
45
+ }
46
+
47
+ &:disabled {
48
+ cursor: not-allowed;
49
+ opacity: 0.5;
50
+ }
51
+ `;
52
+ export const WalletLabel = styled.span `
53
+ max-width: 150px;
54
+ overflow: hidden;
55
+ font-size: 12px;
56
+ font-weight: 600;
57
+ text-overflow: ellipsis;
58
+ white-space: nowrap;
59
+ `;
60
+ export const FloatingPanel = styled.div `
61
+ position: absolute;
62
+ z-index: 20;
63
+ top: calc(100% + 8px);
64
+ right: 0;
65
+ width: 250px;
66
+ padding: 14px;
67
+ border: 1px solid var(--sk-border);
68
+ border-radius: var(--sk-radius);
69
+ color: var(--sk-text);
70
+ background: var(--sk-surface);
71
+ box-shadow: var(--sk-shadow);
72
+ `;
73
+ export const SettingsPanel = styled(FloatingPanel) `
74
+ width: min(320px, calc(100vw - 32px));
75
+ padding: 16px;
76
+ `;
77
+ export const SettingsRow = styled.div `
78
+ display: flex;
79
+ align-items: center;
80
+ justify-content: space-between;
81
+ gap: 16px;
82
+ `;
83
+ export const SettingsLabel = styled.span `
84
+ display: inline-flex;
85
+ align-items: center;
86
+ gap: 5px;
87
+ color: var(--sk-text);
88
+ font-size: 14px;
89
+ font-weight: 500;
90
+ white-space: nowrap;
91
+ `;
92
+ export const InfoWrap = styled.span `
93
+ position: relative;
94
+ display: inline-flex;
95
+ `;
96
+ export const InfoButton = styled.button `
97
+ display: inline-flex;
98
+ width: 18px;
99
+ height: 18px;
100
+ align-items: center;
101
+ justify-content: center;
102
+ padding: 0;
103
+ border: 0;
104
+ border-radius: 50%;
105
+ color: var(--sk-text-muted);
106
+ background: transparent;
107
+ cursor: help;
108
+ `;
109
+ export const SettingsTooltip = styled.span `
110
+ position: absolute;
111
+ z-index: 2;
112
+ top: calc(100% + 10px);
113
+ left: -14px;
114
+ width: 278px;
115
+ padding: 12px;
116
+ border: 1px solid var(--sk-border);
117
+ border-radius: 10px;
118
+ color: var(--sk-text-muted);
119
+ background: var(--sk-surface);
120
+ box-shadow: var(--sk-shadow);
121
+ font-size: 12px;
122
+ font-weight: 400;
123
+ line-height: 1.45;
124
+ white-space: normal;
125
+ `;
126
+ export const SlippageControl = styled.div `
127
+ display: inline-flex;
128
+ height: 36px;
129
+ align-items: center;
130
+ gap: 2px;
131
+ padding: 3px;
132
+ border: 1px solid var(--sk-border);
133
+ border-radius: 999px;
134
+ background: var(--sk-surface-elevated);
135
+ `;
136
+ export const SlippageModeButton = styled.button `
137
+ height: 28px;
138
+ padding: 0 10px;
139
+ border: 0;
140
+ border-radius: 999px;
141
+ color: ${({ $active }) => ($active ? "var(--sk-accent)" : "var(--sk-text-muted)")};
142
+ background: ${({ $active }) => ($active ? "color-mix(in srgb, var(--sk-accent) 14%, transparent)" : "transparent")};
143
+ cursor: pointer;
144
+ font-size: 14px;
145
+ font-weight: 600;
146
+ `;
147
+ export const SlippageInputWrap = styled.label `
148
+ display: inline-flex;
149
+ height: 28px;
150
+ align-items: center;
151
+ padding: 0 9px;
152
+ border-radius: 999px;
153
+ color: ${({ $active }) => ($active ? "var(--sk-text)" : "var(--sk-text-muted)")};
154
+ background: ${({ $active }) => ($active ? "color-mix(in srgb, var(--sk-accent) 10%, transparent)" : "transparent")};
155
+ cursor: text;
156
+ font-size: 14px;
157
+ font-weight: 500;
158
+ `;
159
+ export const SlippageInput = styled.input `
160
+ width: 38px;
161
+ padding: 0;
162
+ border: 0;
163
+ color: inherit;
164
+ background: transparent;
165
+ font-size: inherit;
166
+ font-weight: inherit;
167
+ text-align: right;
168
+ outline: none;
169
+
170
+ &:focus,
171
+ &&:focus-visible {
172
+ outline: none;
173
+ box-shadow: none;
174
+ }
175
+ `;
176
+ export const FieldLabel = styled.label `
177
+ display: block;
178
+ margin-bottom: 8px;
179
+ color: var(--sk-text-muted);
180
+ font-size: 12px;
181
+ font-weight: 600;
182
+ `;
183
+ export const CompactInput = styled.input `
184
+ width: 100%;
185
+ height: 38px;
186
+ padding: 0 10px;
187
+ border: 1px solid var(--sk-border);
188
+ border-radius: 8px;
189
+ color: var(--sk-text);
190
+ background: var(--sk-surface-elevated);
191
+ `;
192
+ export const Hint = styled.p `
193
+ margin: 8px 0 0;
194
+ color: ${({ $tone }) => $tone === "danger" ? "var(--sk-danger)" : $tone === "warning" ? "var(--sk-warning)" : "var(--sk-text-muted)"};
195
+ font-size: 12px;
196
+ line-height: 1.4;
197
+ `;
198
+ export const CardWrap = styled.div `
199
+ position: relative;
200
+ `;
201
+ export const CurrencyCard = styled.section `
202
+ position: relative;
203
+ width: 100%;
204
+ min-height: 128px;
205
+ padding: 14px 14px 8px;
206
+ border: 0;
207
+ border-style: none;
208
+ border-radius: var(--sk-radius);
209
+ color: var(--sk-text);
210
+ background: var(--sk-surface);
211
+
212
+ &:hover [data-quick-amounts],
213
+ &:focus-within [data-quick-amounts] {
214
+ opacity: 1;
215
+ pointer-events: auto;
216
+ transform: translateY(0);
217
+ }
218
+
219
+ @media (hover: none) {
220
+ [data-quick-amounts] {
221
+ opacity: 1;
222
+ pointer-events: auto;
223
+ transform: translateY(0);
224
+ }
225
+ }
226
+ `;
227
+ export const CardTitle = styled.div `
228
+ margin-bottom: 12px;
229
+ color: #6b7280;
230
+ font-size: 12px;
231
+ font-weight: 500;
232
+ line-height: 16px;
233
+ `;
234
+ export const CardHeaderAction = styled.div `
235
+ position: absolute;
236
+ top: 14px;
237
+ right: 14px;
238
+ display: flex;
239
+ align-items: center;
240
+ `;
241
+ export const QuickAmountActions = styled.div `
242
+ position: absolute;
243
+ top: 10px;
244
+ right: 12px;
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 4px;
248
+ opacity: 0;
249
+ pointer-events: none;
250
+ transform: translateY(-2px);
251
+ transition:
252
+ opacity 120ms ease,
253
+ transform 120ms ease;
254
+
255
+ @media (prefers-reduced-motion: reduce) {
256
+ transition: none;
257
+ }
258
+ `;
259
+ export const QuickAmountButton = styled.button `
260
+ min-width: 34px;
261
+ height: 24px;
262
+ padding: 0 7px;
263
+ border: 1px solid var(--sk-border);
264
+ border-radius: 999px;
265
+ color: var(--sk-text);
266
+ background: var(--sk-surface-elevated);
267
+ cursor: pointer;
268
+ font-size: 11px;
269
+ font-weight: 600;
270
+ line-height: 22px;
271
+
272
+ &:hover:not(:disabled) {
273
+ border-color: var(--sk-accent);
274
+ color: var(--sk-accent);
275
+ }
276
+
277
+ &:disabled {
278
+ cursor: not-allowed;
279
+ opacity: 0.5;
280
+ }
281
+ `;
282
+ export const AmountRow = styled.div `
283
+ display: grid;
284
+ grid-template-columns: minmax(0, 1fr) auto;
285
+ align-items: center;
286
+ gap: 12px;
287
+ `;
288
+ export const AmountInput = styled.input `
289
+ min-width: 0;
290
+ width: 100%;
291
+ padding: 0;
292
+ border: 0;
293
+ color: var(--sk-text);
294
+ caret-color: var(--sk-text);
295
+ background: transparent;
296
+ font-size: 24px;
297
+ font-weight: 700;
298
+ line-height: 32px;
299
+ box-shadow: none;
300
+
301
+ && {
302
+ color: var(--sk-text);
303
+ font-family: var(--sk-font-family);
304
+ font-size: 24px;
305
+ font-weight: 700;
306
+ line-height: 32px;
307
+ }
308
+
309
+ &::placeholder {
310
+ color: var(--sk-text);
311
+ opacity: 1;
312
+ }
313
+
314
+ &:focus,
315
+ &&:focus-visible {
316
+ outline: none;
317
+ box-shadow: none;
318
+ }
319
+
320
+ &:disabled {
321
+ opacity: 0.7;
322
+ }
323
+ `;
324
+ const Skeleton = styled.span `
325
+ display: block;
326
+ border-radius: 5px;
327
+ background: var(--sk-surface-elevated);
328
+ animation: sk-skeleton-pulse 1.4s ease-in-out infinite;
329
+
330
+ @keyframes sk-skeleton-pulse {
331
+ 0%,
332
+ 100% {
333
+ opacity: 0.58;
334
+ }
335
+
336
+ 50% {
337
+ opacity: 1;
338
+ }
339
+ }
340
+ `;
341
+ export const AmountSkeleton = styled(Skeleton) `
342
+ width: min(128px, 70%);
343
+ height: 32px;
344
+ `;
345
+ export const QuoteValueSkeleton = styled(Skeleton) `
346
+ width: 64px;
347
+ height: 16px;
348
+ `;
349
+ export const TokenButton = styled.button `
350
+ display: inline-flex;
351
+ max-width: 170px;
352
+ min-width: 124px;
353
+ height: 40px;
354
+ align-items: center;
355
+ gap: 8px;
356
+ padding: 8px;
357
+ border: 1px solid var(--sk-border);
358
+ border-radius: 8px;
359
+ color: var(--sk-text);
360
+ background: transparent;
361
+ cursor: pointer;
362
+ font-size: 14px;
363
+ font-weight: 500;
364
+ line-height: 20px;
365
+
366
+ > svg:last-child {
367
+ flex: 0 0 auto;
368
+ margin-left: auto;
369
+ }
370
+ `;
371
+ export const TokenIconWrap = styled.span `
372
+ position: relative;
373
+ display: inline-flex;
374
+ width: ${({ $size }) => $size}px;
375
+ height: ${({ $size }) => $size}px;
376
+ flex: 0 0 ${({ $size }) => $size}px;
377
+ `;
378
+ export const TokenImage = styled.img `
379
+ width: 100%;
380
+ height: 100%;
381
+ border-radius: 50%;
382
+ object-fit: contain;
383
+ `;
384
+ export const TokenFallback = styled.span `
385
+ display: inline-flex;
386
+ width: 100%;
387
+ height: 100%;
388
+ align-items: center;
389
+ justify-content: center;
390
+ border-radius: 50%;
391
+ color: var(--sk-accent-text);
392
+ background: var(--sk-accent);
393
+ font-size: 10px;
394
+ font-weight: 800;
395
+ `;
396
+ export const ChainBadge = styled.span `
397
+ position: absolute;
398
+ right: 0;
399
+ bottom: 0;
400
+ display: inline-flex;
401
+ width: ${({ $size }) => $size}px;
402
+ height: ${({ $size }) => $size}px;
403
+ flex: 0 0 ${({ $size }) => $size}px;
404
+ align-items: center;
405
+ justify-content: center;
406
+ overflow: hidden;
407
+ border: 0;
408
+ border-radius: 22.5%;
409
+ background: ${({ $fillBackground }) => ($fillBackground ? "#4ca3ff" : "var(--sk-surface-elevated)")};
410
+ box-shadow: 0 0 0 1px #374151;
411
+
412
+ svg,
413
+ img {
414
+ display: block;
415
+ width: 100%;
416
+ height: 100%;
417
+ max-width: none;
418
+ flex: 0 0 100%;
419
+ }
420
+ `;
421
+ export const CardFooter = styled.div `
422
+ display: flex;
423
+ align-items: center;
424
+ justify-content: space-between;
425
+ gap: 12px;
426
+ margin-top: 12px;
427
+ color: #6b7280;
428
+ font-size: 12px;
429
+ font-weight: 400;
430
+ line-height: 16px;
431
+ `;
432
+ export const OutputWalletControl = styled.span `
433
+ position: relative;
434
+ display: inline-flex;
435
+ `;
436
+ export const OutputWalletTrigger = styled.button `
437
+ display: inline-flex;
438
+ min-width: 0;
439
+ align-items: center;
440
+ gap: 4px;
441
+ padding: 0;
442
+ border: 0;
443
+ color: var(--sk-accent);
444
+ background: transparent;
445
+ cursor: pointer;
446
+ font-size: 12px;
447
+ font-weight: 500;
448
+ line-height: 16px;
449
+ white-space: nowrap;
450
+
451
+ > svg {
452
+ flex: 0 0 16px;
453
+ transition: transform 180ms ease;
454
+ }
455
+ `;
456
+ export const OutputWalletMenu = styled.span `
457
+ position: absolute;
458
+ z-index: 20;
459
+ top: calc(100% + 8px);
460
+ right: 0;
461
+ display: grid;
462
+ width: 192px;
463
+ gap: 4px;
464
+ padding: 12px;
465
+ border: 1px solid var(--sk-border);
466
+ border-radius: 10px;
467
+ background: var(--sk-surface);
468
+ box-shadow: var(--sk-shadow);
469
+ `;
470
+ export const OutputWalletOption = styled.button `
471
+ display: flex;
472
+ width: 100%;
473
+ min-height: 36px;
474
+ align-items: center;
475
+ justify-content: space-between;
476
+ gap: 8px;
477
+ padding: 8px;
478
+ border: 1px solid transparent;
479
+ border-radius: 7px;
480
+ color: var(--sk-text);
481
+ background: var(--sk-surface-elevated);
482
+ cursor: pointer;
483
+ font-size: 12px;
484
+ font-weight: 400;
485
+ line-height: 16px;
486
+ text-align: left;
487
+
488
+ &:first-child {
489
+ color: var(--sk-accent);
490
+ }
491
+
492
+ &:hover {
493
+ border-color: var(--sk-accent);
494
+ }
495
+ `;
496
+ export const SwitchButton = styled(IconButton) `
497
+ position: absolute;
498
+ z-index: 5;
499
+ left: 50%;
500
+ bottom: -29px;
501
+ width: 52px;
502
+ height: 52px;
503
+ transform: translateX(-50%);
504
+ border: 6px solid var(--sk-background);
505
+ border-radius: 50%;
506
+ background: var(--sk-surface);
507
+
508
+ &:hover:not(:disabled) {
509
+ border-color: var(--sk-background);
510
+ color: var(--sk-text-muted);
511
+ background: var(--sk-surface);
512
+ }
513
+
514
+ &:hover:not(:disabled) > svg {
515
+ transform: rotate(180deg);
516
+ }
517
+ `;
518
+ export const BreakdownCard = styled.section `
519
+ overflow: hidden;
520
+ border: 1px solid var(--sk-border);
521
+ border-radius: var(--sk-radius);
522
+ background: var(--sk-surface);
523
+ `;
524
+ export const BreakdownToggle = styled.button `
525
+ display: flex;
526
+ width: 100%;
527
+ align-items: center;
528
+ justify-content: space-between;
529
+ gap: 16px;
530
+ padding: 13px 14px;
531
+ border: 0;
532
+ color: var(--sk-text);
533
+ background: transparent;
534
+ cursor: pointer;
535
+ font-size: 12px;
536
+ font-weight: 600;
537
+ `;
538
+ export const BreakdownMeta = styled.span `
539
+ display: inline-flex;
540
+ align-items: center;
541
+ gap: 12px;
542
+ margin-left: auto;
543
+ color: var(--sk-text-muted);
544
+ font-weight: 400;
545
+ `;
546
+ export const NetworkCost = styled.span `
547
+ display: inline-flex;
548
+ align-items: center;
549
+ gap: 4px;
550
+ white-space: nowrap;
551
+ `;
552
+ export const BreakdownBody = styled.div `
553
+ display: grid;
554
+ gap: 10px;
555
+ padding: 0 14px 14px;
556
+ border-top: 1px solid var(--sk-border);
557
+ `;
558
+ export const DetailRow = styled.div `
559
+ display: flex;
560
+ align-items: center;
561
+ justify-content: space-between;
562
+ gap: 18px;
563
+ padding-top: 10px;
564
+ color: var(--sk-text-muted);
565
+ font-size: 12px;
566
+
567
+ strong {
568
+ color: var(--sk-text);
569
+ font-weight: 600;
570
+ }
571
+ `;
572
+ export const FreeFeeBadge = styled.span `
573
+ display: inline-flex;
574
+ align-items: center;
575
+ padding: 3px 8px;
576
+ border: 1px solid color-mix(in srgb, var(--sk-success) 35%, transparent);
577
+ border-radius: 999px;
578
+ color: var(--sk-success);
579
+ background: color-mix(in srgb, var(--sk-success) 12%, transparent);
580
+ font-size: 11px;
581
+ font-weight: 700;
582
+ letter-spacing: 0.01em;
583
+ line-height: 1;
584
+ `;
585
+ export const ErrorBox = styled.div `
586
+ padding: 11px 13px;
587
+ border: 1px solid color-mix(in srgb, var(--sk-danger) 45%, transparent);
588
+ border-radius: 9px;
589
+ color: var(--sk-danger);
590
+ background: color-mix(in srgb, var(--sk-danger) 10%, transparent);
591
+ font-size: 12px;
592
+ `;
593
+ export const PrimaryButton = styled.button `
594
+ display: inline-flex;
595
+ width: 100%;
596
+ min-height: 36px;
597
+ align-items: center;
598
+ justify-content: center;
599
+ gap: 8px;
600
+ padding: 0 18px;
601
+ border: 0;
602
+ border-radius: 8px;
603
+ color: var(--sk-accent-text);
604
+ background: var(--sk-accent);
605
+ cursor: pointer;
606
+ font-size: 14px;
607
+ font-weight: 500;
608
+ transition:
609
+ background 140ms ease,
610
+ opacity 140ms ease;
611
+
612
+ &:hover:not(:disabled) {
613
+ background: var(--sk-accent-hover);
614
+ }
615
+
616
+ &:disabled {
617
+ cursor: not-allowed;
618
+ opacity: 0.52;
619
+ }
620
+ `;
621
+ export const WalletRequirementButton = styled(PrimaryButton) `
622
+ font-weight: 600;
623
+ `;
624
+ export const Overlay = styled.div `
625
+ position: fixed;
626
+ z-index: 2147483000;
627
+ inset: 0;
628
+ display: flex;
629
+ align-items: center;
630
+ justify-content: center;
631
+ padding: 16px;
632
+ background: var(--sk-overlay);
633
+ backdrop-filter: blur(5px);
634
+ `;
635
+ export const Dialog = styled.div `
636
+ width: min(100%, ${({ $maxWidth }) => $maxWidth ?? 440}px);
637
+ max-height: min(720px, calc(100vh - 32px));
638
+ overflow: auto;
639
+ padding: 20px;
640
+ border: 1px solid var(--sk-border);
641
+ border-radius: 16px;
642
+ color: var(--sk-text);
643
+ background: var(--sk-surface);
644
+ box-shadow: var(--sk-shadow);
645
+ scrollbar-color: #cdcdcd transparent;
646
+ -ms-overflow-style: thin;
647
+ scrollbar-width: thin;
648
+ `;
649
+ export const DialogHeader = styled.div `
650
+ display: flex;
651
+ align-items: center;
652
+ justify-content: space-between;
653
+ gap: 12px;
654
+ margin-bottom: 16px;
655
+
656
+ h2 {
657
+ margin: 0;
658
+ font-size: 18px;
659
+ }
660
+ `;
661
+ export const DialogCloseButton = styled.button `
662
+ display: inline-flex;
663
+ width: 32px;
664
+ height: 32px;
665
+ flex: 0 0 32px;
666
+ align-items: center;
667
+ justify-content: center;
668
+ padding: 0;
669
+ border: 0;
670
+ border-radius: 7px;
671
+ color: var(--sk-text);
672
+ background: transparent;
673
+ cursor: pointer;
674
+
675
+ &:hover {
676
+ background: var(--sk-surface-elevated);
677
+ }
678
+ `;
679
+ export const SearchInput = styled(CompactInput) `
680
+ height: 36px;
681
+ min-width: 0;
682
+ padding: 0;
683
+ border: 0;
684
+ color: var(--sk-text);
685
+ background: transparent;
686
+ font-size: 14px;
687
+ font-weight: 500;
688
+ line-height: 20px;
689
+ outline: none;
690
+
691
+ &::placeholder {
692
+ color: var(--sk-text-muted);
693
+ opacity: 1;
694
+ }
695
+
696
+ &:focus,
697
+ &:focus-visible {
698
+ outline: none;
699
+ box-shadow: none;
700
+ }
701
+ `;
702
+ export const SearchField = styled.div `
703
+ display: flex;
704
+ width: 100%;
705
+ height: 36px;
706
+ min-width: 0;
707
+ align-items: center;
708
+ gap: 8px;
709
+ padding: 0 12px;
710
+ border: 1px solid var(--sk-border);
711
+ border-radius: 8px;
712
+ background: var(--sk-background);
713
+
714
+ > svg {
715
+ flex: 0 0 16px;
716
+ color: var(--sk-text-muted);
717
+ opacity: 0.5;
718
+ pointer-events: none;
719
+ }
720
+ `;
721
+ export const PickerBody = styled.div `
722
+ position: relative;
723
+ min-width: 0;
724
+ `;
725
+ export const PickerControls = styled.div `
726
+ position: relative;
727
+ display: grid;
728
+ grid-template-columns: minmax(0, 1fr) auto;
729
+ gap: 8px;
730
+ margin-bottom: 12px;
731
+ `;
732
+ export const NetworkButton = styled(IconButton) `
733
+ max-width: 150px;
734
+ height: 38px;
735
+ white-space: nowrap;
736
+ `;
737
+ export const NetworkMenu = styled.div `
738
+ position: absolute;
739
+ z-index: 4;
740
+ top: 44px;
741
+ right: 0;
742
+ display: grid;
743
+ width: min(202px, 100%);
744
+ max-height: min(360px, calc(100vh - 160px));
745
+ align-content: start;
746
+ padding: 4px;
747
+ overflow-y: auto;
748
+ border: 1px solid var(--sk-border);
749
+ border-radius: 6px;
750
+ background: var(--sk-background);
751
+ box-shadow: var(--sk-shadow);
752
+ scrollbar-color: #cdcdcd transparent;
753
+ -ms-overflow-style: thin;
754
+ scrollbar-width: thin;
755
+
756
+ &::-webkit-scrollbar {
757
+ width: 6px;
758
+ }
759
+
760
+ &::-webkit-scrollbar-track {
761
+ background: transparent;
762
+ }
763
+
764
+ &::-webkit-scrollbar-thumb {
765
+ border-radius: 999px;
766
+ background: #cdcdcd;
767
+ }
768
+ `;
769
+ export const NetworkOption = styled.button `
770
+ display: flex;
771
+ width: 100%;
772
+ align-items: center;
773
+ gap: 8px;
774
+ min-height: 32px;
775
+ padding: 6px 8px;
776
+ border: 0;
777
+ border-radius: 4px;
778
+ color: var(--sk-text-muted);
779
+ background: transparent;
780
+ cursor: pointer;
781
+ font-size: 14px;
782
+ font-weight: 400;
783
+ line-height: 20px;
784
+ text-align: left;
785
+
786
+ &:hover {
787
+ color: var(--sk-text);
788
+ background: var(--sk-surface);
789
+ }
790
+
791
+ &[aria-selected="true"] {
792
+ color: var(--sk-text);
793
+ background: var(--sk-surface);
794
+ }
795
+ `;
796
+ export const NetworkLogo = styled.span `
797
+ display: inline-flex;
798
+ width: 16px;
799
+ height: 16px;
800
+ align-items: center;
801
+ justify-content: center;
802
+ overflow: hidden;
803
+ border-radius: 50%;
804
+
805
+ svg,
806
+ img {
807
+ width: 100%;
808
+ height: 100%;
809
+ }
810
+ `;
811
+ export const AllNetworksLogo = styled.span `
812
+ position: relative;
813
+ display: inline-flex;
814
+ width: 32px;
815
+ height: 18px;
816
+ flex: 0 0 32px;
817
+
818
+ > span {
819
+ position: absolute;
820
+ top: 1px;
821
+ display: inline-flex;
822
+ width: 16px;
823
+ height: 16px;
824
+ overflow: hidden;
825
+ border: 1px solid var(--sk-surface-elevated);
826
+ border-radius: 50%;
827
+ background: var(--sk-surface-elevated);
828
+
829
+ &:nth-child(1) {
830
+ left: 0;
831
+ }
832
+
833
+ &:nth-child(2) {
834
+ left: 8px;
835
+ }
836
+
837
+ &:nth-child(3) {
838
+ left: 16px;
839
+ }
840
+
841
+ svg,
842
+ img {
843
+ width: 100%;
844
+ height: 100%;
845
+ }
846
+ }
847
+ `;
848
+ export const TokenList = styled.div `
849
+ display: grid;
850
+ max-height: min(390px, 55vh);
851
+ gap: 7px;
852
+ overflow-y: auto;
853
+ padding-right: 3px;
854
+ scrollbar-color: #cdcdcd transparent;
855
+ -ms-overflow-style: thin;
856
+ scrollbar-width: thin;
857
+
858
+ &::-webkit-scrollbar {
859
+ width: 6px;
860
+ }
861
+
862
+ &::-webkit-scrollbar-track {
863
+ background: transparent;
864
+ }
865
+
866
+ &::-webkit-scrollbar-thumb {
867
+ border-radius: 999px;
868
+ background: #cdcdcd;
869
+ }
870
+ `;
871
+ export const TokenOption = styled.button `
872
+ display: grid;
873
+ grid-template-columns: auto minmax(0, 1fr) auto;
874
+ align-items: center;
875
+ gap: 10px;
876
+ width: 100%;
877
+ min-height: 64px;
878
+ padding: 9px 11px;
879
+ border: 1px solid var(--sk-border);
880
+ border-radius: 12px;
881
+ color: var(--sk-text);
882
+ background: transparent;
883
+ cursor: pointer;
884
+ text-align: left;
885
+
886
+ &:hover {
887
+ background: var(--sk-surface-elevated);
888
+ }
889
+ `;
890
+ export const TokenMeta = styled.span `
891
+ min-width: 0;
892
+
893
+ strong,
894
+ small {
895
+ display: block;
896
+ overflow: hidden;
897
+ text-overflow: ellipsis;
898
+ white-space: nowrap;
899
+ }
900
+
901
+ small {
902
+ margin-top: 2px;
903
+ color: var(--sk-text-muted);
904
+ font-size: 11px;
905
+ }
906
+
907
+ strong {
908
+ font-size: 14px;
909
+ }
910
+ `;
911
+ export const TokenBalance = styled.span `
912
+ text-align: right;
913
+
914
+ strong,
915
+ small {
916
+ display: block;
917
+ white-space: nowrap;
918
+ }
919
+
920
+ strong {
921
+ color: var(--sk-text);
922
+ font-size: 14px;
923
+ }
924
+
925
+ small {
926
+ margin-top: 3px;
927
+ color: var(--sk-text-muted);
928
+ font-size: 11px;
929
+ }
930
+ `;
931
+ export const EmptyState = styled.div `
932
+ padding: 24px 8px;
933
+ color: var(--sk-text-muted);
934
+ font-size: 13px;
935
+ text-align: center;
936
+ `;
937
+ export const WalletList = styled.div `
938
+ display: grid;
939
+ gap: 6px;
940
+ `;
941
+ export const WalletOption = styled.button `
942
+ display: grid;
943
+ grid-template-columns: auto minmax(0, 1fr);
944
+ align-items: center;
945
+ gap: 12px;
946
+ width: 100%;
947
+ min-height: 56px;
948
+ padding: 10px 12px;
949
+ border: 1px solid var(--sk-border);
950
+ border-radius: 12px;
951
+ color: var(--sk-text);
952
+ background: transparent;
953
+ cursor: pointer;
954
+ text-align: left;
955
+
956
+ &:hover {
957
+ background: var(--sk-surface);
958
+ }
959
+
960
+ &:disabled {
961
+ cursor: wait;
962
+ opacity: 0.6;
963
+ }
964
+ `;
965
+ export const WalletIconFrame = styled.span `
966
+ display: inline-flex;
967
+ width: ${({ $size = 32 }) => $size}px;
968
+ height: ${({ $size = 32 }) => $size}px;
969
+ flex: 0 0 ${({ $size = 32 }) => $size}px;
970
+ align-items: center;
971
+ justify-content: center;
972
+ overflow: hidden;
973
+ border-radius: 50%;
974
+ `;
975
+ export const WalletImage = styled.img `
976
+ width: 100%;
977
+ height: 100%;
978
+ object-fit: contain;
979
+ `;
980
+ export const WalletFallback = styled.span `
981
+ display: inline-flex;
982
+ width: 100%;
983
+ height: 100%;
984
+ align-items: center;
985
+ justify-content: center;
986
+ border-radius: 50%;
987
+ color: var(--sk-accent-text);
988
+ background: var(--sk-accent);
989
+ font-size: 10px;
990
+ font-weight: 700;
991
+ `;
992
+ export const WalletOptionMeta = styled.span `
993
+ min-width: 0;
994
+
995
+ > span:first-child {
996
+ display: flex;
997
+ align-items: center;
998
+ gap: 8px;
999
+ }
1000
+
1001
+ strong {
1002
+ overflow: hidden;
1003
+ font-size: 14px;
1004
+ font-weight: 600;
1005
+ text-overflow: ellipsis;
1006
+ white-space: nowrap;
1007
+ }
1008
+
1009
+ small {
1010
+ display: block;
1011
+ margin-top: 3px;
1012
+ overflow: hidden;
1013
+ color: var(--sk-text-muted);
1014
+ font-size: 12px;
1015
+ text-overflow: ellipsis;
1016
+ white-space: nowrap;
1017
+ }
1018
+ `;
1019
+ export const MultichainBadge = styled.span `
1020
+ padding: 2px 6px;
1021
+ border: 1px solid color-mix(in srgb, var(--sk-accent) 45%, transparent);
1022
+ border-radius: 999px;
1023
+ color: var(--sk-accent);
1024
+ background: color-mix(in srgb, var(--sk-accent) 10%, transparent);
1025
+ font-size: 10px;
1026
+ font-weight: 600;
1027
+ line-height: 14px;
1028
+ `;
1029
+ export const ConnectedWalletPanel = styled(FloatingPanel) `
1030
+ right: auto;
1031
+ left: 0;
1032
+ width: 288px;
1033
+ padding: 0;
1034
+ overflow: hidden;
1035
+ `;
1036
+ export const WalletPanelHeader = styled.div `
1037
+ padding: 12px 14px;
1038
+ border-bottom: 1px solid var(--sk-border);
1039
+ font-size: 14px;
1040
+ font-weight: 600;
1041
+ `;
1042
+ export const ConnectedWalletRow = styled.div `
1043
+ display: flex;
1044
+ align-items: center;
1045
+ justify-content: space-between;
1046
+ gap: 12px;
1047
+ padding: 10px 12px;
1048
+ `;
1049
+ export const WalletIdentity = styled.div `
1050
+ display: flex;
1051
+ min-width: 0;
1052
+ align-items: center;
1053
+ gap: 10px;
1054
+ `;
1055
+ export const WalletDetails = styled.div `
1056
+ min-width: 0;
1057
+
1058
+ strong,
1059
+ small {
1060
+ display: block;
1061
+ overflow: hidden;
1062
+ text-overflow: ellipsis;
1063
+ white-space: nowrap;
1064
+ }
1065
+
1066
+ strong {
1067
+ font-size: 14px;
1068
+ font-weight: 500;
1069
+ }
1070
+
1071
+ small {
1072
+ margin-top: 2px;
1073
+ color: var(--sk-text-muted);
1074
+ font-size: 12px;
1075
+ }
1076
+ `;
1077
+ export const WalletActions = styled.div `
1078
+ display: flex;
1079
+ flex: 0 0 auto;
1080
+ align-items: center;
1081
+ gap: 4px;
1082
+ `;
1083
+ export const WalletSwitchButton = styled.button `
1084
+ height: 28px;
1085
+ padding: 0 8px;
1086
+ border: 0;
1087
+ border-radius: 6px;
1088
+ color: var(--sk-text-muted);
1089
+ background: transparent;
1090
+ cursor: pointer;
1091
+ font-size: 12px;
1092
+ font-weight: 500;
1093
+
1094
+ &:hover {
1095
+ color: var(--sk-accent);
1096
+ background: color-mix(in srgb, var(--sk-accent) 12%, transparent);
1097
+ }
1098
+ `;
1099
+ export const WalletDisconnectButton = styled.button `
1100
+ display: inline-flex;
1101
+ width: 28px;
1102
+ height: 28px;
1103
+ flex: 0 0 28px;
1104
+ align-items: center;
1105
+ justify-content: center;
1106
+ padding: 0;
1107
+ border: 0;
1108
+ border-radius: 50%;
1109
+ color: var(--sk-text-muted);
1110
+ background: transparent;
1111
+ cursor: pointer;
1112
+
1113
+ &:hover {
1114
+ color: var(--sk-danger);
1115
+ background: color-mix(in srgb, var(--sk-danger) 12%, transparent);
1116
+ }
1117
+ `;
1118
+ export const DisconnectAllButton = styled.button `
1119
+ display: flex;
1120
+ width: calc(100% - 12px);
1121
+ align-items: center;
1122
+ gap: 8px;
1123
+ margin: 6px;
1124
+ padding: 9px 10px;
1125
+ border: 0;
1126
+ border-radius: 7px;
1127
+ color: var(--sk-accent);
1128
+ background: color-mix(in srgb, var(--sk-accent) 12%, transparent);
1129
+ cursor: pointer;
1130
+ font-size: 14px;
1131
+ font-weight: 500;
1132
+
1133
+ &:hover {
1134
+ background: color-mix(in srgb, var(--sk-accent) 18%, transparent);
1135
+ }
1136
+ `;
1137
+ export const TriggerWalletIcons = styled.span `
1138
+ display: flex;
1139
+ align-items: center;
1140
+
1141
+ > span + span {
1142
+ margin-left: -5px;
1143
+ border: 1px solid var(--sk-surface);
1144
+ }
1145
+ `;
1146
+ export const ExecutionContent = styled.div `
1147
+ display: grid;
1148
+ gap: 16px;
1149
+ `;
1150
+ export const TokenRoute = styled.div `
1151
+ display: flex;
1152
+ align-items: center;
1153
+ justify-content: space-between;
1154
+ gap: 16px;
1155
+ `;
1156
+ export const TokenAmount = styled.div `
1157
+ display: flex;
1158
+ min-width: 0;
1159
+ flex: 1;
1160
+ flex-direction: column;
1161
+ align-items: ${({ $align }) => ($align === "end" ? "flex-end" : "flex-start")};
1162
+ gap: 8px;
1163
+
1164
+ strong {
1165
+ max-width: 100%;
1166
+ overflow: hidden;
1167
+ color: var(--sk-text);
1168
+ font-size: 14px;
1169
+ font-weight: 600;
1170
+ text-overflow: ellipsis;
1171
+ white-space: nowrap;
1172
+ }
1173
+ `;
1174
+ export const RouteArrow = styled.span `
1175
+ display: inline-flex;
1176
+ flex: 0 0 auto;
1177
+ color: var(--sk-text-muted);
1178
+ `;
1179
+ export const ProgressList = styled.ol `
1180
+ margin: 0;
1181
+ padding: 16px;
1182
+ border: 1px solid var(--sk-border);
1183
+ border-radius: var(--sk-radius);
1184
+ list-style: none;
1185
+ `;
1186
+ export const ProgressItem = styled.li `
1187
+ display: grid;
1188
+ grid-template-columns: 24px minmax(0, 1fr);
1189
+ column-gap: 12px;
1190
+ `;
1191
+ export const ProgressMarkerColumn = styled.span `
1192
+ display: flex;
1193
+ align-items: center;
1194
+ flex-direction: column;
1195
+ `;
1196
+ export const ProgressMarker = styled.span `
1197
+ display: inline-flex;
1198
+ width: 24px;
1199
+ height: 24px;
1200
+ flex: 0 0 24px;
1201
+ align-items: center;
1202
+ justify-content: center;
1203
+ border: 1px solid
1203
1204
  ${({ $tone }) => $tone === "active"
1204
1205
  ? "var(--sk-accent)"
1205
1206
  : $tone === "complete"
@@ -1208,52 +1209,52 @@ export const ProgressMarker = styled.span `
1208
1209
  ? "var(--sk-danger)"
1209
1210
  : $tone === "warning"
1210
1211
  ? "var(--sk-warning)"
1211
- : "var(--sk-border)"};
1212
- border-radius: 50%;
1212
+ : "var(--sk-border)"};
1213
+ border-radius: 50%;
1213
1214
  color: ${({ $tone }) => $tone === "muted"
1214
1215
  ? "var(--sk-text-muted)"
1215
1216
  : $tone === "danger"
1216
1217
  ? "var(--sk-danger)"
1217
1218
  : $tone === "warning"
1218
1219
  ? "var(--sk-warning)"
1219
- : "var(--sk-accent-text)"};
1220
+ : "var(--sk-accent-text)"};
1220
1221
  background: ${({ $tone }) => $tone === "active"
1221
1222
  ? "var(--sk-accent)"
1222
1223
  : $tone === "complete"
1223
1224
  ? "var(--sk-success)"
1224
- : "var(--sk-surface-elevated)"};
1225
- `;
1226
- export const ProgressConnector = styled.span `
1227
- width: 1px;
1228
- min-height: 20px;
1229
- flex: 1;
1230
- margin: 8px 0;
1231
- background: var(--sk-border);
1232
- `;
1233
- export const ProgressText = styled.span `
1234
- min-width: 0;
1235
- padding-bottom: ${({ $connected }) => ($connected ? "20px" : 0)};
1236
-
1237
- strong,
1238
- small {
1239
- display: block;
1240
- }
1241
-
1242
- strong {
1243
- color: var(--sk-text);
1244
- font-size: 14px;
1245
- font-weight: 500;
1246
- line-height: 20px;
1247
- }
1248
-
1249
- small {
1250
- margin-top: 2px;
1251
- color: var(--sk-text-muted);
1252
- font-size: 12px;
1253
- line-height: 16px;
1254
- }
1255
- `;
1256
- export const ProgressLabel = styled.small `
1225
+ : "var(--sk-surface-elevated)"};
1226
+ `;
1227
+ export const ProgressConnector = styled.span `
1228
+ width: 1px;
1229
+ min-height: 20px;
1230
+ flex: 1;
1231
+ margin: 8px 0;
1232
+ background: var(--sk-border);
1233
+ `;
1234
+ export const ProgressText = styled.span `
1235
+ min-width: 0;
1236
+ padding-bottom: ${({ $connected }) => ($connected ? "20px" : 0)};
1237
+
1238
+ strong,
1239
+ small {
1240
+ display: block;
1241
+ }
1242
+
1243
+ strong {
1244
+ color: var(--sk-text);
1245
+ font-size: 14px;
1246
+ font-weight: 500;
1247
+ line-height: 20px;
1248
+ }
1249
+
1250
+ small {
1251
+ margin-top: 2px;
1252
+ color: var(--sk-text-muted);
1253
+ font-size: 12px;
1254
+ line-height: 16px;
1255
+ }
1256
+ `;
1257
+ export const ProgressLabel = styled.small `
1257
1258
  color: ${({ $tone }) => $tone === "active"
1258
1259
  ? "var(--sk-accent)"
1259
1260
  : $tone === "complete"
@@ -1262,48 +1263,48 @@ export const ProgressLabel = styled.small `
1262
1263
  ? "var(--sk-danger)"
1263
1264
  : $tone === "warning"
1264
1265
  ? "var(--sk-warning)"
1265
- : "var(--sk-text-muted)"} !important;
1266
- `;
1267
- export const ExplorerLink = styled.a `
1268
- color: var(--sk-accent);
1269
- font-size: 12px;
1270
- text-decoration: underline;
1271
- text-underline-offset: 2px;
1272
- `;
1273
- export const ExecutionState = styled.div `
1274
- display: flex;
1275
- min-height: 112px;
1276
- align-items: center;
1277
- justify-content: center;
1278
- flex-direction: column;
1279
- gap: 10px;
1280
- color: ${({ $tone }) => ($tone === "danger" ? "var(--sk-danger)" : "var(--sk-text-muted)")};
1281
- text-align: center;
1282
-
1283
- p {
1284
- margin: 0;
1285
- font-size: 14px;
1286
- }
1287
- `;
1288
- export const Spinner = styled.span `
1289
- width: 16px;
1290
- height: 16px;
1291
- border: 2px solid currentColor;
1292
- border-right-color: transparent;
1293
- border-radius: 50%;
1294
- animation: sk-spin 700ms linear infinite;
1295
-
1296
- @keyframes sk-spin {
1297
- to {
1298
- transform: rotate(360deg);
1299
- }
1300
- }
1301
- `;
1302
- export const SrOnly = styled.span `
1303
- position: absolute;
1304
- width: 1px;
1305
- height: 1px;
1306
- overflow: hidden;
1307
- clip: rect(0, 0, 0, 0);
1308
- white-space: nowrap;
1266
+ : "var(--sk-text-muted)"} !important;
1267
+ `;
1268
+ export const ExplorerLink = styled.a `
1269
+ color: var(--sk-accent);
1270
+ font-size: 12px;
1271
+ text-decoration: underline;
1272
+ text-underline-offset: 2px;
1273
+ `;
1274
+ export const ExecutionState = styled.div `
1275
+ display: flex;
1276
+ min-height: 112px;
1277
+ align-items: center;
1278
+ justify-content: center;
1279
+ flex-direction: column;
1280
+ gap: 10px;
1281
+ color: ${({ $tone }) => ($tone === "danger" ? "var(--sk-danger)" : "var(--sk-text-muted)")};
1282
+ text-align: center;
1283
+
1284
+ p {
1285
+ margin: 0;
1286
+ font-size: 14px;
1287
+ }
1288
+ `;
1289
+ export const Spinner = styled.span `
1290
+ width: 16px;
1291
+ height: 16px;
1292
+ border: 2px solid currentColor;
1293
+ border-right-color: transparent;
1294
+ border-radius: 50%;
1295
+ animation: sk-spin 700ms linear infinite;
1296
+
1297
+ @keyframes sk-spin {
1298
+ to {
1299
+ transform: rotate(360deg);
1300
+ }
1301
+ }
1302
+ `;
1303
+ export const SrOnly = styled.span `
1304
+ position: absolute;
1305
+ width: 1px;
1306
+ height: 1px;
1307
+ overflow: hidden;
1308
+ clip: rect(0, 0, 0, 0);
1309
+ white-space: nowrap;
1309
1310
  `;