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,447 @@
1
+ .admin-layout {
2
+ display: flex;
3
+ height: 100vh;
4
+ width: 100%;
5
+ overflow: hidden;
6
+ background-color: #f0f2f5;
7
+
8
+ .sidebar-container {
9
+ width: 256px;
10
+ height: 100vh;
11
+ background: linear-gradient(180deg, #001529 0%, #002140 100%);
12
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
13
+ overflow-y: auto;
14
+ overflow-x: hidden;
15
+ flex-shrink: 0;
16
+ z-index: 10;
17
+ box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
18
+
19
+ &::-webkit-scrollbar {
20
+ width: 6px;
21
+ }
22
+
23
+ &::-webkit-scrollbar-thumb {
24
+ background: rgba(255, 255, 255, 0.2);
25
+ border-radius: 3px;
26
+
27
+ &:hover {
28
+ background: rgba(255, 255, 255, 0.3);
29
+ }
30
+ }
31
+
32
+ .sidebar-logo {
33
+ height: 64px;
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ padding: 16px;
38
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
39
+ background: rgba(255, 255, 255, 0.02);
40
+
41
+ .logo-text {
42
+ color: #fff;
43
+ font-size: 20px;
44
+ font-weight: 600;
45
+ white-space: nowrap;
46
+ letter-spacing: 1px;
47
+ }
48
+
49
+ .logo-icon {
50
+ color: #fff;
51
+ font-size: 24px;
52
+ font-weight: bold;
53
+ }
54
+ }
55
+
56
+ .ant-menu {
57
+ border-right: none !important;
58
+ background: transparent !important;
59
+
60
+ .ant-menu-item {
61
+ margin: 0;
62
+ border-radius: 0;
63
+ height: 48px;
64
+ line-height: 48px;
65
+ padding-left: 24px !important;
66
+ margin: 0 0 4px 0;
67
+
68
+ &:first-child {
69
+ margin-top: 8px;
70
+ }
71
+
72
+ &:hover {
73
+ background: rgba(255, 255, 255, 0.08) !important;
74
+ color: #fff !important;
75
+ }
76
+
77
+ &.ant-menu-item-selected {
78
+ background: linear-gradient(90deg, #1890ff 0%, #096dd9 100%) !important;
79
+ color: #fff !important;
80
+ box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
81
+
82
+ &::after {
83
+ display: none;
84
+ }
85
+ }
86
+ }
87
+
88
+ .ant-menu-submenu {
89
+ .ant-menu-submenu-title {
90
+ height: 48px;
91
+ line-height: 48px;
92
+ padding-left: 24px !important;
93
+ margin: 0 0 4px 0;
94
+
95
+ &:hover {
96
+ background: rgba(255, 255, 255, 0.08) !important;
97
+ color: #fff !important;
98
+ }
99
+ }
100
+
101
+ &.ant-menu-submenu-selected > .ant-menu-submenu-title {
102
+ color: #1890ff !important;
103
+ }
104
+
105
+ .ant-menu-sub {
106
+ background: rgba(0, 0, 0, 0.2) !important;
107
+
108
+ .ant-menu-item {
109
+ height: 44px;
110
+ line-height: 44px;
111
+ padding-left: 48px !important;
112
+
113
+ &:hover {
114
+ background: rgba(255, 255, 255, 0.05) !important;
115
+ }
116
+
117
+ &.ant-menu-item-selected {
118
+ background: rgba(24, 144, 255, 0.15) !important;
119
+ color: #1890ff !important;
120
+ box-shadow: none;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ &.collapsed {
128
+ width: 80px;
129
+
130
+ .ant-menu-inline-collapsed {
131
+ width: 80px;
132
+ }
133
+
134
+ .sidebar-logo {
135
+ padding: 12px;
136
+ }
137
+
138
+ .ant-menu-item {
139
+ padding-left: 0 !important;
140
+ text-align: center;
141
+ }
142
+ }
143
+ }
144
+
145
+ .layout-right {
146
+ flex: 1;
147
+ display: flex;
148
+ flex-direction: column;
149
+ overflow: hidden;
150
+ min-width: 0;
151
+
152
+ .navbar-container {
153
+ height: 64px;
154
+ background: #fff;
155
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
156
+ display: flex;
157
+ align-items: center;
158
+ justify-content: space-between;
159
+ padding: 0 24px;
160
+ z-index: 9;
161
+ flex-shrink: 0;
162
+
163
+ .navbar-left {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 16px;
167
+
168
+ .hamburger-btn {
169
+ width: 40px;
170
+ height: 40px;
171
+ border: none;
172
+ background: transparent;
173
+ cursor: pointer;
174
+ display: flex;
175
+ align-items: center;
176
+ justify-content: center;
177
+ border-radius: 8px;
178
+ font-size: 18px;
179
+ color: rgba(0, 0, 0, 0.65);
180
+ transition: all 0.3s;
181
+
182
+ &:hover {
183
+ background: rgba(24, 144, 255, 0.08);
184
+ color: #1890ff;
185
+ }
186
+ }
187
+ }
188
+
189
+ .navbar-right {
190
+ .user-info {
191
+ cursor: pointer;
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 8px;
195
+ padding: 8px 12px;
196
+ border-radius: 8px;
197
+ transition: all 0.3s;
198
+
199
+ &:hover {
200
+ background: rgba(0, 0, 0, 0.04);
201
+ }
202
+
203
+ .user-avatar {
204
+ background: linear-gradient(135deg, #1890ff 0%, #096dd9 100%);
205
+ }
206
+
207
+ .username {
208
+ color: rgba(0, 0, 0, 0.85);
209
+ font-size: 14px;
210
+ font-weight: 500;
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ .main-content {
217
+ flex: 1;
218
+ display: flex;
219
+ flex-direction: column;
220
+ overflow: hidden;
221
+ background: #f0f2f5;
222
+
223
+ .tab-bar-container {
224
+ background: #fff;
225
+ display: flex;
226
+ align-items: center;
227
+ border-bottom: 1px solid #e8e8e8;
228
+ padding: 0 16px;
229
+ height: 44px;
230
+ flex-shrink: 0;
231
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
232
+
233
+ .tab-bar-scroll {
234
+ flex: 1;
235
+ overflow-x: auto;
236
+ overflow-y: hidden;
237
+ white-space: nowrap;
238
+ display: flex;
239
+ align-items: center;
240
+ gap: 8px;
241
+ scrollbar-width: thin;
242
+
243
+ &::-webkit-scrollbar {
244
+ height: 4px;
245
+ }
246
+
247
+ &::-webkit-scrollbar-thumb {
248
+ background: rgba(0, 0, 0, 0.15);
249
+ border-radius: 2px;
250
+ }
251
+
252
+ .tab-item {
253
+ display: inline-flex;
254
+ align-items: center;
255
+ gap: 8px;
256
+ padding: 8px 16px;
257
+ cursor: pointer;
258
+ border-radius: 4px 4px 0 0;
259
+ position: relative;
260
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
261
+ user-select: none;
262
+ height: 36px;
263
+ font-size: 13px;
264
+ color: rgba(0, 0, 0, 0.65);
265
+ background: transparent;
266
+ border: 1px solid transparent;
267
+ border-bottom: none;
268
+ margin-bottom: -1px;
269
+
270
+ .tab-icon {
271
+ display: flex;
272
+ align-items: center;
273
+ font-size: 14px;
274
+ }
275
+
276
+ .tab-label {
277
+ max-width: 120px;
278
+ overflow: hidden;
279
+ text-overflow: ellipsis;
280
+ white-space: nowrap;
281
+ }
282
+
283
+ .tab-close-btn {
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: center;
287
+ width: 16px;
288
+ height: 16px;
289
+ border-radius: 50%;
290
+ opacity: 0;
291
+ transition: all 0.2s;
292
+ margin-left: 4px;
293
+
294
+ &.visible {
295
+ opacity: 1;
296
+ }
297
+
298
+ &:hover {
299
+ background: rgba(0, 0, 0, 0.15);
300
+ color: #fff;
301
+ }
302
+ }
303
+
304
+ &:hover {
305
+ color: #1890ff;
306
+ background: rgba(24, 144, 255, 0.06);
307
+
308
+ .tab-close-btn {
309
+ opacity: 1;
310
+ }
311
+ }
312
+
313
+ &.active {
314
+ color: #1890ff;
315
+ background: #fff;
316
+ border-color: #e8e8e8;
317
+ font-weight: 500;
318
+
319
+ .tab-close-btn {
320
+ opacity: 1;
321
+ }
322
+
323
+ &::after {
324
+ content: '';
325
+ position: absolute;
326
+ bottom: -1px;
327
+ left: 0;
328
+ right: 0;
329
+ height: 2px;
330
+ background: linear-gradient(90deg, #1890ff 0%, #096dd9 100%);
331
+ }
332
+ }
333
+ }
334
+ }
335
+
336
+ .tab-actions {
337
+ margin-left: 8px;
338
+ padding-left: 12px;
339
+ border-left: 1px solid #e8e8e8;
340
+
341
+ .close-all-btn {
342
+ width: 32px;
343
+ height: 32px;
344
+ border: none;
345
+ background: transparent;
346
+ cursor: pointer;
347
+ display: flex;
348
+ align-items: center;
349
+ justify-content: center;
350
+ border-radius: 8px;
351
+ color: rgba(0, 0, 0, 0.45);
352
+ transition: all 0.2s;
353
+
354
+ &:hover {
355
+ background: rgba(255, 77, 79, 0.08);
356
+ color: #ff4d4f;
357
+ }
358
+ }
359
+ }
360
+ }
361
+
362
+ .content-wrapper {
363
+ flex: 1;
364
+ overflow: auto;
365
+ background: #f0f2f5;
366
+ padding: 24px;
367
+
368
+ .page-container {
369
+ min-height: 100%;
370
+ background: #fff;
371
+ border-radius: 8px;
372
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
373
+ animation: fadeIn 0.3s ease-in-out;
374
+ }
375
+ }
376
+ }
377
+ }
378
+
379
+ .mobile-overlay {
380
+ display: none;
381
+ }
382
+
383
+ &.is-collapse {
384
+ .sidebar-container {
385
+ width: 80px;
386
+ }
387
+ }
388
+ }
389
+
390
+ @keyframes fadeIn {
391
+ from {
392
+ opacity: 0;
393
+ transform: translateY(10px);
394
+ }
395
+ to {
396
+ opacity: 1;
397
+ transform: translateY(0);
398
+ }
399
+ }
400
+
401
+ @media (max-width: 768px) {
402
+ .admin-layout {
403
+ .sidebar-container {
404
+ position: fixed;
405
+ left: 0;
406
+ top: 0;
407
+ z-index: 1000;
408
+ transform: translateX(-100%);
409
+ transition: transform 0.3s;
410
+
411
+ &.collapsed {
412
+ transform: translateX(-100%);
413
+ width: 256px;
414
+ }
415
+ }
416
+
417
+ .mobile-overlay {
418
+ display: block;
419
+ position: fixed;
420
+ top: 0;
421
+ left: 0;
422
+ right: 0;
423
+ bottom: 0;
424
+ background: rgba(0, 0, 0, 0.45);
425
+ z-index: 999;
426
+ opacity: 0;
427
+ visibility: hidden;
428
+ transition: all 0.3s;
429
+
430
+ &.visible {
431
+ opacity: 1;
432
+ visibility: visible;
433
+ }
434
+ }
435
+
436
+ &:not(.is-collapse) {
437
+ .sidebar-container {
438
+ transform: translateX(0);
439
+ }
440
+
441
+ .mobile-overlay.visible {
442
+ opacity: 1;
443
+ visibility: visible;
444
+ }
445
+ }
446
+ }
447
+ }