mall-components 1.0.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.
Files changed (122) hide show
  1. package/README.md +128 -0
  2. package/build/_components-raw.css +791 -0
  3. package/build/_shims/antd.js +1 -0
  4. package/build/_shims/icons.js +1 -0
  5. package/build/_shims/moment.js +1 -0
  6. package/build/_shims/react-dom.js +1 -0
  7. package/build/_shims/react.js +1 -0
  8. package/build/adapters/DataSourceAdapter.d.ts +46 -0
  9. package/build/components/AdminLayout/AdminLayout.d.ts +5 -0
  10. package/build/components/AdminLayout/Breadcrumb.d.ts +8 -0
  11. package/build/components/AdminLayout/MainContent.d.ts +17 -0
  12. package/build/components/AdminLayout/Navbar.d.ts +10 -0
  13. package/build/components/AdminLayout/Sidebar.d.ts +14 -0
  14. package/build/components/AdminLayout/TabBar.d.ts +13 -0
  15. package/build/components/AdminLayout/TabPane.d.ts +4 -0
  16. package/build/components/AdminLayout/index.d.ts +3 -0
  17. package/build/components/AdminLayout/types.d.ts +42 -0
  18. package/build/components/CouponCard/CouponCard.d.ts +20 -0
  19. package/build/components/CouponCard/index.d.ts +1 -0
  20. package/build/components/OrderForm/OrderForm.d.ts +18 -0
  21. package/build/components/OrderForm/index.d.ts +1 -0
  22. package/build/components/OrderList/OrderList.d.ts +29 -0
  23. package/build/components/OrderList/index.d.ts +1 -0
  24. package/build/components/ProductForm/ProductForm.d.ts +18 -0
  25. package/build/components/ProductForm/index.d.ts +3 -0
  26. package/build/components/ProductList/ProductList.d.ts +47 -0
  27. package/build/components/ProductList/index.d.ts +3 -0
  28. package/build/components/PromotionCard/PromotionCard.d.ts +22 -0
  29. package/build/components/PromotionCard/index.d.ts +1 -0
  30. package/build/components/RoleCard/RoleCard.d.ts +18 -0
  31. package/build/components/RoleCard/index.d.ts +1 -0
  32. package/build/components/UserCard/UserCard.d.ts +17 -0
  33. package/build/components/UserCard/index.d.ts +1 -0
  34. package/build/entry-meta.d.ts +603 -0
  35. package/build/index.css +1 -0
  36. package/build/index.js +1 -0
  37. package/build/mall-components-meta.js +2563 -0
  38. package/build/mall-components.cdn.umd.css +1 -0
  39. package/build/mall-components.cdn.umd.js +8 -0
  40. package/build/mall-components.codesandbox.combined.js +1094 -0
  41. package/build/mall-components.codesandbox.css +401 -0
  42. package/build/mall-components.codesandbox.js +1080 -0
  43. package/build/mall-components.umd.css +1 -0
  44. package/build/mall-components.umd.js +8 -0
  45. package/build/meta/adminLayoutMeta.d.ts +3 -0
  46. package/build/meta/couponCardMeta.d.ts +128 -0
  47. package/build/meta/icons.d.ts +10 -0
  48. package/build/meta/orderFormMeta.d.ts +111 -0
  49. package/build/meta/orderListMeta.d.ts +170 -0
  50. package/build/meta/productFormMeta.d.ts +3 -0
  51. package/build/meta/productListMeta.d.ts +200 -0
  52. package/build/meta/promotionCardMeta.d.ts +129 -0
  53. package/build/meta/roleCardMeta.d.ts +3 -0
  54. package/build/meta/tabPaneMeta.d.ts +3 -0
  55. package/build/meta/userCardMeta.d.ts +3 -0
  56. package/build/meta.d.ts +605 -0
  57. package/build/setters/RestApiTester.d.ts +11 -0
  58. package/build/types/common.d.ts +17 -0
  59. package/build/types/marketing.d.ts +128 -0
  60. package/build/types/order.d.ts +174 -0
  61. package/build/types/permission.d.ts +101 -0
  62. package/build/types/product.d.ts +47 -0
  63. package/package.json +1 -0
  64. package/src/adapters/DataSourceAdapter.ts +445 -0
  65. package/src/components/AdminLayout/AdminLayout.scss +447 -0
  66. package/src/components/AdminLayout/AdminLayout.tsx +681 -0
  67. package/src/components/AdminLayout/Breadcrumb.tsx +60 -0
  68. package/src/components/AdminLayout/MainContent.tsx +54 -0
  69. package/src/components/AdminLayout/Navbar.tsx +76 -0
  70. package/src/components/AdminLayout/Sidebar.tsx +256 -0
  71. package/src/components/AdminLayout/TabBar.tsx +177 -0
  72. package/src/components/AdminLayout/TabPane.tsx +29 -0
  73. package/src/components/AdminLayout/index.ts +3 -0
  74. package/src/components/AdminLayout/types.ts +46 -0
  75. package/src/components/CouponCard/CouponCard.scss +55 -0
  76. package/src/components/CouponCard/CouponCard.tsx +687 -0
  77. package/src/components/CouponCard/index.ts +1 -0
  78. package/src/components/OrderForm/OrderForm.scss +148 -0
  79. package/src/components/OrderForm/OrderForm.tsx +503 -0
  80. package/src/components/OrderForm/index.ts +1 -0
  81. package/src/components/OrderList/OrderList.scss +160 -0
  82. package/src/components/OrderList/OrderList.tsx +885 -0
  83. package/src/components/OrderList/index.ts +1 -0
  84. package/src/components/ProductForm/ProductForm.scss +23 -0
  85. package/src/components/ProductForm/ProductForm.tsx +442 -0
  86. package/src/components/ProductForm/index.ts +3 -0
  87. package/src/components/ProductList/ProductList.scss +293 -0
  88. package/src/components/ProductList/ProductList.tsx +454 -0
  89. package/src/components/ProductList/index.ts +3 -0
  90. package/src/components/PromotionCard/PromotionCard.scss +71 -0
  91. package/src/components/PromotionCard/PromotionCard.tsx +579 -0
  92. package/src/components/PromotionCard/index.ts +1 -0
  93. package/src/components/RoleCard/RoleCard.scss +77 -0
  94. package/src/components/RoleCard/RoleCard.tsx +463 -0
  95. package/src/components/RoleCard/index.ts +1 -0
  96. package/src/components/UserCard/UserCard.scss +51 -0
  97. package/src/components/UserCard/UserCard.tsx +432 -0
  98. package/src/components/UserCard/index.ts +1 -0
  99. package/src/entry-components.ts +39 -0
  100. package/src/entry-meta.ts +23 -0
  101. package/src/index.scss +4 -0
  102. package/src/index.ts +36 -0
  103. package/src/index.tsx +17 -0
  104. package/src/meta/adminLayoutMeta.ts +154 -0
  105. package/src/meta/couponCardMeta.ts +287 -0
  106. package/src/meta/icons.ts +41 -0
  107. package/src/meta/orderFormMeta.ts +279 -0
  108. package/src/meta/orderListMeta.ts +443 -0
  109. package/src/meta/productFormMeta.ts +253 -0
  110. package/src/meta/productListMeta.ts +434 -0
  111. package/src/meta/promotionCardMeta.ts +276 -0
  112. package/src/meta/roleCardMeta.ts +142 -0
  113. package/src/meta/tabPaneMeta.ts +69 -0
  114. package/src/meta/userCardMeta.ts +128 -0
  115. package/src/meta.ts +25 -0
  116. package/src/setters/RestApiTester.tsx +219 -0
  117. package/src/shims/require.js +8 -0
  118. package/src/types/common.ts +19 -0
  119. package/src/types/marketing.ts +124 -0
  120. package/src/types/order.ts +169 -0
  121. package/src/types/permission.ts +102 -0
  122. package/src/types/product.ts +49 -0
@@ -0,0 +1,791 @@
1
+ /* src/components/ProductList/ProductList.scss */
2
+ .mall-product-list {
3
+ background: #f5f7fa;
4
+ padding: 16px;
5
+ border-radius: 8px;
6
+ min-height: 100%;
7
+ .mall-product-list-filter {
8
+ margin-bottom: 16px;
9
+ border-radius: 8px;
10
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
11
+ transition: all 0.3s ease;
12
+ &:hover {
13
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
14
+ }
15
+ .ant-card-body {
16
+ padding: 20px;
17
+ }
18
+ .ant-input-affix-wrapper {
19
+ border-radius: 6px;
20
+ transition: all 0.3s ease;
21
+ &:hover,
22
+ &:focus {
23
+ border-color: #40a9ff;
24
+ box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.1);
25
+ }
26
+ }
27
+ .ant-btn {
28
+ border-radius: 6px;
29
+ font-weight: 500;
30
+ transition: all 0.3s ease;
31
+ &:hover {
32
+ transform: translateY(-1px);
33
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
34
+ }
35
+ &:active {
36
+ transform: translateY(0);
37
+ }
38
+ }
39
+ }
40
+ .mall-product-list-action {
41
+ margin-bottom: 16px;
42
+ border-radius: 8px;
43
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
44
+ transition: all 0.3s ease;
45
+ &:hover {
46
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
47
+ }
48
+ .ant-card-body {
49
+ padding: 16px 20px;
50
+ }
51
+ .ant-btn {
52
+ border-radius: 6px;
53
+ font-weight: 500;
54
+ transition: all 0.3s ease;
55
+ &:hover {
56
+ transform: translateY(-1px);
57
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
58
+ }
59
+ }
60
+ .ant-select {
61
+ .ant-select-selector {
62
+ border-radius: 6px;
63
+ transition: all 0.3s ease;
64
+ &:hover {
65
+ border-color: #40a9ff;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ .mall-product-list-table {
71
+ background: #fff;
72
+ border-radius: 8px;
73
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
74
+ .ant-table-thead > tr > th {
75
+ background:
76
+ linear-gradient(
77
+ 135deg,
78
+ #667eea 0%,
79
+ #764ba2 100%);
80
+ color: #fff;
81
+ font-weight: 600;
82
+ font-size: 14px;
83
+ padding: 16px;
84
+ border-bottom: none;
85
+ &::before {
86
+ background-color: rgba(255, 255, 255, 0.2);
87
+ }
88
+ }
89
+ .ant-table-tbody > tr {
90
+ transition: all 0.3s ease;
91
+ &:hover {
92
+ background: #f0f5ff;
93
+ cursor: pointer;
94
+ transform: scale(1.01);
95
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
96
+ }
97
+ > td {
98
+ padding: 16px;
99
+ border-bottom: 1px solid #f0f0f0;
100
+ }
101
+ }
102
+ img {
103
+ border-radius: 8px;
104
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
105
+ transition: all 0.3s ease;
106
+ &:hover {
107
+ transform: scale(1.1);
108
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
109
+ }
110
+ }
111
+ .price-cell {
112
+ color: #f56c6c;
113
+ font-weight: 600;
114
+ font-size: 16px;
115
+ }
116
+ .stock-cell {
117
+ font-weight: 500;
118
+ &.low-stock {
119
+ color: #f56c6c;
120
+ }
121
+ &.normal-stock {
122
+ color: #67c23a;
123
+ }
124
+ }
125
+ .ant-space {
126
+ .ant-btn-link {
127
+ padding: 4px 8px;
128
+ height: auto;
129
+ font-weight: 500;
130
+ transition: all 0.3s ease;
131
+ &:hover {
132
+ background: #f0f5ff;
133
+ border-radius: 4px;
134
+ }
135
+ &.ant-btn-dangerous {
136
+ color: #f56c6c;
137
+ &:hover {
138
+ background: #fff1f0;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+ .pagination-wrapper {
145
+ background: #fff;
146
+ padding: 16px 20px;
147
+ border-radius: 8px;
148
+ margin-top: 16px;
149
+ display: flex;
150
+ justify-content: flex-end;
151
+ .ant-pagination {
152
+ .ant-pagination-item {
153
+ border-radius: 6px;
154
+ transition: all 0.3s ease;
155
+ &:hover {
156
+ border-color: #40a9ff;
157
+ transform: translateY(-1px);
158
+ }
159
+ }
160
+ .ant-pagination-item-active {
161
+ background:
162
+ linear-gradient(
163
+ 135deg,
164
+ #667eea 0%,
165
+ #764ba2 100%);
166
+ border-color: #667eea;
167
+ a {
168
+ color: #fff;
169
+ }
170
+ }
171
+ .ant-pagination-prev,
172
+ .ant-pagination-next {
173
+ border-radius: 6px;
174
+ transition: all 0.3s ease;
175
+ &:hover {
176
+ border-color: #40a9ff;
177
+ transform: translateY(-1px);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ .ant-switch {
183
+ &.ant-switch-checked {
184
+ background:
185
+ linear-gradient(
186
+ 135deg,
187
+ #667eea 0%,
188
+ #764ba2 100%);
189
+ }
190
+ }
191
+ @media (max-width: 1200px) {
192
+ padding: 12px;
193
+ .mall-product-list-filter,
194
+ .mall-product-list-action {
195
+ .ant-card-body {
196
+ padding: 16px;
197
+ }
198
+ }
199
+ .ant-table-wrapper {
200
+ .ant-table-thead > tr > th,
201
+ .ant-table-tbody > tr > td {
202
+ padding: 12px;
203
+ }
204
+ }
205
+ }
206
+ @media (max-width: 768px) {
207
+ padding: 8px;
208
+ .mall-product-list-filter {
209
+ .ant-input-affix-wrapper {
210
+ width: 100% !important;
211
+ margin-bottom: 8px;
212
+ }
213
+ .ant-btn {
214
+ width: 100%;
215
+ margin-bottom: 8px;
216
+ }
217
+ }
218
+ .mall-product-list-action {
219
+ .ant-btn {
220
+ width: 100%;
221
+ margin-bottom: 8px;
222
+ }
223
+ .ant-select {
224
+ width: 100% !important;
225
+ margin-bottom: 8px;
226
+ }
227
+ }
228
+ .pagination-wrapper {
229
+ padding: 12px;
230
+ justify-content: center;
231
+ .ant-pagination {
232
+ flex-wrap: wrap;
233
+ justify-content: center;
234
+ }
235
+ }
236
+ }
237
+ .ant-spin-nested-loading {
238
+ .ant-spin {
239
+ .ant-spin-dot {
240
+ font-size: 32px;
241
+ }
242
+ }
243
+ }
244
+ .ant-empty {
245
+ padding: 48px 0;
246
+ .ant-empty-image {
247
+ height: 100px;
248
+ }
249
+ .ant-empty-description {
250
+ color: #999;
251
+ font-size: 14px;
252
+ }
253
+ }
254
+ }
255
+
256
+ /* src/components/ProductForm/ProductForm.scss */
257
+ .mall-product-form {
258
+ .ant-card-body {
259
+ padding: 24px;
260
+ }
261
+ .ant-form-item {
262
+ margin-bottom: 16px;
263
+ }
264
+ .ant-form-item-label {
265
+ label {
266
+ font-weight: 500;
267
+ }
268
+ }
269
+ .ant-input-number {
270
+ width: 100%;
271
+ }
272
+ .ant-select {
273
+ width: 100%;
274
+ }
275
+ }
276
+
277
+ /* src/components/OrderList/OrderList.scss */
278
+ .mall-order-list {
279
+ .filter-section {
280
+ margin-bottom: 16px;
281
+ padding: 16px;
282
+ background:
283
+ linear-gradient(
284
+ 135deg,
285
+ #f5f7fa 0%,
286
+ #f0f2f5 100%);
287
+ border-radius: 8px;
288
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
289
+ }
290
+ .batch-operation-section {
291
+ margin-bottom: 16px;
292
+ padding: 12px 16px;
293
+ background: #fafafa;
294
+ border-radius: 4px;
295
+ display: flex;
296
+ align-items: center;
297
+ justify-content: space-between;
298
+ .selected-info {
299
+ color: #1890ff;
300
+ font-size: 14px;
301
+ }
302
+ }
303
+ .action-section {
304
+ margin-bottom: 16px;
305
+ padding: 12px 0;
306
+ border-bottom: 1px solid #f0f0f0;
307
+ }
308
+ .ant-table {
309
+ .ant-table-thead > tr > th {
310
+ background:
311
+ linear-gradient(
312
+ 135deg,
313
+ #667eea 0%,
314
+ #764ba2 100%);
315
+ color: white;
316
+ font-weight: 600;
317
+ border-bottom: none;
318
+ &::before {
319
+ background-color: rgba(255, 255, 255, 0.3);
320
+ }
321
+ }
322
+ .ant-table-tbody > tr {
323
+ &:hover {
324
+ background: #f5f5f5;
325
+ cursor: pointer;
326
+ }
327
+ > td {
328
+ padding: 12px 8px;
329
+ border-bottom: 1px solid #f0f0f0;
330
+ }
331
+ }
332
+ }
333
+ .order-sn {
334
+ font-family: "Courier New", monospace;
335
+ font-weight: 500;
336
+ color: #1890ff;
337
+ }
338
+ .order-amount {
339
+ font-weight: 600;
340
+ color: #595959;
341
+ }
342
+ .pay-amount {
343
+ font-weight: 700;
344
+ color: #f5222d;
345
+ font-size: 14px;
346
+ }
347
+ .ant-tag {
348
+ border-radius: 12px;
349
+ padding: 2px 8px;
350
+ font-size: 12px;
351
+ font-weight: 500;
352
+ }
353
+ .ant-btn-link {
354
+ padding: 0 4px;
355
+ height: auto;
356
+ }
357
+ .ant-modal {
358
+ .ant-descriptions {
359
+ .ant-descriptions-item-label {
360
+ font-weight: 600;
361
+ background: #fafafa;
362
+ }
363
+ .ant-descriptions-item-content {
364
+ background: white;
365
+ }
366
+ }
367
+ }
368
+ @media (max-width: 768px) {
369
+ .filter-section {
370
+ .ant-col {
371
+ margin-bottom: 8px;
372
+ }
373
+ }
374
+ .batch-operation-section {
375
+ flex-direction: column;
376
+ align-items: flex-start;
377
+ .selected-info {
378
+ margin-top: 8px;
379
+ }
380
+ }
381
+ .ant-table {
382
+ overflow-x: auto;
383
+ .ant-table-thead > tr > th,
384
+ .ant-table-tbody > tr > td {
385
+ white-space: nowrap;
386
+ font-size: 12px;
387
+ padding: 8px 4px;
388
+ }
389
+ }
390
+ }
391
+ .ant-pagination {
392
+ margin-top: 16px;
393
+ text-align: right;
394
+ .ant-pagination-item-active {
395
+ border-color: #1890ff;
396
+ a {
397
+ color: #1890ff;
398
+ }
399
+ }
400
+ }
401
+ .ant-spin-nested-loading {
402
+ .ant-spin {
403
+ max-height: 400px;
404
+ }
405
+ }
406
+ .empty-data {
407
+ padding: 40px 0;
408
+ text-align: center;
409
+ color: #8c8c8c;
410
+ .ant-empty-image {
411
+ height: 100px;
412
+ }
413
+ }
414
+ .loading-skeleton {
415
+ .ant-skeleton {
416
+ padding: 16px 0;
417
+ }
418
+ }
419
+ }
420
+
421
+ /* src/components/OrderForm/OrderForm.scss */
422
+ .mall-order-form {
423
+ .ant-card {
424
+ border-radius: 8px;
425
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
426
+ }
427
+ .ant-tabs {
428
+ .ant-tabs-nav {
429
+ margin-bottom: 24px;
430
+ &::before {
431
+ border-bottom: 2px solid #f0f0f0;
432
+ }
433
+ .ant-tabs-tab {
434
+ padding: 12px 16px;
435
+ font-weight: 500;
436
+ transition: all 0.3s ease;
437
+ &:hover {
438
+ color: #1890ff;
439
+ }
440
+ &.ant-tabs-tab-active {
441
+ .ant-tabs-tab-btn {
442
+ color: #1890ff;
443
+ font-weight: 600;
444
+ }
445
+ }
446
+ }
447
+ .ant-tabs-ink-bar {
448
+ height: 3px;
449
+ background:
450
+ linear-gradient(
451
+ 90deg,
452
+ #1890ff 0%,
453
+ #40a9ff 100%);
454
+ }
455
+ }
456
+ }
457
+ .ant-form {
458
+ .ant-form-item {
459
+ margin-bottom: 20px;
460
+ .ant-form-item-label {
461
+ label {
462
+ font-weight: 500;
463
+ color: #262626;
464
+ }
465
+ }
466
+ .ant-input,
467
+ .ant-input-number,
468
+ .ant-select {
469
+ border-radius: 4px;
470
+ &:hover {
471
+ border-color: #40a9ff;
472
+ }
473
+ &:focus,
474
+ &.ant-input-focused,
475
+ &.ant-select-focused {
476
+ border-color: #1890ff;
477
+ box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
478
+ }
479
+ }
480
+ .ant-input-textarea-show-count::after {
481
+ float: right;
482
+ color: #8c8c8c;
483
+ font-size: 12px;
484
+ }
485
+ }
486
+ }
487
+ .ant-table {
488
+ .ant-table-thead > tr > th {
489
+ background:
490
+ linear-gradient(
491
+ 135deg,
492
+ #667eea 0%,
493
+ #764ba2 100%);
494
+ color: white;
495
+ font-weight: 600;
496
+ }
497
+ .ant-table-tbody > tr {
498
+ &:hover {
499
+ background: #f5f5f5;
500
+ }
501
+ > td {
502
+ padding: 12px 8px;
503
+ }
504
+ }
505
+ }
506
+ .ant-divider {
507
+ margin: 24px 0;
508
+ border-color: #f0f0f0;
509
+ }
510
+ .ant-space {
511
+ .ant-btn {
512
+ min-width: 80px;
513
+ border-radius: 4px;
514
+ font-weight: 500;
515
+ transition: all 0.3s ease;
516
+ &:hover {
517
+ transform: translateY(-1px);
518
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
519
+ }
520
+ &.ant-btn-primary {
521
+ background:
522
+ linear-gradient(
523
+ 135deg,
524
+ #1890ff 0%,
525
+ #40a9ff 100%);
526
+ border: none;
527
+ &:hover {
528
+ background:
529
+ linear-gradient(
530
+ 135deg,
531
+ #40a9ff 0%,
532
+ #69c0ff 100%);
533
+ }
534
+ }
535
+ }
536
+ }
537
+ @media (max-width: 768px) {
538
+ .ant-form {
539
+ .ant-col {
540
+ margin-bottom: 0;
541
+ }
542
+ }
543
+ .ant-tabs {
544
+ .ant-tabs-nav {
545
+ .ant-tabs-tab {
546
+ padding: 8px 12px;
547
+ font-size: 14px;
548
+ }
549
+ }
550
+ }
551
+ .ant-table {
552
+ overflow-x: auto;
553
+ .ant-table-thead > tr > th,
554
+ .ant-table-tbody > tr > td {
555
+ white-space: nowrap;
556
+ font-size: 12px;
557
+ padding: 8px 4px;
558
+ }
559
+ }
560
+ }
561
+ }
562
+
563
+ /* src/components/CouponCard/CouponCard.scss */
564
+ .mall-coupon-card {
565
+ .statistics-section {
566
+ padding: 16px;
567
+ background: #f5f5f5;
568
+ border-radius: 4px;
569
+ margin-bottom: 16px;
570
+ .stat-item {
571
+ text-align: center;
572
+ .stat-value {
573
+ font-size: 24px;
574
+ font-weight: 600;
575
+ color: #1890ff;
576
+ }
577
+ .stat-label {
578
+ font-size: 12px;
579
+ color: #8c8c8c;
580
+ margin-top: 4px;
581
+ }
582
+ }
583
+ }
584
+ .filter-section {
585
+ margin-bottom: 16px;
586
+ padding: 16px;
587
+ background: #fafafa;
588
+ border-radius: 4px;
589
+ }
590
+ .action-section {
591
+ margin-bottom: 16px;
592
+ }
593
+ .coupon-name {
594
+ font-weight: 500;
595
+ color: #262626;
596
+ }
597
+ .ant-table {
598
+ .ant-tag {
599
+ margin: 0;
600
+ }
601
+ }
602
+ .ant-badge {
603
+ .ant-badge-count {
604
+ font-size: 12px;
605
+ min-width: 40px;
606
+ height: 20px;
607
+ line-height: 20px;
608
+ }
609
+ }
610
+ }
611
+
612
+ /* src/components/PromotionCard/PromotionCard.scss */
613
+ .mall-promotion-card {
614
+ .statistics-section {
615
+ padding: 16px;
616
+ background:
617
+ linear-gradient(
618
+ 135deg,
619
+ #fff7e6 0%,
620
+ #fffbe6 100%);
621
+ border-radius: 4px;
622
+ margin-bottom: 16px;
623
+ .ant-statistic-title {
624
+ font-size: 13px;
625
+ color: #8c8c8c;
626
+ }
627
+ .ant-statistic-content {
628
+ font-size: 28px;
629
+ }
630
+ }
631
+ .content-section {
632
+ display: flex;
633
+ gap: 16px;
634
+ .table-section {
635
+ flex: 1;
636
+ }
637
+ .timeline-section {
638
+ width: 300px;
639
+ .ant-card {
640
+ height: 100%;
641
+ }
642
+ .ant-timeline {
643
+ padding-top: 8px;
644
+ }
645
+ .ant-timeline-item-content {
646
+ font-size: 13px;
647
+ }
648
+ }
649
+ }
650
+ .filter-section {
651
+ margin-bottom: 16px;
652
+ }
653
+ .action-section {
654
+ margin-bottom: 16px;
655
+ }
656
+ .promotion-title {
657
+ font-weight: 500;
658
+ color: #262626;
659
+ }
660
+ .ant-table {
661
+ .ant-tag {
662
+ margin: 0;
663
+ }
664
+ }
665
+ @media (max-width: 1200px) {
666
+ .content-section {
667
+ flex-direction: column;
668
+ .timeline-section {
669
+ width: 100%;
670
+ }
671
+ }
672
+ }
673
+ }
674
+
675
+ /* src/components/UserCard/UserCard.scss */
676
+ .mall-user-card {
677
+ .statistics-section {
678
+ padding: 16px;
679
+ background:
680
+ linear-gradient(
681
+ 135deg,
682
+ #e6f7ff 0%,
683
+ #f0f5ff 100%);
684
+ border-radius: 4px;
685
+ margin-bottom: 16px;
686
+ .stat-item {
687
+ text-align: center;
688
+ .stat-value {
689
+ font-size: 24px;
690
+ font-weight: 600;
691
+ color: #1890ff;
692
+ }
693
+ .stat-label {
694
+ font-size: 12px;
695
+ color: #8c8c8c;
696
+ margin-top: 4px;
697
+ }
698
+ }
699
+ }
700
+ .filter-section {
701
+ margin-bottom: 16px;
702
+ padding: 16px;
703
+ background: #fafafa;
704
+ border-radius: 4px;
705
+ }
706
+ .action-section {
707
+ margin-bottom: 16px;
708
+ }
709
+ .user-name {
710
+ font-weight: 500;
711
+ color: #262626;
712
+ }
713
+ .user-username {
714
+ font-size: 12px;
715
+ color: #8c8c8c;
716
+ }
717
+ .ant-table {
718
+ .ant-tag {
719
+ margin: 0;
720
+ }
721
+ }
722
+ }
723
+
724
+ /* src/components/RoleCard/RoleCard.scss */
725
+ .mall-role-card {
726
+ .statistics-section {
727
+ padding: 16px;
728
+ background:
729
+ linear-gradient(
730
+ 135deg,
731
+ #f0f5ff 0%,
732
+ #f5f0ff 100%);
733
+ border-radius: 4px;
734
+ margin-bottom: 16px;
735
+ .stat-item {
736
+ text-align: center;
737
+ .stat-value {
738
+ font-size: 24px;
739
+ font-weight: 600;
740
+ color: #722ed1;
741
+ }
742
+ .stat-label {
743
+ font-size: 12px;
744
+ color: #8c8c8c;
745
+ margin-top: 4px;
746
+ }
747
+ }
748
+ }
749
+ .content-section {
750
+ display: flex;
751
+ gap: 16px;
752
+ .table-section {
753
+ flex: 1;
754
+ }
755
+ .permission-section {
756
+ width: 280px;
757
+ .ant-card {
758
+ height: 100%;
759
+ }
760
+ .ant-tree {
761
+ font-size: 13px;
762
+ }
763
+ }
764
+ }
765
+ .filter-section {
766
+ margin-bottom: 16px;
767
+ padding: 16px;
768
+ background: #fafafa;
769
+ border-radius: 4px;
770
+ }
771
+ .action-section {
772
+ margin-bottom: 16px;
773
+ }
774
+ .role-name {
775
+ font-weight: 500;
776
+ color: #262626;
777
+ }
778
+ .ant-table {
779
+ .ant-tag {
780
+ margin: 0;
781
+ }
782
+ }
783
+ @media (max-width: 1200px) {
784
+ .content-section {
785
+ flex-direction: column;
786
+ .permission-section {
787
+ width: 100%;
788
+ }
789
+ }
790
+ }
791
+ }