@tanstack/devtools 0.6.19 → 0.6.21

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.
@@ -20,8 +20,8 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
20
20
  padding: 0;
21
21
  margin: 0 auto;
22
22
  background: ${t(colors.white, colors.darkGray[700])};
23
- border-radius: 12px;
24
- box-shadow: 0 2px 16px ${t('rgba(0, 0, 0, 0.04)', 'rgba(0, 0, 0, 0.08)')};
23
+ border-radius: 8px;
24
+ box-shadow: none;
25
25
  overflow-y: auto;
26
26
  height: 100%;
27
27
  display: flex;
@@ -33,16 +33,16 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
33
33
  seoTabTitle: css`
34
34
  font-size: 1.25rem;
35
35
  font-weight: 600;
36
- color: ${t(colors.purple[500], colors.purple[400])};
36
+ color: ${t(colors.gray[900], colors.gray[100])};
37
37
  margin: 0;
38
38
  padding: 1rem 1.5rem 0.5rem 1.5rem;
39
39
  text-align: left;
40
- border-bottom: 1px solid ${t(colors.gray[300], colors.gray[700])};
40
+ border-bottom: 1px solid ${t(colors.gray[200], colors.gray[800])};
41
41
  `,
42
42
  seoTabSection: css`
43
43
  padding: 1.5rem;
44
- background: ${t(colors.gray[100], colors.gray[800])};
45
- border: 1px solid ${t(colors.gray[300], colors.gray[700])};
44
+ background: ${t(colors.gray[50], colors.darkGray[800])};
45
+ border: 1px solid ${t(colors.gray[200], colors.gray[800])};
46
46
  display: flex;
47
47
  flex-direction: column;
48
48
  gap: 0.5rem;
@@ -61,12 +61,12 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
61
61
  padding-bottom: 0.5rem;
62
62
  `,
63
63
  seoPreviewCard: css`
64
- border: 1px solid ${t(colors.gray[300], colors.gray[700])};
64
+ border: 1px solid ${t(colors.gray[200], colors.gray[800])};
65
65
  border-radius: 8px;
66
66
  padding: 12px 10px;
67
67
  background: ${t(colors.white, colors.darkGray[900])};
68
68
  margin-bottom: 0;
69
- box-shadow: 0 1px 4px ${t('rgba(0,0,0,0.02)', 'rgba(0,0,0,0.04)')};
69
+ box-shadow: 0 1px 3px ${t('rgba(0,0,0,0.05)', 'rgba(0,0,0,0.1)')};
70
70
  display: flex;
71
71
  flex-direction: column;
72
72
  align-items: flex-start;
@@ -76,10 +76,10 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
76
76
  gap: 4px;
77
77
  `,
78
78
  seoPreviewHeader: css`
79
- font-size: 1rem;
80
- font-weight: 500;
81
- margin-bottom: 6px;
82
- color: ${t(colors.purple[500], colors.purple[400])};
79
+ font-size: 0.875rem;
80
+ font-weight: 600;
81
+ margin-bottom: 0;
82
+ color: ${t(colors.gray[700], colors.gray[300])};
83
83
  `,
84
84
  seoPreviewImage: css`
85
85
  max-width: 100%;
@@ -87,28 +87,29 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
87
87
  margin-bottom: 6px;
88
88
  box-shadow: 0 1px 2px ${t('rgba(0,0,0,0.03)', 'rgba(0,0,0,0.06)')};
89
89
  height: 160px;
90
+ object-fit: cover;
90
91
  `,
91
92
  seoPreviewTitle: css`
92
- font-size: 1rem;
93
+ font-size: 0.9rem;
93
94
  font-weight: 600;
94
- margin-bottom: 2px;
95
+ margin-bottom: 4px;
95
96
  color: ${t(colors.gray[900], colors.gray[100])};
96
97
  `,
97
98
  seoPreviewDesc: css`
98
- color: ${t(colors.gray[700], colors.gray[300])};
99
- margin-bottom: 2px;
100
- font-size: 0.95rem;
99
+ color: ${t(colors.gray[600], colors.gray[400])};
100
+ margin-bottom: 4px;
101
+ font-size: 0.8rem;
101
102
  `,
102
103
  seoPreviewUrl: css`
103
104
  color: ${t(colors.gray[500], colors.gray[500])};
104
- font-size: 0.9rem;
105
- margin-bottom: 2px;
105
+ font-size: 0.75rem;
106
+ margin-bottom: 0;
106
107
  word-break: break-all;
107
108
  `,
108
109
  seoMissingTagsSection: css`
109
110
  margin-top: 4px;
110
- font-size: 0.95rem;
111
- color: ${t(colors.red[400], colors.red[400])};
111
+ font-size: 0.875rem;
112
+ color: ${t(colors.red[500], colors.red[400])};
112
113
  `,
113
114
  seoMissingTagsList: css`
114
115
  margin: 4px 0 0 0;
@@ -116,22 +117,23 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
116
117
  list-style: none;
117
118
  display: flex;
118
119
  flex-wrap: wrap;
119
- gap: 6px;
120
+ gap: 4px;
120
121
  max-width: 240px;
121
122
  `,
122
123
  seoMissingTag: css`
123
124
  background: ${t(colors.red[100], colors.red[500] + '22')};
124
125
  color: ${t(colors.red[700], colors.red[500])};
125
- border-radius: 4px;
126
- padding: 1px 6px;
127
- font-size: 0.9rem;
126
+ border-radius: 3px;
127
+ padding: 2px 6px;
128
+ font-size: 0.75rem;
128
129
  font-weight: 500;
129
130
  `,
130
131
  seoAllTagsFound: css`
131
132
  color: ${t(colors.green[700], colors.green[500])};
132
133
  font-weight: 500;
133
- margin-left: 6px;
134
- font-size: 0.95rem;
134
+ margin-left: 0;
135
+ padding: 0 10px 8px 10px;
136
+ font-size: 0.875rem;
135
137
  `,
136
138
  devtoolsPanelContainer: (
137
139
  panelLocation: TanStackDevtoolsConfig['panelLocation'],
@@ -146,7 +148,7 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
146
148
  z-index: 99999;
147
149
  width: 100%;
148
150
  ${isDetached ? '' : 'max-height: 90%;'}
149
- border-top: 1px solid ${t(colors.gray[300], colors.gray[700])};
151
+ border-top: 1px solid ${t(colors.gray[200], colors.gray[800])};
150
152
  transform-origin: top;
151
153
  `,
152
154
  devtoolsPanelContainerVisibility: (isOpen: boolean) => {
@@ -204,7 +206,7 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
204
206
  user-select: none;
205
207
  z-index: 100000;
206
208
  &:hover {
207
- background-color: ${t(colors.purple[700], colors.purple[400])};
209
+ background-color: ${t(colors.gray[400], colors.gray[500])};
208
210
  }
209
211
  `,
210
212
 
@@ -294,9 +296,9 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
294
296
  align-items: center;
295
297
  justify-content: flex-start;
296
298
  height: 100%;
297
- background-color: ${t(colors.gray[100], colors.darkGray[800])};
298
- border-right: 1px solid ${t(colors.gray[300], colors.gray[700])};
299
- box-shadow: 0 1px 0 ${t(colors.gray[200], colors.gray[700])};
299
+ background-color: ${t(colors.gray[50], colors.darkGray[900])};
300
+ border-right: 1px solid ${t(colors.gray[200], colors.gray[800])};
301
+ box-shadow: none;
300
302
  position: relative;
301
303
  width: ${size[10]};
302
304
  `,
@@ -310,24 +312,24 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
310
312
  cursor: pointer;
311
313
  font-size: ${fontSize.sm};
312
314
  font-family: ${fontFamily.sans};
313
- color: ${t(colors.gray[700], colors.gray[300])};
315
+ color: ${t(colors.gray[600], colors.gray[400])};
314
316
  background-color: transparent;
315
317
  border: none;
316
- transition: all 0.2s ease-in-out;
318
+ transition: all 0.15s ease;
317
319
  border-left: 2px solid transparent;
318
320
  &:hover:not(.close):not(.active):not(.detach) {
319
- background-color: ${t(colors.gray[200], colors.gray[700])};
321
+ background-color: ${t(colors.gray[100], colors.gray[800])};
320
322
  color: ${t(colors.gray[900], colors.gray[100])};
321
- border-left: 2px solid ${t(colors.purple[700], colors.purple[500])};
323
+ border-left: 2px solid ${t(colors.gray[900], colors.gray[100])};
322
324
  }
323
325
  &.active {
324
- background-color: ${t(colors.purple[200], colors.purple[500])};
326
+ background-color: ${t(colors.gray[100], colors.gray[800])};
325
327
  color: ${t(colors.gray[900], colors.gray[100])};
326
- border-left: 2px solid ${t(colors.purple[700], colors.purple[500])};
328
+ border-left: 2px solid ${t(colors.gray[900], colors.gray[100])};
327
329
  }
328
330
  &.detach {
329
331
  &:hover {
330
- background-color: ${t(colors.gray[200], colors.gray[700])};
332
+ background-color: ${t(colors.gray[100], colors.gray[800])};
331
333
  }
332
334
  &:hover {
333
335
  color: ${t(colors.green[700], colors.green[500])};
@@ -336,7 +338,7 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
336
338
  &.close {
337
339
  margin-top: auto;
338
340
  &:hover {
339
- background-color: ${t(colors.gray[200], colors.gray[700])};
341
+ background-color: ${t(colors.gray[100], colors.gray[800])};
340
342
  }
341
343
  &:hover {
342
344
  color: ${t(colors.red[700], colors.red[500])};
@@ -368,15 +370,15 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
368
370
  pluginsTabDraw: (isExpanded: boolean) => css`
369
371
  width: ${isExpanded ? size[48] : 0};
370
372
  height: 100%;
371
- background-color: ${t(colors.white, colors.darkGray[800])};
372
- box-shadow: 0 1px 0 ${colors.gray[700]};
373
+ background-color: ${t(colors.white, colors.darkGray[900])};
374
+ box-shadow: none;
373
375
  ${isExpanded
374
- ? `border-right: 1px solid ${t(colors.gray[300], colors.gray[700])};`
376
+ ? `border-right: 1px solid ${t(colors.gray[200], colors.gray[800])};`
375
377
  : ''}
376
378
  `,
377
379
  pluginsTabDrawExpanded: css`
378
380
  width: ${size[48]};
379
- border-right: 1px solid ${t(colors.gray[300], colors.gray[700])};
381
+ border-right: 1px solid ${t(colors.gray[200], colors.gray[800])};
380
382
  `,
381
383
  pluginsTabDrawTransition: (mSeconds: number) => {
382
384
  return css`
@@ -388,6 +390,8 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
388
390
  width: ${size[48]};
389
391
  overflow-y: auto;
390
392
  transform: ${isExpanded ? 'translateX(0)' : 'translateX(-100%)'};
393
+ display: flex;
394
+ flex-direction: column;
391
395
  `,
392
396
 
393
397
  pluginsTabSidebarTransition: (mSeconds: number) => {
@@ -396,42 +400,57 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
396
400
  `
397
401
  },
398
402
 
403
+ pluginsList: css`
404
+ flex: 1;
405
+ overflow-y: auto;
406
+ `,
407
+
399
408
  pluginName: css`
400
409
  font-size: ${fontSize.xs};
401
410
  font-family: ${fontFamily.sans};
402
- color: ${t(colors.gray[700], colors.gray[300])};
411
+ color: ${t(colors.gray[600], colors.gray[400])};
403
412
  padding: ${size[2]};
404
413
  cursor: pointer;
405
414
  text-align: center;
406
- transition: all 0.2s ease-in-out;
415
+ transition: all 0.15s ease;
416
+ border-left: 2px solid transparent;
417
+
407
418
  &:hover {
408
- background-color: ${t(colors.gray[200], colors.gray[700])};
419
+ background-color: ${t(colors.gray[100], colors.gray[800])};
409
420
  color: ${t(colors.gray[900], colors.gray[100])};
410
421
  padding: ${size[2]};
411
422
  }
412
423
  &.active {
413
- background-color: ${t(colors.purple[200], colors.purple[500])};
424
+ background-color: ${t(colors.gray[100], colors.gray[800])};
414
425
  color: ${t(colors.gray[900], colors.gray[100])};
426
+ border-left: 2px solid ${t(colors.gray[900], colors.gray[100])};
427
+ }
428
+ &.active:hover {
429
+ background-color: ${t(colors.gray[200], colors.gray[700])};
415
430
  }
416
431
  `,
417
432
  pluginsTabContent: css`
418
433
  width: 100%;
419
434
  height: 100%;
420
435
  overflow-y: auto;
436
+
437
+ &:not(:last-child) {
438
+ border-right: 5px solid ${t(colors.purple[200], colors.purple[800])};
439
+ }
421
440
  `,
422
441
 
423
442
  settingsGroup: css`
424
443
  display: flex;
425
444
  flex-direction: column;
426
- gap: 1rem;
445
+ gap: 0.75rem;
427
446
  `,
428
447
  conditionalSetting: css`
429
448
  margin-left: 1.5rem;
430
449
  padding-left: 1rem;
431
- border-left: 2px solid ${t(colors.purple[600], colors.purple[400])};
432
- background-color: ${t(colors.gray[100], colors.darkGray[800])};
433
- padding: 1rem;
434
- border-radius: 0.5rem;
450
+ border-left: 2px solid ${t(colors.gray[300], colors.gray[600])};
451
+ background-color: ${t(colors.gray[50], colors.darkGray[900])};
452
+ padding: 0.75rem;
453
+ border-radius: 0.375rem;
435
454
  margin-top: 0.5rem;
436
455
  `,
437
456
  settingRow: css`
@@ -447,6 +466,828 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
447
466
  display: flex;
448
467
  gap: 0.5rem;
449
468
  `,
469
+
470
+ // No Plugins Fallback Styles
471
+ noPluginsFallback: css`
472
+ display: flex;
473
+ align-items: center;
474
+ justify-content: center;
475
+ min-height: 400px;
476
+ padding: 2rem;
477
+ background: ${t(colors.gray[50], colors.darkGray[700])};
478
+ width: 100%;
479
+ height: 100%;
480
+ `,
481
+ noPluginsFallbackContent: css`
482
+ max-width: 600px;
483
+ text-align: center;
484
+ display: flex;
485
+ flex-direction: column;
486
+ align-items: center;
487
+ gap: 1rem;
488
+ `,
489
+ noPluginsFallbackIcon: css`
490
+ width: 64px;
491
+ height: 64px;
492
+ color: ${t(colors.gray[400], colors.gray[600])};
493
+ margin-bottom: 0.5rem;
494
+
495
+ svg {
496
+ width: 100%;
497
+ height: 100%;
498
+ }
499
+ `,
500
+ noPluginsFallbackTitle: css`
501
+ font-size: 1.5rem;
502
+ font-weight: 600;
503
+ color: ${t(colors.gray[900], colors.gray[100])};
504
+ margin: 0;
505
+ `,
506
+ noPluginsFallbackDescription: css`
507
+ font-size: 0.95rem;
508
+ color: ${t(colors.gray[600], colors.gray[400])};
509
+ line-height: 1.5;
510
+ margin: 0;
511
+ `,
512
+ noPluginsSuggestions: css`
513
+ width: 100%;
514
+ margin-top: 1.5rem;
515
+ padding: 1.5rem;
516
+ background: ${t(colors.white, colors.darkGray[800])};
517
+ border: 1px solid ${t(colors.gray[200], colors.gray[700])};
518
+ border-radius: 0.5rem;
519
+ `,
520
+ noPluginsSuggestionsTitle: css`
521
+ font-size: 1.125rem;
522
+ font-weight: 600;
523
+ color: ${t(colors.gray[900], colors.gray[100])};
524
+ margin: 0 0 0.5rem 0;
525
+ `,
526
+ noPluginsSuggestionsDesc: css`
527
+ font-size: 0.875rem;
528
+ color: ${t(colors.gray[600], colors.gray[400])};
529
+ margin: 0 0 1rem 0;
530
+ `,
531
+ noPluginsSuggestionsList: css`
532
+ display: flex;
533
+ flex-direction: column;
534
+ gap: 0.75rem;
535
+ `,
536
+ noPluginsSuggestionCard: css`
537
+ display: flex;
538
+ align-items: center;
539
+ justify-content: space-between;
540
+ padding: 1rem;
541
+ background: ${t(colors.gray[50], colors.darkGray[900])};
542
+ border: 1px solid ${t(colors.gray[200], colors.gray[700])};
543
+ border-radius: 0.375rem;
544
+ transition: all 0.15s ease;
545
+
546
+ &:hover {
547
+ border-color: ${t(colors.gray[300], colors.gray[600])};
548
+ background: ${t(colors.gray[100], colors.darkGray[800])};
549
+ }
550
+ `,
551
+ noPluginsSuggestionInfo: css`
552
+ display: flex;
553
+ flex-direction: column;
554
+ align-items: flex-start;
555
+ gap: 0.25rem;
556
+ flex: 1;
557
+ `,
558
+ noPluginsSuggestionPackage: css`
559
+ font-size: 0.95rem;
560
+ font-weight: 600;
561
+ color: ${t(colors.gray[900], colors.gray[100])};
562
+ margin: 0;
563
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
564
+ `,
565
+ noPluginsSuggestionSource: css`
566
+ font-size: 0.8rem;
567
+ color: ${t(colors.gray[500], colors.gray[500])};
568
+ margin: 0;
569
+ `,
570
+ noPluginsSuggestionStatus: css`
571
+ display: flex;
572
+ align-items: center;
573
+ gap: 0.5rem;
574
+ color: ${t(colors.green[600], colors.green[400])};
575
+
576
+ svg {
577
+ width: 18px;
578
+ height: 18px;
579
+ }
580
+ `,
581
+ noPluginsSuggestionStatusText: css`
582
+ font-size: 0.875rem;
583
+ font-weight: 500;
584
+ `,
585
+ noPluginsSuggestionStatusTextError: css`
586
+ font-size: 0.875rem;
587
+ font-weight: 500;
588
+ color: ${t(colors.red[600], colors.red[400])};
589
+ `,
590
+ noPluginsEmptyState: css`
591
+ margin-top: 1.5rem;
592
+ padding: 1.5rem;
593
+ background: ${t(colors.white, colors.darkGray[800])};
594
+ border: 1px solid ${t(colors.gray[200], colors.gray[700])};
595
+ border-radius: 0.5rem;
596
+ `,
597
+ noPluginsEmptyStateText: css`
598
+ font-size: 0.875rem;
599
+ color: ${t(colors.gray[600], colors.gray[400])};
600
+ margin: 0;
601
+ line-height: 1.5;
602
+ `,
603
+ noPluginsFallbackLinks: css`
604
+ display: flex;
605
+ align-items: center;
606
+ gap: 0.75rem;
607
+ margin-top: 1.5rem;
608
+ `,
609
+ noPluginsFallbackLink: css`
610
+ font-size: 0.875rem;
611
+ color: ${t(colors.gray[700], colors.gray[300])};
612
+ text-decoration: none;
613
+ transition: color 0.15s ease;
614
+
615
+ &:hover {
616
+ color: ${t(colors.gray[900], colors.gray[100])};
617
+ text-decoration: underline;
618
+ }
619
+ `,
620
+ noPluginsFallbackLinkSeparator: css`
621
+ color: ${t(colors.gray[400], colors.gray[600])};
622
+ `,
623
+
624
+ // Plugin Marketplace Styles (for "Add More" tab)
625
+ pluginMarketplace: css`
626
+ width: 100%;
627
+ overflow-y: auto;
628
+ padding: 2rem;
629
+ background: ${t(
630
+ 'linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%)',
631
+ 'linear-gradient(135deg, #1a1d23 0%, #13161a 100%)',
632
+ )};
633
+ animation: fadeIn 0.3s ease;
634
+
635
+ @keyframes fadeIn {
636
+ from {
637
+ opacity: 0;
638
+ transform: translateY(10px);
639
+ }
640
+ to {
641
+ opacity: 1;
642
+ transform: translateY(0);
643
+ }
644
+ }
645
+ `,
646
+ pluginMarketplaceHeader: css`
647
+ margin-bottom: 2rem;
648
+ padding-bottom: 1rem;
649
+ border-bottom: 2px solid ${t(colors.gray[200], colors.gray[700])};
650
+ `,
651
+ pluginMarketplaceTitleRow: css`
652
+ display: flex;
653
+ align-items: center;
654
+ justify-content: space-between;
655
+ gap: 2rem;
656
+ margin-bottom: 0.5rem;
657
+ `,
658
+ pluginMarketplaceTitle: css`
659
+ font-size: 1.5rem;
660
+ font-weight: 700;
661
+ color: ${t(colors.gray[900], colors.gray[100])};
662
+ margin: 0;
663
+ letter-spacing: -0.02em;
664
+ `,
665
+ pluginMarketplaceDescription: css`
666
+ font-size: 0.95rem;
667
+ color: ${t(colors.gray[600], colors.gray[400])};
668
+ margin: 0 0 1rem 0;
669
+ line-height: 1.5;
670
+ `,
671
+ pluginMarketplaceSearchWrapper: css`
672
+ position: relative;
673
+ display: flex;
674
+ align-items: center;
675
+ max-width: 400px;
676
+ flex-shrink: 0;
677
+
678
+ svg {
679
+ position: absolute;
680
+ left: 1rem;
681
+ color: ${t(colors.gray[400], colors.gray[500])};
682
+ pointer-events: none;
683
+ }
684
+ `,
685
+ pluginMarketplaceSearch: css`
686
+ width: 100%;
687
+ padding: 0.75rem 1rem 0.75rem 2.75rem;
688
+ background: ${t(colors.gray[50], colors.darkGray[900])};
689
+ border: 2px solid ${t(colors.gray[200], colors.gray[700])};
690
+ border-radius: 0.5rem;
691
+ color: ${t(colors.gray[900], colors.gray[100])};
692
+ font-size: 0.875rem;
693
+ font-family: ${fontFamily.sans};
694
+ transition: all 0.2s ease;
695
+
696
+ &::placeholder {
697
+ color: ${t(colors.gray[400], colors.gray[500])};
698
+ }
699
+
700
+ &:focus {
701
+ outline: none;
702
+ border-color: ${t(colors.blue[500], colors.blue[400])};
703
+ background: ${t(colors.white, colors.darkGray[800])};
704
+ box-shadow: 0 0 0 3px
705
+ ${t('rgba(59, 130, 246, 0.1)', 'rgba(96, 165, 250, 0.1)')};
706
+ }
707
+ `,
708
+ pluginMarketplaceFilters: css`
709
+ margin-top: 1.5rem;
710
+ padding-top: 1rem;
711
+ `,
712
+ pluginMarketplaceTagsContainer: css`
713
+ display: flex;
714
+ flex-wrap: wrap;
715
+ gap: 0.5rem;
716
+ margin-top: 1.5rem;
717
+ padding: 1rem;
718
+ background: ${t(colors.gray[50], colors.darkGray[800])};
719
+ border: 1px solid ${t(colors.gray[200], colors.gray[700])};
720
+ border-radius: 0.5rem;
721
+ `,
722
+ pluginMarketplaceTagButton: css`
723
+ padding: 0.5rem 1rem;
724
+ font-size: 0.875rem;
725
+ font-weight: 500;
726
+ background: ${t(colors.white, colors.darkGray[700])};
727
+ border: 2px solid ${t(colors.gray[300], colors.gray[600])};
728
+ border-radius: 0.375rem;
729
+ color: ${t(colors.gray[700], colors.gray[300])};
730
+ cursor: pointer;
731
+ transition: all 0.15s ease;
732
+
733
+ &:hover {
734
+ background: ${t(colors.gray[100], colors.darkGray[600])};
735
+ border-color: ${t(colors.gray[400], colors.gray[500])};
736
+ color: ${t(colors.gray[900], colors.gray[100])};
737
+ }
738
+ `,
739
+ pluginMarketplaceTagButtonActive: css`
740
+ background: ${t(
741
+ 'linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)',
742
+ 'linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%)',
743
+ )} !important;
744
+ border-color: ${t('#2563eb', '#3b82f6')} !important;
745
+ color: white !important;
746
+
747
+ &:hover {
748
+ background: ${t(
749
+ 'linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%)',
750
+ 'linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)',
751
+ )} !important;
752
+ border-color: ${t('#1d4ed8', '#2563eb')} !important;
753
+ }
754
+ `,
755
+ pluginMarketplaceSettingsButton: css`
756
+ display: flex;
757
+ align-items: center;
758
+ justify-content: center;
759
+ padding: 0.75rem;
760
+ background: ${t(colors.gray[100], colors.darkGray[800])};
761
+ border: 2px solid ${t(colors.gray[200], colors.gray[700])};
762
+ border-radius: 0.5rem;
763
+ color: ${t(colors.gray[700], colors.gray[300])};
764
+ cursor: pointer;
765
+ transition: all 0.2s ease;
766
+ margin-left: 0.5rem;
767
+
768
+ &:hover {
769
+ background: ${t(colors.gray[200], colors.darkGray[700])};
770
+ border-color: ${t(colors.gray[300], colors.gray[600])};
771
+ color: ${t(colors.gray[900], colors.gray[100])};
772
+ }
773
+
774
+ &:active {
775
+ transform: scale(0.95);
776
+ }
777
+ `,
778
+ pluginMarketplaceSettingsPanel: css`
779
+ position: fixed;
780
+ top: 0;
781
+ right: 0;
782
+ bottom: 0;
783
+ width: 350px;
784
+ background: ${t(colors.white, colors.darkGray[800])};
785
+ border-left: 1px solid ${t(colors.gray[200], colors.gray[700])};
786
+ box-shadow: -4px 0 12px ${t('rgba(0, 0, 0, 0.1)', 'rgba(0, 0, 0, 0.4)')};
787
+ z-index: 1000;
788
+ display: flex;
789
+ flex-direction: column;
790
+ animation: slideInRight 0.3s ease;
791
+
792
+ @keyframes slideInRight {
793
+ from {
794
+ transform: translateX(100%);
795
+ }
796
+ to {
797
+ transform: translateX(0);
798
+ }
799
+ }
800
+ `,
801
+ pluginMarketplaceSettingsPanelHeader: css`
802
+ display: flex;
803
+ align-items: center;
804
+ justify-content: space-between;
805
+ padding: 1.5rem;
806
+ border-bottom: 1px solid ${t(colors.gray[200], colors.gray[700])};
807
+ `,
808
+ pluginMarketplaceSettingsPanelTitle: css`
809
+ font-size: 1.125rem;
810
+ font-weight: 600;
811
+ color: ${t(colors.gray[900], colors.gray[100])};
812
+ margin: 0;
813
+ `,
814
+ pluginMarketplaceSettingsPanelClose: css`
815
+ display: flex;
816
+ align-items: center;
817
+ justify-content: center;
818
+ padding: 0.5rem;
819
+ background: transparent;
820
+ border: none;
821
+ color: ${t(colors.gray[600], colors.gray[400])};
822
+ cursor: pointer;
823
+ border-radius: 0.375rem;
824
+ transition: all 0.15s ease;
825
+
826
+ &:hover {
827
+ background: ${t(colors.gray[100], colors.darkGray[700])};
828
+ color: ${t(colors.gray[900], colors.gray[100])};
829
+ }
830
+ `,
831
+ pluginMarketplaceSettingsPanelContent: css`
832
+ flex: 1;
833
+ padding: 1.5rem;
834
+ overflow-y: auto;
835
+ `,
836
+ pluginMarketplaceGrid: css`
837
+ display: grid;
838
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
839
+ gap: 1.25rem;
840
+ animation: slideUp 0.4s ease;
841
+
842
+ @keyframes slideUp {
843
+ from {
844
+ opacity: 0;
845
+ transform: translateY(20px);
846
+ }
847
+ to {
848
+ opacity: 1;
849
+ transform: translateY(0);
850
+ }
851
+ }
852
+ `,
853
+ pluginMarketplaceCard: css`
854
+ background: ${t(colors.white, colors.darkGray[800])};
855
+ border: 2px solid ${t(colors.gray[200], colors.gray[700])};
856
+ border-radius: 0.75rem;
857
+ padding: 1.5rem;
858
+ display: flex;
859
+ flex-direction: column;
860
+ gap: 1rem;
861
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
862
+ position: relative;
863
+ overflow: hidden;
864
+
865
+ &::before {
866
+ content: '';
867
+ position: absolute;
868
+ top: 0;
869
+ left: 0;
870
+ right: 0;
871
+ height: 3px;
872
+ background: ${t(
873
+ 'linear-gradient(90deg, #3b82f6 0%, #8b5cf6 100%)',
874
+ 'linear-gradient(90deg, #60a5fa 0%, #a78bfa 100%)',
875
+ )};
876
+ transform: scaleX(0);
877
+ transform-origin: left;
878
+ transition: transform 0.25s ease;
879
+ }
880
+
881
+ &:hover {
882
+ border-color: ${t(colors.gray[400], colors.gray[500])};
883
+ box-shadow: 0 8px 24px ${t('rgba(0,0,0,0.1)', 'rgba(0,0,0,0.4)')};
884
+ transform: translateY(-4px);
885
+
886
+ &::before {
887
+ transform: scaleX(1);
888
+ }
889
+ }
890
+ `,
891
+ pluginMarketplaceCardIcon: css`
892
+ width: 40px;
893
+ height: 40px;
894
+ display: flex;
895
+ align-items: center;
896
+ justify-content: center;
897
+ background: ${t(
898
+ 'linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%)',
899
+ 'linear-gradient(135deg, #60a5fa 0%, #a78bfa 100%)',
900
+ )};
901
+ border-radius: 0.5rem;
902
+ color: white;
903
+ transition: transform 0.25s ease;
904
+
905
+ svg {
906
+ width: 20px;
907
+ height: 20px;
908
+ }
909
+
910
+ &.custom-logo {
911
+ }
912
+ `,
913
+ pluginMarketplaceCardHeader: css`
914
+ flex: 1;
915
+ `,
916
+ pluginMarketplaceCardTitle: css`
917
+ font-size: 0.95rem;
918
+ font-weight: 600;
919
+ color: ${t(colors.gray[900], colors.gray[100])};
920
+ margin: 0 0 0.5rem 0;
921
+ line-height: 1.4;
922
+ `,
923
+ pluginMarketplaceCardDescription: css`
924
+ font-size: 0.8rem;
925
+ color: ${t(colors.gray[500], colors.gray[500])};
926
+ margin: 0;
927
+ padding: 0;
928
+ background: transparent;
929
+ border-radius: 0.375rem;
930
+ display: block;
931
+ font-weight: 500;
932
+ `,
933
+ pluginMarketplaceCardPackageBadge: css`
934
+ margin-top: 4px;
935
+ margin-bottom: 8px;
936
+ font-size: 0.6875rem;
937
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
938
+ opacity: 0.6;
939
+ padding: 4px 8px;
940
+ padding-left: 0;
941
+ background-color: var(--bg-tertiary);
942
+ border-radius: 4px;
943
+ word-break: break-all;
944
+ display: inline-block;
945
+ `,
946
+ pluginMarketplaceCardDescriptionText: css`
947
+ line-height: 1.5;
948
+ margin-top: 0;
949
+ `,
950
+ pluginMarketplaceCardVersionInfo: css`
951
+ margin-top: 8px;
952
+ font-size: 0.6875rem;
953
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
954
+ `,
955
+ pluginMarketplaceCardVersionSatisfied: css`
956
+ color: ${t(colors.green[600], colors.green[400])};
957
+ `,
958
+ pluginMarketplaceCardVersionUnsatisfied: css`
959
+ color: ${t(colors.red[600], colors.red[400])};
960
+ `,
961
+ pluginMarketplaceCardDocsLink: css`
962
+ display: inline-flex;
963
+ align-items: center;
964
+ gap: 0.25rem;
965
+ font-size: 0.75rem;
966
+ color: ${t(colors.blue[600], colors.blue[400])};
967
+ text-decoration: none;
968
+ margin-top: 0.5rem;
969
+ transition: color 0.15s ease;
970
+
971
+ &:hover {
972
+ color: ${t(colors.blue[700], colors.blue[300])};
973
+ text-decoration: underline;
974
+ }
975
+
976
+ svg {
977
+ width: 12px;
978
+ height: 12px;
979
+ }
980
+ `,
981
+ pluginMarketplaceCardTags: css`
982
+ display: flex;
983
+ flex-wrap: wrap;
984
+ gap: 0.375rem;
985
+ margin-top: 0.75rem;
986
+ `,
987
+ pluginMarketplaceCardTag: css`
988
+ font-size: 0.6875rem;
989
+ font-weight: 500;
990
+ padding: 0.25rem 0.5rem;
991
+ background: ${t(colors.gray[100], colors.darkGray[700])};
992
+ border: 1px solid ${t(colors.gray[300], colors.gray[600])};
993
+ border-radius: 0.25rem;
994
+ color: ${t(colors.gray[700], colors.gray[300])};
995
+ `,
996
+ pluginMarketplaceCardImage: css`
997
+ width: 28px;
998
+ height: 28px;
999
+ object-fit: contain;
1000
+ `,
1001
+ pluginMarketplaceNewBanner: css`
1002
+ position: absolute;
1003
+ top: 12px;
1004
+ right: -35px;
1005
+ background-color: ${t(colors.green[500], colors.green[500])};
1006
+ color: white;
1007
+ padding: 4px 40px;
1008
+ font-size: 0.6875rem;
1009
+ font-weight: bold;
1010
+ text-transform: uppercase;
1011
+ transform: rotate(45deg);
1012
+ box-shadow: 0 2px 8px rgba(16, 185, 129, 0.5);
1013
+ z-index: 10;
1014
+ letter-spacing: 0.5px;
1015
+ `,
1016
+ pluginMarketplaceCardFeatured: css`
1017
+ border-color: ${t(colors.blue[500], colors.blue[400])};
1018
+ border-width: 2px;
1019
+ `,
1020
+ pluginMarketplaceCardActive: css`
1021
+ border-color: ${t(colors.green[500], colors.green[600])};
1022
+ border-width: 2px;
1023
+
1024
+ &:hover {
1025
+ border-color: ${t(colors.green[500], colors.green[600])};
1026
+ box-shadow: none;
1027
+ transform: none;
1028
+
1029
+ &::before {
1030
+ transform: scaleX(0);
1031
+ }
1032
+ }
1033
+ `,
1034
+ pluginMarketplaceCardStatus: css`
1035
+ display: flex;
1036
+ align-items: center;
1037
+ gap: 0.5rem;
1038
+ color: ${t(colors.green[600], colors.green[400])};
1039
+ animation: statusFadeIn 0.3s ease;
1040
+
1041
+ @keyframes statusFadeIn {
1042
+ from {
1043
+ opacity: 0;
1044
+ }
1045
+ to {
1046
+ opacity: 1;
1047
+ }
1048
+ }
1049
+
1050
+ svg {
1051
+ width: 18px;
1052
+ height: 18px;
1053
+ animation: iconPop 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
1054
+ }
1055
+
1056
+ @keyframes iconPop {
1057
+ 0% {
1058
+ transform: scale(0);
1059
+ }
1060
+ 50% {
1061
+ transform: scale(1.2);
1062
+ }
1063
+ 100% {
1064
+ transform: scale(1);
1065
+ }
1066
+ }
1067
+ `,
1068
+ pluginMarketplaceCardSpinner: css`
1069
+ width: 18px;
1070
+ height: 18px;
1071
+ border: 2px solid ${t(colors.gray[200], colors.gray[700])};
1072
+ border-top-color: ${t(colors.blue[600], colors.blue[400])};
1073
+ border-radius: 50%;
1074
+ animation: spin 0.8s linear infinite;
1075
+
1076
+ @keyframes spin {
1077
+ to {
1078
+ transform: rotate(360deg);
1079
+ }
1080
+ }
1081
+ `,
1082
+ pluginMarketplaceCardStatusText: css`
1083
+ font-size: 0.875rem;
1084
+ font-weight: 600;
1085
+ `,
1086
+ pluginMarketplaceCardStatusTextError: css`
1087
+ font-size: 0.875rem;
1088
+ font-weight: 600;
1089
+ color: ${t(colors.red[600], colors.red[400])};
1090
+ `,
1091
+ pluginMarketplaceEmpty: css`
1092
+ padding: 3rem 2rem;
1093
+ text-align: center;
1094
+ background: ${t(colors.white, colors.darkGray[800])};
1095
+ border: 2px dashed ${t(colors.gray[300], colors.gray[700])};
1096
+ border-radius: 0.75rem;
1097
+ animation: fadeIn 0.3s ease;
1098
+ `,
1099
+ pluginMarketplaceEmptyText: css`
1100
+ font-size: 0.95rem;
1101
+ color: ${t(colors.gray[600], colors.gray[400])};
1102
+ margin: 0;
1103
+ line-height: 1.6;
1104
+ `,
1105
+
1106
+ // Framework sections
1107
+ pluginMarketplaceSection: css`
1108
+ margin-bottom: 2.5rem;
1109
+
1110
+ &:last-child {
1111
+ margin-bottom: 0;
1112
+ }
1113
+ `,
1114
+ pluginMarketplaceSectionHeader: css`
1115
+ margin-bottom: 1rem;
1116
+ padding: 1rem 1.25rem;
1117
+ display: flex;
1118
+ align-items: center;
1119
+ gap: 0.75rem;
1120
+ cursor: pointer;
1121
+ user-select: none;
1122
+ background: ${t(colors.gray[50], colors.darkGray[800])};
1123
+ border: 1px solid ${t(colors.gray[200], colors.gray[700])};
1124
+ border-radius: 0.5rem;
1125
+ transition: all 0.15s ease;
1126
+
1127
+ &:hover {
1128
+ background: ${t(colors.gray[100], colors.darkGray[700])};
1129
+ border-color: ${t(colors.gray[300], colors.gray[600])};
1130
+ }
1131
+ `,
1132
+ pluginMarketplaceSectionHeaderLeft: css`
1133
+ display: flex;
1134
+ align-items: center;
1135
+ gap: 0.5rem;
1136
+ `,
1137
+ pluginMarketplaceSectionChevron: css`
1138
+ width: 24px;
1139
+ height: 24px;
1140
+ display: flex;
1141
+ align-items: center;
1142
+ justify-content: center;
1143
+ color: ${t(colors.gray[700], colors.gray[300])};
1144
+ transition: transform 0.2s ease;
1145
+ `,
1146
+ pluginMarketplaceSectionChevronCollapsed: css`
1147
+ transform: rotate(-90deg);
1148
+ `,
1149
+ pluginMarketplaceSectionTitle: css`
1150
+ font-size: 1.25rem;
1151
+ font-weight: 700;
1152
+ color: ${t(colors.gray[900], colors.gray[50])};
1153
+ margin: 0;
1154
+ display: flex;
1155
+ align-items: center;
1156
+ gap: 0.5rem;
1157
+ `,
1158
+ pluginMarketplaceSectionBadge: css`
1159
+ font-size: 0.75rem;
1160
+ font-weight: 600;
1161
+ padding: 0.25rem 0.5rem;
1162
+ background: ${t(
1163
+ 'linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)',
1164
+ 'linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%)',
1165
+ )};
1166
+ color: white;
1167
+ border-radius: 0.25rem;
1168
+ text-transform: uppercase;
1169
+ letter-spacing: 0.05em;
1170
+ `,
1171
+ pluginMarketplaceCardDisabled: css`
1172
+ opacity: 0.6;
1173
+ filter: grayscale(0.3);
1174
+ cursor: not-allowed;
1175
+
1176
+ &:hover {
1177
+ transform: none;
1178
+ box-shadow: none;
1179
+ }
1180
+ `,
1181
+
1182
+ // Card state badges
1183
+ pluginMarketplaceCardBadge: css`
1184
+ position: absolute;
1185
+ top: 1rem;
1186
+ right: 1rem;
1187
+ padding: 0.25rem 0.5rem;
1188
+ font-size: 0.65rem;
1189
+ font-weight: 600;
1190
+ text-transform: uppercase;
1191
+ border-radius: 0.25rem;
1192
+ letter-spacing: 0.05em;
1193
+ `,
1194
+ pluginMarketplaceCardBadgeInstall: css`
1195
+ background: ${t(colors.green[100], colors.green[900])};
1196
+ color: ${t(colors.green[700], colors.green[300])};
1197
+ `,
1198
+ pluginMarketplaceCardBadgeAdd: css`
1199
+ background: ${t(colors.blue[100], colors.blue[900])};
1200
+ color: ${t(colors.blue[700], colors.blue[300])};
1201
+ `,
1202
+ pluginMarketplaceCardBadgeRequires: css`
1203
+ background: ${t(colors.gray[100], colors.gray[800])};
1204
+ color: ${t(colors.gray[600], colors.gray[400])};
1205
+ `,
1206
+
1207
+ // Button style for already installed plugins
1208
+ pluginMarketplaceButtonInstalled: css`
1209
+ opacity: 0.5;
1210
+ `,
1211
+
1212
+ // Add More Tab Style (visually distinct from regular plugins)
1213
+ pluginNameAddMore: css`
1214
+ font-size: ${fontSize.xs};
1215
+ font-family: ${fontFamily.sans};
1216
+ color: ${t(colors.gray[600], colors.gray[400])};
1217
+ padding: ${size[3]} ${size[2]};
1218
+ cursor: pointer;
1219
+ text-align: center;
1220
+ transition: all 0.15s ease;
1221
+ border-left: 2px solid transparent;
1222
+ background: ${t(
1223
+ 'linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%)',
1224
+ 'linear-gradient(135deg, #1f2937 0%, #111827 100%)',
1225
+ )};
1226
+ font-weight: 600;
1227
+ position: relative;
1228
+ margin-top: auto;
1229
+
1230
+ h3 {
1231
+ margin: 0;
1232
+ display: flex;
1233
+ align-items: center;
1234
+ justify-content: center;
1235
+ gap: 0.25rem;
1236
+
1237
+ &::before {
1238
+ content: '✨';
1239
+ font-size: 0.875rem;
1240
+ animation: sparkle 2s ease-in-out infinite;
1241
+ }
1242
+ }
1243
+
1244
+ @keyframes sparkle {
1245
+ 0%,
1246
+ 100% {
1247
+ opacity: 1;
1248
+ transform: scale(1) rotate(0deg);
1249
+ }
1250
+ 50% {
1251
+ opacity: 0.6;
1252
+ transform: scale(1.1) rotate(10deg);
1253
+ }
1254
+ }
1255
+
1256
+ &:hover {
1257
+ background: ${t(
1258
+ 'linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%)',
1259
+ 'linear-gradient(135deg, #374151 0%, #1f2937 100%)',
1260
+ )};
1261
+ color: ${t(colors.gray[900], colors.gray[100])};
1262
+ border-left-color: ${t(colors.blue[500], colors.blue[400])};
1263
+
1264
+ h3::before {
1265
+ animation: sparkle 0.5s ease-in-out infinite;
1266
+ }
1267
+ }
1268
+
1269
+ &.active {
1270
+ background: ${t(
1271
+ 'linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)',
1272
+ 'linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%)',
1273
+ )};
1274
+ color: ${t(colors.white, colors.white)};
1275
+ border-left: 2px solid ${t(colors.blue[600], colors.blue[300])};
1276
+ box-shadow: 0 4px 12px
1277
+ ${t('rgba(59, 130, 246, 0.3)', 'rgba(96, 165, 250, 0.3)')};
1278
+
1279
+ h3::before {
1280
+ filter: brightness(0) invert(1);
1281
+ }
1282
+ }
1283
+
1284
+ &.active:hover {
1285
+ background: ${t(
1286
+ 'linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%)',
1287
+ 'linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)',
1288
+ )};
1289
+ }
1290
+ `,
450
1291
  }
451
1292
  }
452
1293