@tanstack/devtools 0.6.20 → 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.
@@ -390,6 +390,8 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
390
390
  width: ${size[48]};
391
391
  overflow-y: auto;
392
392
  transform: ${isExpanded ? 'translateX(0)' : 'translateX(-100%)'};
393
+ display: flex;
394
+ flex-direction: column;
393
395
  `,
394
396
 
395
397
  pluginsTabSidebarTransition: (mSeconds: number) => {
@@ -398,6 +400,11 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
398
400
  `
399
401
  },
400
402
 
403
+ pluginsList: css`
404
+ flex: 1;
405
+ overflow-y: auto;
406
+ `,
407
+
401
408
  pluginName: css`
402
409
  font-size: ${fontSize.xs};
403
410
  font-family: ${fontFamily.sans};
@@ -459,6 +466,828 @@ const stylesFactory = (theme: DevtoolsStore['settings']['theme']) => {
459
466
  display: flex;
460
467
  gap: 0.5rem;
461
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
+ `,
462
1291
  }
463
1292
  }
464
1293