whistle.mock-plugins 1.1.3-dev.9 → 1.2.0-beta.10

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.
@@ -14,23 +14,250 @@
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
+
124
+ /* 视图切换按钮样式 */
125
+ .view-toggle-controls {
126
+ display: flex;
127
+ justify-content: flex-end;
128
+ align-items: center;
129
+ height: 100%;
130
+ }
131
+
132
+ .view-toggle-button {
133
+ border-radius: 4px;
134
+ border: 1px solid #e8e8e8;
135
+ background: #fafafa;
136
+ transition: all 0.3s;
137
+ }
138
+
139
+ .view-toggle-button:hover {
140
+ border-color: #1890ff;
141
+ color: #1890ff;
142
+ }
143
+
144
+ /* 列表视图样式 */
145
+ .feature-list-view {
146
+ display: flex;
147
+ flex-direction: column;
148
+ gap: 16px;
149
+ min-height: 300px;
150
+ }
151
+
152
+ .feature-list-item {
153
+ display: flex;
154
+ justify-content: space-between;
155
+ align-items: center;
156
+ padding: 16px 20px;
157
+ border-radius: 8px;
158
+ border: 1px solid #f0f0f0;
159
+ background: #ffffff;
160
+ transition: all 0.3s;
161
+ cursor: pointer;
162
+ position: relative;
163
+ }
164
+
165
+ .feature-list-item:hover {
166
+ border-color: #d9d9d9;
167
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);
168
+ transform: translateY(-2px);
169
+ }
170
+
171
+ .feature-list-item.inactive-feature {
172
+ opacity: 0.7;
173
+ background-color: #fafafa;
174
+ }
175
+
176
+ .feature-list-content {
177
+ flex: 1;
178
+ display: flex;
179
+ flex-direction: column;
180
+ gap: 8px;
181
+ overflow: hidden;
182
+ }
183
+
184
+ .feature-list-main {
185
+ display: flex;
186
+ flex-direction: column;
187
+ gap: 4px;
188
+ }
189
+
190
+ .feature-list-name {
191
+ display: flex;
192
+ align-items: center;
193
+ gap: 12px;
194
+ }
195
+
196
+ .feature-list-name h3 {
197
+ margin: 0;
198
+ font-size: 16px;
199
+ font-weight: 600;
200
+ color: #1890ff;
201
+ }
202
+
203
+ .feature-list-description {
204
+ color: #666;
205
+ font-size: 14px;
206
+ max-width: 80%;
207
+ overflow: hidden;
208
+ white-space: nowrap;
209
+ text-overflow: ellipsis;
210
+ }
211
+
212
+ .feature-list-meta {
213
+ display: flex;
214
+ justify-content: space-between;
215
+ }
216
+
217
+ .feature-list-stats {
218
+ display: flex;
219
+ gap: 16px;
220
+ color: #8c8c8c;
221
+ font-size: 13px;
222
+ }
223
+
224
+ .feature-list-stats span {
225
+ display: flex;
226
+ align-items: center;
227
+ gap: 4px;
228
+ }
229
+
230
+ .feature-list-actions {
231
+ display: flex;
232
+ align-items: center;
233
+ gap: 8px;
234
+ }
235
+
17
236
  .feature-card {
18
237
  position: relative;
19
- transition: all 0.3s;
238
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
20
239
  height: 100%;
21
240
  display: flex;
22
241
  flex-direction: column;
23
- border-radius: 8px;
242
+ border-radius: 12px;
24
243
  overflow: hidden;
25
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
244
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
245
+ border: 1px solid #f0f0f0;
26
246
  cursor: pointer;
247
+ background: #ffffff;
248
+ }
249
+
250
+ .feature-card:hover {
251
+ transform: translateY(-4px);
252
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
253
+ border-color: #d9d9d9;
27
254
  }
28
255
 
29
256
  .feature-card:active {
30
257
  transform: translateY(-2px);
31
258
  }
32
259
 
33
- /* 添加卡片点击提示 */
260
+ /* 添加卡片悬浮效果 */
34
261
  .feature-card::before {
35
262
  content: '';
36
263
  position: absolute;
@@ -38,9 +265,9 @@
38
265
  left: 0;
39
266
  right: 0;
40
267
  bottom: 0;
41
- background: linear-gradient(135deg, rgba(24, 144, 255, 0.02), rgba(24, 144, 255, 0.05));
268
+ background: linear-gradient(135deg, rgba(24, 144, 255, 0.02), rgba(24, 144, 255, 0.04));
42
269
  opacity: 0;
43
- transition: opacity 0.3s;
270
+ transition: opacity 0.3s ease;
44
271
  pointer-events: none;
45
272
  z-index: 1;
46
273
  }
@@ -53,11 +280,33 @@
53
280
  .feature-card .ant-card-body {
54
281
  position: relative;
55
282
  z-index: 2;
283
+ padding: 20px;
56
284
  }
57
285
 
58
286
  .feature-card .ant-card-actions {
59
287
  position: relative;
60
288
  z-index: 2;
289
+ border-top: 1px solid #f0f0f0;
290
+ background: #fafafa;
291
+ }
292
+
293
+ .feature-card .ant-card-actions li {
294
+ transition: all 0.2s ease;
295
+ }
296
+
297
+ .feature-card .ant-card-actions li:hover {
298
+ background: #f0f0f0;
299
+ }
300
+
301
+ /* 不活跃功能卡片样式 */
302
+ .feature-card.inactive-feature {
303
+ opacity: 0.7;
304
+ filter: grayscale(0.3);
305
+ }
306
+
307
+ .feature-card.inactive-feature:hover {
308
+ opacity: 0.9;
309
+ filter: grayscale(0.1);
61
310
  }
62
311
 
63
312
  .feature-card-content {
@@ -797,29 +1046,71 @@ input:checked + .slider:before {
797
1046
  }
798
1047
 
799
1048
  /* 加载中样式 */
800
- .loading {
1049
+ /* 加载状态样式 */
1050
+ .loading-state {
801
1051
  display: flex;
802
1052
  flex-direction: column;
803
1053
  align-items: center;
804
1054
  justify-content: center;
805
1055
  height: 300px;
1056
+ gap: 16px;
1057
+ }
1058
+
1059
+ .loading-text {
806
1060
  color: #8c8c8c;
807
1061
  font-size: 16px;
808
1062
  }
809
1063
 
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;
1064
+ /* 空状态样式 */
1065
+ .custom-empty {
1066
+ padding: 60px 20px;
1067
+ }
1068
+
1069
+ .empty-image {
817
1070
  margin-bottom: 16px;
818
1071
  }
819
1072
 
820
- @keyframes spin {
821
- 0% { transform: rotate(0deg); }
822
- 100% { transform: rotate(360deg); }
1073
+ .empty-description {
1074
+ margin-bottom: 24px;
1075
+ }
1076
+
1077
+ .empty-title {
1078
+ font-size: 16px;
1079
+ font-weight: 500;
1080
+ color: #262626;
1081
+ margin-bottom: 8px;
1082
+ }
1083
+
1084
+ .empty-subtitle {
1085
+ font-size: 14px;
1086
+ color: #8c8c8c;
1087
+ line-height: 1.5;
1088
+ }
1089
+
1090
+ .empty-actions {
1091
+ display: flex;
1092
+ gap: 12px;
1093
+ justify-content: center;
1094
+ flex-wrap: wrap;
1095
+ }
1096
+
1097
+ /* 分页组件样式 */
1098
+ .pagination-wrapper {
1099
+ margin-top: 32px;
1100
+ padding-top: 24px;
1101
+ border-top: 1px solid #f0f0f0;
1102
+ display: flex;
1103
+ justify-content: center;
1104
+ }
1105
+
1106
+ .custom-pagination {
1107
+ display: flex;
1108
+ justify-content: center;
1109
+ }
1110
+
1111
+ .custom-pagination .ant-pagination-total-text {
1112
+ color: #8c8c8c;
1113
+ font-size: 14px;
823
1114
  }
824
1115
 
825
1116
  /* 响应式调整 */
@@ -828,24 +1119,65 @@ input:checked + .slider:before {
828
1119
  padding: 16px;
829
1120
  }
830
1121
 
831
- .page-header {
1122
+ .page-title-bar {
832
1123
  flex-direction: column;
833
1124
  align-items: flex-start;
1125
+ gap: 16px;
834
1126
  }
835
1127
 
836
- .header-actions {
837
- margin-top: 16px;
1128
+ .page-actions {
838
1129
  width: 100%;
1130
+ justify-content: flex-start;
839
1131
  }
840
1132
 
841
- .add-button, .import-button {
842
- flex: 1;
1133
+ .stats-section {
1134
+ justify-content: space-around;
1135
+ gap: 16px;
1136
+ }
1137
+
1138
+ .control-group {
1139
+ justify-content: flex-start;
1140
+ }
1141
+
1142
+ .control-panel-card .ant-card-body {
1143
+ padding: 16px;
1144
+ }
1145
+
1146
+ .feature-list-card .ant-card-body {
1147
+ padding: 16px;
843
1148
  }
844
1149
 
845
1150
  .feature-card-content {
846
1151
  height: auto;
847
1152
  }
848
1153
 
1154
+ .feature-list-item {
1155
+ flex-direction: column;
1156
+ align-items: flex-start;
1157
+ gap: 16px;
1158
+ padding: 16px;
1159
+ }
1160
+
1161
+ .feature-list-content {
1162
+ width: 100%;
1163
+ }
1164
+
1165
+ .feature-list-description {
1166
+ max-width: 100%;
1167
+ }
1168
+
1169
+ .feature-list-actions {
1170
+ width: 100%;
1171
+ justify-content: flex-end;
1172
+ border-top: 1px solid #f0f0f0;
1173
+ padding-top: 12px;
1174
+ }
1175
+
1176
+ .view-toggle-controls {
1177
+ justify-content: flex-start;
1178
+ margin-top: 12px;
1179
+ }
1180
+
849
1181
  .form-actions {
850
1182
  flex-direction: column;
851
1183
  }
@@ -853,6 +1185,51 @@ input:checked + .slider:before {
853
1185
  .cancel-button, .submit-button {
854
1186
  width: 100%;
855
1187
  }
1188
+
1189
+ .empty-actions {
1190
+ flex-direction: column;
1191
+ align-items: center;
1192
+ }
1193
+
1194
+ .empty-actions .ant-btn {
1195
+ width: 200px;
1196
+ }
1197
+ }
1198
+
1199
+ @media (max-width: 576px) {
1200
+ .stats-section {
1201
+ flex-direction: column;
1202
+ gap: 12px;
1203
+ align-items: stretch;
1204
+ }
1205
+
1206
+ .stats-item {
1207
+ flex-direction: row;
1208
+ justify-content: space-between;
1209
+ align-items: center;
1210
+ padding: 8px 12px;
1211
+ background: #fafafa;
1212
+ border-radius: 6px;
1213
+ }
1214
+
1215
+ .stats-number {
1216
+ font-size: 20px;
1217
+ }
1218
+
1219
+ .stats-label {
1220
+ font-size: 13px;
1221
+ }
1222
+
1223
+ .control-group {
1224
+ flex-direction: column;
1225
+ align-items: flex-start;
1226
+ gap: 8px;
1227
+ }
1228
+
1229
+ .page-info {
1230
+ order: -1;
1231
+ font-weight: 500;
1232
+ }
856
1233
  }
857
1234
 
858
1235
  /* 修复功能模块状态标记(ribbon)与按钮的重叠问题 */