whistle.mock-plugins 1.1.3-dev.8 → 1.2.0-beta.1

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.
@@ -16,6 +16,12 @@
16
16
  }
17
17
 
18
18
 
19
+ /* 页面容器 */
20
+ .interface-management-container {
21
+ padding: 24px;
22
+ min-height: calc(100vh - 120px);
23
+ }
24
+
19
25
  /* 统一控制台 */
20
26
  .interface-control-panel {
21
27
  margin-bottom: 16px;
@@ -107,21 +113,6 @@
107
113
  font-size: 13px;
108
114
  }
109
115
 
110
- /* 列设置按钮 */
111
- .column-settings-btn {
112
- transition: all 0.2s ease;
113
- border-radius: 6px;
114
- }
115
-
116
- .column-settings-btn:hover {
117
- background-color: #f5f5f5;
118
- color: var(--primary-color) !important;
119
- }
120
-
121
- .column-settings-btn:active {
122
- background-color: #e6f7ff;
123
- }
124
-
125
116
  /* 旧版样式兼容 */
126
117
  .interface-header-card {
127
118
  margin-bottom: 16px;
@@ -284,7 +275,7 @@
284
275
  .list-container-card {
285
276
  border-radius: 12px;
286
277
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
287
- margin-bottom: 24px;
278
+ margin-bottom: 40px;
288
279
  }
289
280
 
290
281
  .interface-list-container {
@@ -297,10 +288,14 @@
297
288
  font-weight: 600;
298
289
  padding: 12px 16px !important;
299
290
  color: #333;
291
+ white-space: nowrap;
300
292
  }
301
293
 
302
294
  .interface-table td {
303
295
  padding: 12px 16px !important;
296
+ white-space: nowrap;
297
+ overflow: hidden;
298
+ text-overflow: ellipsis;
304
299
  }
305
300
 
306
301
  /* 卡片视图样式 */
@@ -651,33 +646,7 @@
651
646
  line-height: 1.6;
652
647
  }
653
648
 
654
- .interface-table {
655
- width: 100%;
656
- border-collapse: collapse;
657
- border-radius: var(--border-radius);
658
- overflow: hidden;
659
- box-shadow: var(--card-shadow);
660
- }
661
-
662
- .interface-table th,
663
- .interface-table td {
664
- padding: 16px;
665
- text-align: left;
666
- border-bottom: 1px solid var(--border-color);
667
- }
668
-
669
- .interface-table th {
670
- background-color: #fafafa;
671
- color: var(--text-secondary);
672
- font-weight: 600;
673
- font-size: 14px;
674
- text-transform: uppercase;
675
- letter-spacing: 0.5px;
676
- }
677
-
678
- .interface-table tr:hover {
679
- background-color: #f5f5f5;
680
- }
649
+ /* 重复的表格样式已移除,使用上面的统一定义 */
681
650
 
682
651
  .interface-table tr.inactive {
683
652
  color: var(--text-light);
@@ -687,14 +656,14 @@
687
656
 
688
657
  .url-pattern {
689
658
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
690
- word-break: break-all;
691
659
  padding: 4px 8px;
692
660
  background: #f5f5f5;
693
661
  border-radius: 4px;
694
662
  display: inline-block;
695
- max-width: 100%;
663
+ max-width: 300px;
696
664
  overflow: hidden;
697
665
  text-overflow: ellipsis;
666
+ white-space: nowrap;
698
667
  }
699
668
 
700
669
  /* 接口状态开关 */
@@ -1148,4 +1117,138 @@
1148
1117
  .no-response {
1149
1118
  color: #999;
1150
1119
  font-style: italic;
1151
- }
1120
+ }
1121
+
1122
+ /* 内联列设置按钮样式 */
1123
+ .inline-column-settings-btn {
1124
+ display: flex;
1125
+ align-items: center;
1126
+ gap: 6px;
1127
+ padding: 4px 8px;
1128
+ border-radius: 4px;
1129
+ border: 1px solid #d9d9d9;
1130
+ background: #ffffff;
1131
+ color: #666;
1132
+ font-size: 12px;
1133
+ transition: all 0.2s ease;
1134
+ }
1135
+
1136
+ .inline-column-settings-btn:hover {
1137
+ border-color: #4096ff;
1138
+ background: #f0f9ff;
1139
+ color: #4096ff;
1140
+ }
1141
+
1142
+ .inline-column-settings-btn:active {
1143
+ border-color: #1677ff;
1144
+ background: #e6f4ff;
1145
+ }
1146
+
1147
+ /* 接口弹窗样式 */
1148
+ .interface-modal .ant-modal-header {
1149
+ border-bottom: 1px solid #f0f0f0;
1150
+ padding: 16px 24px;
1151
+ margin-bottom: 0;
1152
+ }
1153
+
1154
+ .interface-modal .ant-modal-body {
1155
+ padding: 0;
1156
+ }
1157
+
1158
+ .interface-modal .ant-card {
1159
+ border: 1px solid #e8e8e8;
1160
+ border-radius: 8px;
1161
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
1162
+ }
1163
+
1164
+ .interface-modal .ant-card-head {
1165
+ background: #fafafa;
1166
+ border-bottom: 1px solid #f0f0f0;
1167
+ padding: 0 20px;
1168
+ min-height: 48px;
1169
+ }
1170
+
1171
+ .interface-modal .ant-card-head-title {
1172
+ font-size: 14px;
1173
+ font-weight: 600;
1174
+ color: #262626;
1175
+ padding: 12px 0;
1176
+ }
1177
+
1178
+ .interface-modal .ant-form-item-label > label {
1179
+ font-size: 13px;
1180
+ font-weight: 500;
1181
+ color: #434343;
1182
+ }
1183
+
1184
+ .interface-modal .ant-form-item {
1185
+ margin-bottom: 16px;
1186
+ }
1187
+
1188
+ .interface-modal .ant-input,
1189
+ .interface-modal .ant-select-selector {
1190
+ border-radius: 6px;
1191
+ border: 1px solid #d9d9d9;
1192
+ }
1193
+
1194
+ .interface-modal .ant-input:focus,
1195
+ .interface-modal .ant-select-focused .ant-select-selector {
1196
+ border-color: #4096ff;
1197
+ box-shadow: 0 0 0 2px rgba(64, 150, 255, 0.1);
1198
+ }
1199
+
1200
+ /* 接口弹窗中的折叠面板样式 */
1201
+ .interface-modal .ant-collapse {
1202
+ background: transparent;
1203
+ border: none;
1204
+ }
1205
+
1206
+ .interface-modal .ant-collapse-item {
1207
+ margin-bottom: 16px;
1208
+ background: #ffffff;
1209
+ border: 1px solid #e8e8e8;
1210
+ border-radius: 8px;
1211
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
1212
+ }
1213
+
1214
+ .interface-modal .ant-collapse-header {
1215
+ background: #fafafa;
1216
+ border-bottom: 1px solid #f0f0f0;
1217
+ border-radius: 8px 8px 0 0 !important;
1218
+ padding: 16px 20px !important;
1219
+ font-size: 14px;
1220
+ font-weight: 600;
1221
+ color: #262626;
1222
+ }
1223
+
1224
+ .interface-modal .ant-collapse-content {
1225
+ border-top: none;
1226
+ background: #ffffff;
1227
+ border-radius: 0 0 8px 8px;
1228
+ }
1229
+
1230
+ .interface-modal .ant-collapse-content-box {
1231
+ padding: 20px;
1232
+ }
1233
+
1234
+ .interface-modal .ant-collapse-arrow {
1235
+ color: #666 !important;
1236
+ font-size: 12px !important;
1237
+ }
1238
+
1239
+ /* 参数匹配规则帮助按钮样式 */
1240
+ .interface-modal .ant-popover-inner-content {
1241
+ padding: 12px;
1242
+ }
1243
+
1244
+ .interface-modal .ant-popover-title {
1245
+ font-weight: 600;
1246
+ color: #262626;
1247
+ padding: 8px 12px;
1248
+ border-bottom: 1px solid #f0f0f0;
1249
+ }
1250
+
1251
+ /* 分页器样式 */
1252
+ .interface-table .ant-pagination-options {
1253
+ margin-right: 16px;
1254
+ }
@@ -14,23 +14,138 @@
14
14
  border-bottom: 1px solid #f0f0f0;
15
15
  }
16
16
 
17
+ /* 页面标题区域样式 */
18
+ .title-section {
19
+ flex: 1;
20
+ }
21
+
22
+ .title-with-badge {
23
+ display: flex;
24
+ align-items: center;
25
+ margin-bottom: 8px;
26
+ }
27
+
28
+ .page-title {
29
+ margin: 0 !important;
30
+ font-size: 24px;
31
+ font-weight: 600;
32
+ color: #262626;
33
+ line-height: 1.2;
34
+ }
35
+
36
+ .page-description {
37
+ color: #8c8c8c;
38
+ font-size: 14px;
39
+ line-height: 1.5;
40
+ margin: 0;
41
+ }
42
+
43
+ /* 控制面板卡片样式 */
44
+ .control-panel-card {
45
+ border-radius: 12px;
46
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
47
+ border: 1px solid #f0f0f0;
48
+ }
49
+
50
+ .control-panel-card .ant-card-body {
51
+ padding: 20px 24px;
52
+ }
53
+
54
+ /* 统计信息区域 */
55
+ .stats-section {
56
+ display: flex;
57
+ gap: 24px;
58
+ align-items: center;
59
+ }
60
+
61
+ .stats-item {
62
+ display: flex;
63
+ flex-direction: column;
64
+ align-items: center;
65
+ text-align: center;
66
+ }
67
+
68
+ .stats-number {
69
+ font-size: 24px;
70
+ font-weight: 600;
71
+ color: #1890ff;
72
+ line-height: 1;
73
+ margin-bottom: 4px;
74
+ }
75
+
76
+ .stats-label {
77
+ font-size: 12px;
78
+ color: #8c8c8c;
79
+ line-height: 1;
80
+ }
81
+
82
+ /* 控制组样式 */
83
+ .control-group {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 12px;
87
+ flex-wrap: wrap;
88
+ }
89
+
90
+ .control-label {
91
+ font-size: 14px;
92
+ color: #595959;
93
+ white-space: nowrap;
94
+ font-weight: 500;
95
+ }
96
+
97
+ .control-label .anticon {
98
+ margin-right: 6px;
99
+ color: #1890ff;
100
+ }
101
+
102
+ .page-info {
103
+ font-size: 13px;
104
+ color: #8c8c8c;
105
+ white-space: nowrap;
106
+ }
107
+
108
+ /* 功能列表卡片样式 */
109
+ .feature-list-card {
110
+ border-radius: 12px;
111
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
112
+ border: 1px solid #f0f0f0;
113
+ min-height: 400px;
114
+ }
115
+
116
+ .feature-list-card .ant-card-body {
117
+ padding: 24px;
118
+ }
119
+
120
+ .feature-grid {
121
+ min-height: 300px;
122
+ }
123
+
17
124
  .feature-card {
18
125
  position: relative;
19
- transition: all 0.3s;
126
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
20
127
  height: 100%;
21
128
  display: flex;
22
129
  flex-direction: column;
23
- border-radius: 8px;
130
+ border-radius: 12px;
24
131
  overflow: hidden;
25
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
132
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
133
+ border: 1px solid #f0f0f0;
26
134
  cursor: pointer;
135
+ background: #ffffff;
136
+ }
137
+
138
+ .feature-card:hover {
139
+ transform: translateY(-4px);
140
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
141
+ border-color: #d9d9d9;
27
142
  }
28
143
 
29
144
  .feature-card:active {
30
145
  transform: translateY(-2px);
31
146
  }
32
147
 
33
- /* 添加卡片点击提示 */
148
+ /* 添加卡片悬浮效果 */
34
149
  .feature-card::before {
35
150
  content: '';
36
151
  position: absolute;
@@ -38,9 +153,9 @@
38
153
  left: 0;
39
154
  right: 0;
40
155
  bottom: 0;
41
- background: linear-gradient(135deg, rgba(24, 144, 255, 0.02), rgba(24, 144, 255, 0.05));
156
+ background: linear-gradient(135deg, rgba(24, 144, 255, 0.02), rgba(24, 144, 255, 0.04));
42
157
  opacity: 0;
43
- transition: opacity 0.3s;
158
+ transition: opacity 0.3s ease;
44
159
  pointer-events: none;
45
160
  z-index: 1;
46
161
  }
@@ -53,11 +168,33 @@
53
168
  .feature-card .ant-card-body {
54
169
  position: relative;
55
170
  z-index: 2;
171
+ padding: 20px;
56
172
  }
57
173
 
58
174
  .feature-card .ant-card-actions {
59
175
  position: relative;
60
176
  z-index: 2;
177
+ border-top: 1px solid #f0f0f0;
178
+ background: #fafafa;
179
+ }
180
+
181
+ .feature-card .ant-card-actions li {
182
+ transition: all 0.2s ease;
183
+ }
184
+
185
+ .feature-card .ant-card-actions li:hover {
186
+ background: #f0f0f0;
187
+ }
188
+
189
+ /* 不活跃功能卡片样式 */
190
+ .feature-card.inactive-feature {
191
+ opacity: 0.7;
192
+ filter: grayscale(0.3);
193
+ }
194
+
195
+ .feature-card.inactive-feature:hover {
196
+ opacity: 0.9;
197
+ filter: grayscale(0.1);
61
198
  }
62
199
 
63
200
  .feature-card-content {
@@ -797,29 +934,71 @@ input:checked + .slider:before {
797
934
  }
798
935
 
799
936
  /* 加载中样式 */
800
- .loading {
937
+ /* 加载状态样式 */
938
+ .loading-state {
801
939
  display: flex;
802
940
  flex-direction: column;
803
941
  align-items: center;
804
942
  justify-content: center;
805
943
  height: 300px;
944
+ gap: 16px;
945
+ }
946
+
947
+ .loading-text {
806
948
  color: #8c8c8c;
807
949
  font-size: 16px;
808
950
  }
809
951
 
810
- .loading-spinner {
811
- border: 4px solid #f3f3f3;
812
- border-top: 4px solid #1890ff;
813
- border-radius: 50%;
814
- width: 40px;
815
- height: 40px;
816
- animation: spin 2s linear infinite;
952
+ /* 空状态样式 */
953
+ .custom-empty {
954
+ padding: 60px 20px;
955
+ }
956
+
957
+ .empty-image {
817
958
  margin-bottom: 16px;
818
959
  }
819
960
 
820
- @keyframes spin {
821
- 0% { transform: rotate(0deg); }
822
- 100% { transform: rotate(360deg); }
961
+ .empty-description {
962
+ margin-bottom: 24px;
963
+ }
964
+
965
+ .empty-title {
966
+ font-size: 16px;
967
+ font-weight: 500;
968
+ color: #262626;
969
+ margin-bottom: 8px;
970
+ }
971
+
972
+ .empty-subtitle {
973
+ font-size: 14px;
974
+ color: #8c8c8c;
975
+ line-height: 1.5;
976
+ }
977
+
978
+ .empty-actions {
979
+ display: flex;
980
+ gap: 12px;
981
+ justify-content: center;
982
+ flex-wrap: wrap;
983
+ }
984
+
985
+ /* 分页组件样式 */
986
+ .pagination-wrapper {
987
+ margin-top: 32px;
988
+ padding-top: 24px;
989
+ border-top: 1px solid #f0f0f0;
990
+ display: flex;
991
+ justify-content: center;
992
+ }
993
+
994
+ .custom-pagination {
995
+ display: flex;
996
+ justify-content: center;
997
+ }
998
+
999
+ .custom-pagination .ant-pagination-total-text {
1000
+ color: #8c8c8c;
1001
+ font-size: 14px;
823
1002
  }
824
1003
 
825
1004
  /* 响应式调整 */
@@ -828,18 +1007,32 @@ input:checked + .slider:before {
828
1007
  padding: 16px;
829
1008
  }
830
1009
 
831
- .page-header {
1010
+ .page-title-bar {
832
1011
  flex-direction: column;
833
1012
  align-items: flex-start;
1013
+ gap: 16px;
834
1014
  }
835
1015
 
836
- .header-actions {
837
- margin-top: 16px;
1016
+ .page-actions {
838
1017
  width: 100%;
1018
+ justify-content: flex-start;
1019
+ }
1020
+
1021
+ .stats-section {
1022
+ justify-content: space-around;
1023
+ gap: 16px;
1024
+ }
1025
+
1026
+ .control-group {
1027
+ justify-content: flex-start;
839
1028
  }
840
1029
 
841
- .add-button, .import-button {
842
- flex: 1;
1030
+ .control-panel-card .ant-card-body {
1031
+ padding: 16px;
1032
+ }
1033
+
1034
+ .feature-list-card .ant-card-body {
1035
+ padding: 16px;
843
1036
  }
844
1037
 
845
1038
  .feature-card-content {
@@ -853,6 +1046,51 @@ input:checked + .slider:before {
853
1046
  .cancel-button, .submit-button {
854
1047
  width: 100%;
855
1048
  }
1049
+
1050
+ .empty-actions {
1051
+ flex-direction: column;
1052
+ align-items: center;
1053
+ }
1054
+
1055
+ .empty-actions .ant-btn {
1056
+ width: 200px;
1057
+ }
1058
+ }
1059
+
1060
+ @media (max-width: 576px) {
1061
+ .stats-section {
1062
+ flex-direction: column;
1063
+ gap: 12px;
1064
+ align-items: stretch;
1065
+ }
1066
+
1067
+ .stats-item {
1068
+ flex-direction: row;
1069
+ justify-content: space-between;
1070
+ align-items: center;
1071
+ padding: 8px 12px;
1072
+ background: #fafafa;
1073
+ border-radius: 6px;
1074
+ }
1075
+
1076
+ .stats-number {
1077
+ font-size: 20px;
1078
+ }
1079
+
1080
+ .stats-label {
1081
+ font-size: 13px;
1082
+ }
1083
+
1084
+ .control-group {
1085
+ flex-direction: column;
1086
+ align-items: flex-start;
1087
+ gap: 8px;
1088
+ }
1089
+
1090
+ .page-info {
1091
+ order: -1;
1092
+ font-weight: 500;
1093
+ }
856
1094
  }
857
1095
 
858
1096
  /* 修复功能模块状态标记(ribbon)与按钮的重叠问题 */